A completely object oriented machine

A fully self describing object system without external dependencies capable of executing dynamic object oriented languages like ruby or python.


The goal is to execute object oriented code without external dependencies, on modern hardware.

It must be possible to compile higher level, dynamic, object oriented languages into a typed intermediate representation, in a similar way that c++ is compiled into c (at least used to be). So ruby compiles to soml which compiles to assembler which compiles to binaries. No interpretation.

Using the compilation method on it's own runtime (and bootstraping with an exising vm), it is possible to write the whole system in a dynamic oo language (ruby), thus removing the two language problem (having to choose between nice and fast)


A first version of the lower level intermediate representation is now done. Currently there is staticaly typed layer is called SOML (salama object machine layers), which has roughly c-ish semantics, and introduces several new concept:

An abstract risc like register level defines some abstraction from the actual hardware. The soml compiler compiles to this level, but a mapping to Arm is provided to produce working binaries.

There is also an interpreter (mostly for testing) and a basic visual debugger which not only helps debugging, but also understanding of the machine.


The short introduction is under the architecture menu.

The section on SOML gives an overview of the system layer.

The full documentation is in form of a gitbook and can be viewed here.

The about section has some info of when and how this started. If you feel like contributing read this or write a mail .


Last but not least, i try to get recent developments down on paper when they are still fresh.

26.07.16: The Road Ahead

07.03.16: Mixup Of Levels

28.11.15: One Compiler Down One To Go