SPIN and its extensions are written in Modula-3. An extension is a
collection of Modula-3 interfaces and modules that provide definitions
and implementations of types, procedures, and variables. A Modula-3
program is required to maintain a number of consistency conditions:
- all interfaces are exported by a module,
- all procedures defined in an interface are implemented in a module,
- all opaque types are fully revealed in a module,
- all opaque types' partial revelations are consistent,
- there is only one full revelation of a type,
- there is only one implementation of each defined procedure.
A SPIN kernel is conceptually a single Modula-3 program and as such it
has to maintain all of the above conditions. When an extension is
dynamically loaded into the system, Modula-3 runtime has to be
notified about it to verify that type and interface information is
correct and consistent and to update its state to reflect addition of
the new code. This notification is done during loading the extension.
Przemek Pardyak,
May 20th, 1996