--- layout: site ---

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.

Goal

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

No external dependencies means a system that defines an object oriented system language that compiles to assembler. A sort of object version of c, but without using c.

It must be possible to compile higher level, dynamic, object oriented languages into this language, 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.

Most of the system is defined in a higher level language (ruby) and only a small runtime, mostly the class sytsem and os acccess, needs to be written in the system language.

Status

A first version of the system language is now done.. The staticaly typed language is called SOML (salama object machine language), has a roughly ruby-ish syntax while c-ish semantics, and introduces several new concept:

An abstract risc like register level defines some abstraction from the actual hardware. The 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.

Docs

The short introduction is under the architecture menu.

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

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 .

News

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

{{ site.posts[0].date | date: "%d.%m.%y" }}: {{ site.posts[0].title }}

{{ site.posts[1].date | date: "%d.%m.%y" }}: {{ site.posts[1].title }}

{{ site.posts[2].date | date: "%d.%m.%y" }}: {{ site.posts[2].title }}