At the time being, there is only one implementation of the Omega system. It runs on Macintosh computers with at least System 6.0.2 and requires about 2MB of memory. The programming environment and the compiler are implemented in Think Pascal [Symantec 1991]. Only some parts of the run-time system (in particular, the memory manager) are implemented in 68000 assembly language. The whole implementation currently consists of about 33000 lines of code. The implementation is modular, as shown in Figure 4.
Figure 4: Architecture of the Omega System
As Omega is a prototype-based language, "living objects" play a central role. In contrast to conventional languages, objects (in particular, prototypes) must already exist when execution of an Omega program starts. For the same reason, the symbol table must be persistent. The memory manager is responsible for keeping track of all existing objects and for maintaining the consistency between the objects, their methods and the corresponding information in the symbol table. The symbol table manager provides routines for creation, deletion and redefinition of types, variables and methods. The compiler uses both the memory manager and the symbol table manager to generate code for the objects' methods. All interactive manipulation of the workspace is performed via workspace tools, a collection of classes that provide operations on specific views (such as the prototype hierarchy) of the workspace. Finally, the programming environment (which is based on a framework for interactive applications) glues the parts of the Omega system together.