full speed into the name change
This commit is contained in:
parent
930d006417
commit
4893e243f5
@ -34,7 +34,7 @@ Off course Celluloid needs native threads, so you'll need to run rubinius or jru
|
|||||||
a fix for the problem, if we use celluloid.
|
a fix for the problem, if we use celluloid.
|
||||||
|
|
||||||
But it is a fix, it is not part of the system. The system has sequetial calls per thread and threads. Threads are evil as
|
But it is a fix, it is not part of the system. The system has sequetial calls per thread and threads. Threads are evil as
|
||||||
i explain (rant about?) [here](/salama/threads.html), mainly because of the shared global memory.
|
i explain (rant about?) [here](/rubyx/threads.html), mainly because of the shared global memory.
|
||||||
|
|
||||||
### Messaging with inboxes
|
### Messaging with inboxes
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
# [Salama webpages](http://salama-vm.org)
|
# [RubyX webpages](http://ruby-x.org)
|
||||||
|
|
||||||
|
|
||||||
Salamas webpage is done with github pages: https://help.github.com/categories/20/articles
|
RubyX's webpage is done with github pages: https://help.github.com/categories/20/articles
|
||||||
|
|
||||||
###Contribute
|
###Contribute
|
||||||
|
|
||||||
|
@ -13,10 +13,10 @@ layout: site
|
|||||||
<h3 class="center">More Detail</h2>
|
<h3 class="center">More Detail</h2>
|
||||||
<div>
|
<div>
|
||||||
<ul class="nav nav-list">
|
<ul class="nav nav-list">
|
||||||
<li><a href="/salama/layers.html"> Layers of Salama </a> </li>
|
<li><a href="/rubyx/layers.html"> Layers of RubyX </a> </li>
|
||||||
<li><a href="/salama/memory.html"> Memory </a> </li>
|
<li><a href="/rubyx/memory.html"> Memory </a> </li>
|
||||||
<li><a href="/salama/threads.html"> Threads </a> </li>
|
<li><a href="/rubyx/threads.html"> Threads </a> </li>
|
||||||
<li><a href="/salama/optimisations.html"> Optimisation ideas </a> </li>
|
<li><a href="/rubyx/optimisations.html"> Optimisation ideas </a> </li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
@ -23,7 +23,7 @@
|
|||||||
<div class="navbar effect navbar-inverse navbar-fixed-top">
|
<div class="navbar effect navbar-inverse navbar-fixed-top">
|
||||||
<div class="navbar-inner">
|
<div class="navbar-inner">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<a href="https://github.com/salama/"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>
|
<a href="https://github.com/ruby-x/"><img style="position: absolute; top: 0; right: 0; border: 0;" src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png" alt="Fork me on GitHub"></a>
|
||||||
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse" href="#">
|
<a class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse" href="#">
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
<span class="icon-bar"></span>
|
<span class="icon-bar"></span>
|
||||||
@ -35,7 +35,7 @@
|
|||||||
<a href="/index.html">Home</a>
|
<a href="/index.html">Home</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="link4">
|
<li class="link4">
|
||||||
<a href="/salama/layers.html">Architecture</a>
|
<a href="/rubyx/layers.html">Architecture</a>
|
||||||
</li>
|
</li>
|
||||||
<li class="link6">
|
<li class="link6">
|
||||||
<a href="/typed/typed.html">Typed layer</a>
|
<a href="/typed/typed.html">Typed layer</a>
|
||||||
|
@ -22,7 +22,7 @@ little big. It took a little, but then i started.
|
|||||||
I fiddled a little with fancy 2 or even 3d representations but couldn't get things to work.
|
I fiddled a little with fancy 2 or even 3d representations but couldn't get things to work.
|
||||||
Also getting used to running ruby in the browser, with opal, took a while.
|
Also getting used to running ruby in the browser, with opal, took a while.
|
||||||
|
|
||||||
But now there is a [basic frame](https://github.com/salama/salama-debugger) up,
|
But now there is a [basic frame](https://github.com/ruby-x/salama-debugger) up,
|
||||||
and i can see registers swishing around and ideas of what needs
|
and i can see registers swishing around and ideas of what needs
|
||||||
to be visualized and partly even how, are gushing. Off course it's happening in html,
|
to be visualized and partly even how, are gushing. Off course it's happening in html,
|
||||||
but that ok for now.
|
but that ok for now.
|
||||||
|
@ -29,7 +29,7 @@ possible because a lot of the stuff was there already.
|
|||||||
- [Parfait](/typed/parfait.html) was pretty much there. Just consolidated it as it is all just adapter.
|
- [Parfait](/typed/parfait.html) was pretty much there. Just consolidated it as it is all just adapter.
|
||||||
- The [Register abstraction](/typed/debugger.html) (bottom) was there.
|
- The [Register abstraction](/typed/debugger.html) (bottom) was there.
|
||||||
- Using the ast library made things easier.
|
- Using the ast library made things easier.
|
||||||
- A lot of the [parser](https://github.com/salama/salama-reader) could be reused.
|
- A lot of the [parser](https://github.com/ruby-x/salama-reader) could be reused.
|
||||||
|
|
||||||
And off course the second time around everything is easier (aka hindsight is perfect).
|
And off course the second time around everything is easier (aka hindsight is perfect).
|
||||||
|
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
---
|
|
||||||
layout: site
|
|
||||||
---
|
|
||||||
|
|
||||||
<div style="position: absolute;top: 54px;bottom: 0px;width: 100%;">
|
|
||||||
<iframe frameborder="0" style="height: 100%;width: 100%;" src="http://dancinglightning.gitbooks.io/the-object-machine/content/"></iframe>
|
|
||||||
</div>
|
|
11
index.html
11
index.html
@ -48,14 +48,13 @@ layout: site
|
|||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The lower level, strongly typed layer is <a href="/typed/typed.html">finished.</a>.
|
The lower level, strongly typed layer is <a href="/typed/typed.html">finished</a>.
|
||||||
While it has well known typed language data semantics, it introduces several new concept:
|
While it has well known typed language data semantics, it introduces several new concept:
|
||||||
<ul>
|
<ul>
|
||||||
<li> Object based memory (no global memory) </li>
|
<li> Object based memory (no global memory) </li>
|
||||||
<li> Multiple return addresses based on type </li>
|
|
||||||
<li> Multiple implementations per function based on type </li>
|
<li> Multiple implementations per function based on type </li>
|
||||||
<li> Explicit <a href="/2015/06/20/the-static-call-chain.html">message and frame objects</a>(no stack)</li>
|
<li> Object oriented calling semantics (not stack based) </li>
|
||||||
<li> <a href="https://github.com/salama/salama/tree/master/lib/register" target="_blank">Register machine abstraction</a></li>
|
<li> <a href="https://github.com/ruby-x/ruby/tree/master/lib/register" target="_blank">Register machine abstraction</a></li>
|
||||||
<li> Extensible instruction set, with arm implementations
|
<li> Extensible instruction set, with arm implementations
|
||||||
</ul>
|
</ul>
|
||||||
</p>
|
</p>
|
||||||
@ -65,7 +64,7 @@ layout: site
|
|||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
There is also an interpreter (mostly for testing) and a basic
|
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
|
<a href="https://github.com/ruby-x/salama-debugger"> visual debugger</a> which not only helps
|
||||||
debugging, but also understanding of the machine.
|
debugging, but also understanding of the machine.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
@ -73,7 +72,7 @@ layout: site
|
|||||||
<div class="span4">
|
<div class="span4">
|
||||||
<h2 class="center">Docs</h2>
|
<h2 class="center">Docs</h2>
|
||||||
<p>
|
<p>
|
||||||
The short introduction is under the <a href="/salama/layers.html">architecture</a> menu.
|
The short introduction is under the <a href="/rubyx/layers.html">architecture</a> menu.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
The section on the intermediate rerepresentation is <a href="/typed/typed.html">here</a>.
|
The section on the intermediate rerepresentation is <a href="/typed/typed.html">here</a>.
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
layout: project
|
layout: project
|
||||||
title: Salama, where it started
|
title: RubyX, where it started
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="row vspace10">
|
<div class="row vspace10">
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
layout: project
|
layout: project
|
||||||
title: Ruby in Ruby
|
title: Ruby in Ruby
|
||||||
sub-title: Salama hopes make the the mysterious more accessible, shed light in the farthest (ruby) corners, and above all, <b>empower you</b>
|
sub-title: RubyX hopes make the the mysterious more accessible, shed light in the farthest (ruby) corners, and above all, <b>empower you</b>
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="row vspace20">
|
<div class="row vspace20">
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
layout: salama
|
layout: rubyx
|
||||||
title: Salama architectural layers
|
title: RubyX architectural layers
|
||||||
---
|
---
|
||||||
|
|
||||||
## Main Layers
|
## Main Layers
|
||||||
@ -17,7 +17,7 @@ to compile ruby.
|
|||||||
|
|
||||||
In a similar way to the c++ example, we need level between ruby and assembler, as it is too
|
In a similar way to the c++ example, we need level between ruby and assembler, as it is too
|
||||||
big a mental step from ruby to assembler. Off course course one could try to compile to c, but
|
big a mental step from ruby to assembler. Off course course one could try to compile to c, but
|
||||||
since c is not object oriented that would mean dealing with all off c's non oo heritance, like
|
since c is not object oriented that would mean dealing with all off c's non oo heritage, like
|
||||||
linking model, memory model, calling convention etc.
|
linking model, memory model, calling convention etc.
|
||||||
|
|
||||||
Top down the layers are:
|
Top down the layers are:
|
||||||
@ -107,11 +107,11 @@ In other words the instruction set is extensible (unlike cpu instruction sets).
|
|||||||
|
|
||||||
Basic object oriented concepts are needed already at this level, to be able to generate a whole
|
Basic object oriented concepts are needed already at this level, to be able to generate a whole
|
||||||
self contained system. Ie what an object is, a class, a method etc. This minimal runtime is called
|
self contained system. Ie what an object is, a class, a method etc. This minimal runtime is called
|
||||||
parfait, and the same objects willbe used at runtime and compile time.
|
parfait, and the same objects will be used at runtime and compile time.
|
||||||
|
|
||||||
Since working with at this low machine level (essentially assembler) is not easy to follow for
|
Since working with at this low machine level (essentially assembler) is not easy to follow for
|
||||||
everyone, an interpreter was created. Later a graphical interface, a kind of
|
everyone, an interpreter was created. Later a graphical interface, a kind of
|
||||||
[visual debugger](https://github.com/salama/salama-debugger) was added.
|
[visual debugger](https://github.com/ruby-x/rubyx-debugger) was added.
|
||||||
Visualizing the control flow and being able to see values updated immediately helped
|
Visualizing the control flow and being able to see values updated immediately helped
|
||||||
tremendously in creating this layer. And the interpreter helps in testing, ie keeping it
|
tremendously in creating this layer. And the interpreter helps in testing, ie keeping it
|
||||||
working in the face of developer change.
|
working in the face of developer change.
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
layout: salama
|
layout: rubyx
|
||||||
title: Types, memory layout and management
|
title: Types, memory layout and management
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -7,7 +7,7 @@ Memory management must be one of the main horrors of computing. That's why garba
|
|||||||
|
|
||||||
### Object and values
|
### Object and values
|
||||||
|
|
||||||
As has been mentioned, in a true OO system, object tagging is not really an option. Tagging being the technique of adding the lowest bit as marker to pointers and thus having to shift ints and loosing a bit. Mri does this for Integers but not other value types. We accept this and work with it and just say "off course" , but it's not modelled well.
|
As has been mentioned, in a true OO system, object tagging is not really an option. Tagging being the technique of adding the lowest bit as marker to pointers and thus having to shift ints and loosing a bit. Mri does this for Integers but not other value types. We accept this and work with it and just say "off course" , but it's not modeled well.
|
||||||
|
|
||||||
Integers are not Objects like "normal" objects. They are Values, on par with ObjectReferences, and have the following distinctive differences:
|
Integers are not Objects like "normal" objects. They are Values, on par with ObjectReferences, and have the following distinctive differences:
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
layout: salama
|
layout: rubyx
|
||||||
title: Optimisation ideas
|
title: Optimisation ideas
|
||||||
---
|
---
|
||||||
|
|
||||||
@ -82,4 +82,3 @@ to be passed).
|
|||||||
|
|
||||||
Negotiators could do some counting and do the recompiling when it seems worth it. The Negotiator would remove itself from
|
Negotiators could do some counting and do the recompiling when it seems worth it. The Negotiator would remove itself from
|
||||||
the chain and connect called and new receiver directly. How much is in this i couldn't say though.
|
the chain and connect called and new receiver directly. How much is in this i couldn't say though.
|
||||||
|
|
@ -1,5 +1,5 @@
|
|||||||
---
|
---
|
||||||
layout: salama
|
layout: rubyx
|
||||||
title: Threads are broken
|
title: Threads are broken
|
||||||
author: Torsten
|
author: Torsten
|
||||||
---
|
---
|
||||||
@ -69,11 +69,10 @@ In an oo system this can be enforced by strict pass-by-value over thread borders
|
|||||||
The itc (inter thread communication) objects are the only ones that need current thread synchronization techniques.
|
The itc (inter thread communication) objects are the only ones that need current thread synchronization techniques.
|
||||||
The one mechanism that could cover all needs could be a simple lists.
|
The one mechanism that could cover all needs could be a simple lists.
|
||||||
|
|
||||||
### Salama
|
### RubyX
|
||||||
|
|
||||||
The original problem of what a program does during a kernel call could be solved by a very small number of kernel threads.
|
The original problem of what a program does during a kernel call could be solved by a very small number of kernel threads.
|
||||||
Any kernel call would be listed and "c" threads would pick them up to execute them and return the result.
|
Any kernel call would be listed and "c" threads would pick them up to execute them and return the result.
|
||||||
|
|
||||||
All other threads could be managed as green threads. Threads may not share objects, other than a small number of system
|
All other threads could be managed as green threads. Threads may not share objects, other than a small number of system
|
||||||
provided.
|
provided.
|
||||||
|
|
@ -3,7 +3,7 @@ layout: typed
|
|||||||
title: Register Level Debugger / simulator
|
title: Register Level Debugger / simulator
|
||||||
---
|
---
|
||||||
|
|
||||||
![Debugger](https://raw.githubusercontent.com/salama/salama-debugger/master/static/debugger.png)
|
![Debugger](https://raw.githubusercontent.com/rubyx/salama-debugger/master/static/debugger.png)
|
||||||
|
|
||||||
## Views
|
## Views
|
||||||
|
|
||||||
@ -30,8 +30,8 @@ over a name to look at the class and it's instance variables (recursively)
|
|||||||
### Source View
|
### Source View
|
||||||
|
|
||||||
Next is a view of the Soml source. The Source is reconstructed from the ast as html.
|
Next is a view of the Soml source. The Source is reconstructed from the ast as html.
|
||||||
Soml (Salama object machine language) is is a statically typed language,
|
Soml (RubyX object machine language) is is a statically typed language,
|
||||||
maybe in spirit close to c++ (without the c). In the future Salama will compile ruby to soml.
|
maybe in spirit close to c++ (without the c). In the future RubyX will compile ruby to soml.
|
||||||
|
|
||||||
While stepping through the code, those parts of the code that are active get highlighted in blue.
|
While stepping through the code, those parts of the code that are active get highlighted in blue.
|
||||||
|
|
||||||
@ -43,7 +43,7 @@ Each step will show progress on the register level though (next view)
|
|||||||
|
|
||||||
### Register Instruction view
|
### Register Instruction view
|
||||||
|
|
||||||
Salama defines a register machine level which is quite close to the arm machine, but with more
|
RubyX defines a register machine level which is quite close to the arm machine, but with more
|
||||||
sensible names. It has 16 registers (below) and an instruction set that is useful for Soml.
|
sensible names. It has 16 registers (below) and an instruction set that is useful for Soml.
|
||||||
|
|
||||||
Data movement related instruction implement an indexed get and set. There is also Constant load and
|
Data movement related instruction implement an indexed get and set. There is also Constant load and
|
||||||
|
64
what_is.html
64
what_is.html
@ -1,64 +0,0 @@
|
|||||||
---
|
|
||||||
layout: site
|
|
||||||
title: Salama and Ruby, Ruby and Salama
|
|
||||||
---
|
|
||||||
|
|
||||||
<div class="content">
|
|
||||||
<div class="container theme">
|
|
||||||
|
|
||||||
<div class="row vspace30">
|
|
||||||
<div class="span2 center">
|
|
||||||
</div>
|
|
||||||
<div class="span4 center">
|
|
||||||
<h3><span>The three Rubies</span></h3>
|
|
||||||
</div>
|
|
||||||
<div class="span4 center">
|
|
||||||
<h3><span>and Salama</span></h3>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="row vspace10">
|
|
||||||
<div class="span4">
|
|
||||||
<h4>Syntax</h4>
|
|
||||||
<h5>and meaning</h5>
|
|
||||||
<blockquote><p> Pure OO, blocks, closures,clean syntax, simple but consistant, open classes<br/></p></blockquote>
|
|
||||||
<p> Just to name a few of the great features of the ruby syntax and it's programming model. <br/>
|
|
||||||
Syntax is an abstract thing, as far as i know there is no ebnf or similar definition of it.
|
|
||||||
Also as far as i know there is only the mri which is considered the only source of how ruby works. <br/>
|
|
||||||
With more vm's appearing this is changing and the mpsec is apparently catching up. <br/>
|
|
||||||
As we are just starting we focus on oo consistency and implement only essential features.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="span4">
|
|
||||||
<h4>Vm</h4>
|
|
||||||
<h5>Salama</h5>
|
|
||||||
<blockquote><p> The heart of the salama project is salama, the virtual machine <br /></p></blockquote>
|
|
||||||
<p>Salama is written in 100% ruby</p>
|
|
||||||
<p>Salama uses an existing ruby to bootstrap itself</p>
|
|
||||||
<p>Salama generates native code, and ( with 1+2) creates a native ruby virtual machine. </p>
|
|
||||||
<p>Salama does not interpret, it parses and compiles (just making sure that's clear)</p>
|
|
||||||
<p>Salama uses a statically typed value based core with rtti and oo syntax to achieve this
|
|
||||||
(think c++ with ruby syntax)</p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="span4">
|
|
||||||
<h4>Core Library </h4>
|
|
||||||
<h5>Parfait</h5>
|
|
||||||
<blockquote><p> Ruby has core and std lib, with a slightly unclear distinction.
|
|
||||||
Parfait is a minimalistic core library on which this could be built.
|
|
||||||
</p></blockquote>
|
|
||||||
<p>
|
|
||||||
Stdlib, as Libc , have grown over the decades to provide overlapping and sometimes inconsistant features, most
|
|
||||||
of which can and should be outside such a standard component.
|
|
||||||
</p>
|
|
||||||
<p> Salama considers only that core which can not be suplied though an external gem, this is called
|
|
||||||
Parfait. It only provides Array and String and an ability to access
|
|
||||||
the operating system, in 100% ruby.</p>
|
|
||||||
<p>Full ruby stdlib compliance is not an initial project goal, but may be achieved through external libraries</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
Loading…
Reference in New Issue
Block a user