HYDROGEN

HYDROGEN is not a part of the ARGON abstract specification - it's actually an implementation component. No ARGON user code will depend upon HYDROGEN, but the implementation of certain parts of ARGON itself will.

HYDROGEN is a hardware abstraction layer; the core abstraction of the underlying node, from which my first ARGON implementation will build. The node resources HYDROGEN must provide a portable interface to are:

Particular devices that would be commonly found on the devices list are:

As well as the above, which are used by the ARGON core, would be any other devices on the machine - scanners, graphics terminals, etc. These are made accessible via the node entity through MERCURY adaption interfaces for each driver type.

The code of the ARGON core is to be written in terms of the HYDROGEN code generation primitives, so wherever HYDROGEN is ported, ARGON will be able to run.

HYDROGEN can be implemented highly portably as a bytecode interpreter written on top of POSIX; a number of POSIX threads could be initiated to act as the 'processors', and POSIX mutexes used for the locking facility. Also, for specific target architectures, versions that compile to native code can be produced.

An implementation of HYDROGEN on top of POSIX would be called argond.

STATUS

HYDROGEN is being implemented as a portable bytecode interpreter on top of POSIX as we speak. A couple of prototypes have been made to run, and a new implementation is now being put together incorporating the results of those experiments!