ruby-x.github.io/index.html

89 lines
3.4 KiB
HTML
Raw Normal View History

2015-08-08 21:03:37 +02:00
---
layout: site
---
<div class="row vspace10">
<div class="span12">
<h2 class="center">A completely object oriented virtual machine</h2>
<div>
<p class="center"><span>
Leaving the old (c) world behind to go where no machine has gone before (or something like that)
</span></p>
</div>
</div>
</div>
<div class="row vspace20">
<div class="span4">
<h2 class="center">Architecture</h2>
<p>
Salama is maybe the first successful attempt at writing a virtual machine without the use
of c or c tools.
It defines and implements an object virtual machine completely in object oriented terms,
using ruby to bootstrap itself.
</p>
<p>
Just some of the features, most of which would not be possible in c:
<ul>
<li> Linked-List, not stack, based </li>
<li> Multiple return addresses based on type </li>
<li> Multiple implementations per function based on type </li>
<li> Implicit type tracking using adaptive code</li>
<li> Explicit <a href="/2015/06/20/the-static-call-chain.html">message and frame objects</a></li>
<li> <a href="http://book.salama-vm.org/register/machine.html">Register machine abstraction</a></li>
2015-08-08 21:56:12 +02:00
<li> <a href="http://book.salama-vm.org/object/instructions.html">Extensible</a> instruction set</li>
2015-08-08 21:03:37 +02:00
</ul>
2015-11-13 19:30:37 +01:00
Salama defines is's own machine language (soml) to bridge the gap between the higher language
(ruby) and assembler. Both soml and assembler can be seens as layers towards the final
2015-10-07 14:48:32 +02:00
binary executables</li>
2015-08-08 21:03:37 +02:00
</p>
</div>
<div class="span4">
<h2 class="center">Status</h2>
<p>
While the project is just getting on two years, it is starting to settle conceptually,
progress smoothly, and produce <b>working binaries</b>.
</p>
<p>
In numbers, there are over <b>1000 commits</b>, 6 sub-projects, more than 10k lines of code
and well over 600 tests.
</p>
<p>
Maybe more importantly there is <a href"/book.html">good documentation</a> along with an
evolved idea of how most of the difficult issues are solved. So while the executables are
still of the "Hello world" quality, there are no coneptual problems anymore.
</p>
<p>
There is also an interpreter (mostly for testing) and a basic
<a href="https://github.com/salama/salama-debugger"> visual debugger</a> which not only helps
debugging, but also understanding of the machine.
</p>
</div>
<div class="span4">
<h2 class="center">Docs</h2>
<p>
The short introduction is under the <a href="/salama/layers.html">architecture</a> menu.
</p>
<p>
The full documentation is in form of a gitbook and can be <a href="/book.html">viewed</a> ,
and <a href="https://github.com/salama/object-machine">edited</a>
</p>
<p>
The <a href="/project/motivation.html">about</a> section has some info of when and how this
2015-08-08 21:56:12 +02:00
started. If you feel like contributing <a href="/contribute.html">read this</a> or write a
<a href="https://groups.google.com/forum/#!forum/salama-dev"> mail </a>.
2015-08-08 21:03:37 +02:00
</p>
<p>
Last but not least, i try to get recent developments down on paper when they are still
2015-08-08 21:56:12 +02:00
fresh, which you can read in the <a href="{{ site.posts.first.url }}">news</a> section.
2015-08-08 21:03:37 +02:00
</p>
<p>
2015-08-08 21:58:34 +02:00
{{ site.posts.first.date | date: "%d.%m.%y" }}:
<a href="{{ site.posts.first.url }}">{{ site.posts.first.title }} </a>
2015-08-08 21:03:37 +02:00
</p>
</div>
</div>