Picking up where I left off regarding run-time sub-systems, there are a few more to mention. In a stripped-down version of BOOL, these sub-systems could be stubbed out, but proxy agents would still have to represent them. All the sub-systems discussed in these two articles are required to be present, but not all are required to be functional.
Obviously, non-functional sub-systems still accept Messages and respond appropriately, if only to signal their lack 0f function. No application can fail due to lack of a sub-system’s presence, but any application may be unable to continue due to lack of a specific resource.
This means applications must be aware of the potential for a sub-system to return a “no can do” response.
Other BOOL RTE sub-systems are:
Library (Lib): Acts as an active repository for code, providing various search capabilities.
Communications (Comm): Handles network and serial data in concert with the Data Center and I/O sub-system.
Math Module (MM): Provides optimized mathematics capabilities and functions.
Graphics (GFX): Provides optimized graphics functions and display access in concert with the Data Center and I/O sub-system. This module would also support graph and chart generation via a toolbox of drawing functions.
Database (DB): Proxy for any installed or loadable databases. Provides all the generic access methods used by applications. Uses plug-in adapters to interact with the database. Can work with Comm sub-system to access remote databases (using ODBC, for example).
A word about BOOL AddressSpace.
A BOOL Address has two parts: a local part and a global part. The local part identifies an object in the local Workspace. The global part identifies the Workspace itself and, by default, is comprised of the system’s physical GPS coordinates. (For multiple systems installed at the same location, the global part needs additional qualifiers.)
The intention is that BOOL AddressSpace is actually global and consists of all BOOL programs running anywhere. (Once we begin using BOOL … in space, we’ll have to modify how the global identifier world!)