upate readme
This commit is contained in:
parent
700744e6d5
commit
776050fa70
39
README.md
39
README.md
@ -22,8 +22,9 @@ on blocks currently, see below.
|
|||||||
|
|
||||||
### Ruby
|
### Ruby
|
||||||
|
|
||||||
Ruby is input layer, we use whitequarks parser to parse ruby and transform it to
|
Ruby is input layer, we use whitequarks parser to parse ruby. The untyped ast is then
|
||||||
Vool.
|
transformed into a typed version. The classes and fields follow the ast output pretty
|
||||||
|
much one to one. The we transform to Vool, removing much of ruby's "fluff".
|
||||||
|
|
||||||
### Vool
|
### Vool
|
||||||
|
|
||||||
@ -33,8 +34,6 @@ it has semantics, and those are substantially simpler than ruby.
|
|||||||
Vool is Ruby without the fluff. No unless, no reverse if/while, no splats. Just simple
|
Vool is Ruby without the fluff. No unless, no reverse if/while, no splats. Just simple
|
||||||
oo. (Without this level the step down to the next layer was just too big)
|
oo. (Without this level the step down to the next layer was just too big)
|
||||||
|
|
||||||
Also Vool has a typed syntax tree, unlike the AST from the parser gem. This is easier when writing conversion code: the code goes with the specific class
|
|
||||||
(more oo than the visitor pattern, imho)
|
|
||||||
|
|
||||||
### Mom
|
### Mom
|
||||||
|
|
||||||
@ -51,7 +50,8 @@ is much smaller (easier to understand) and the mapping down to risc is quite str
|
|||||||
### Risc
|
### Risc
|
||||||
|
|
||||||
The risc cpu architecture approach was a simplification of the cpu instruction set to a
|
The risc cpu architecture approach was a simplification of the cpu instruction set to a
|
||||||
minimum. Arm, our main target is a risc architecture, and the next level down.
|
minimum. Arm, our main target, is a risc architecture, and much like Vool uncrinkles
|
||||||
|
Ruby, the Risc layer simplifies ARM.
|
||||||
|
|
||||||
The Risc layer here abstracts the Arm in a minimal and independent way. It does not model
|
The Risc layer here abstracts the Arm in a minimal and independent way. It does not model
|
||||||
any real RISC cpu instruction set, but rather implements what is needed for rubyx.
|
any real RISC cpu instruction set, but rather implements what is needed for rubyx.
|
||||||
@ -60,7 +60,7 @@ Instructions are derived from a base class, so the instruction set is extensible
|
|||||||
way additional functionality may be added by external code.
|
way additional functionality may be added by external code.
|
||||||
|
|
||||||
Risc knows memory and has a small set of registers. It allows memory to register transfer
|
Risc knows memory and has a small set of registers. It allows memory to register transfer
|
||||||
and back and inter register transfer. But has no memory to memory transfer like Mom.
|
and back, and inter register transfer. But has no memory to memory transfer like Mom.
|
||||||
|
|
||||||
### Arm
|
### Arm
|
||||||
|
|
||||||
@ -93,8 +93,9 @@ integer addition, or a instance variable access. These methods exists in any com
|
|||||||
and are called builtin here.
|
and are called builtin here.
|
||||||
|
|
||||||
Builtin methods are coded at the risc level with a dsl. Even though basically assembler,
|
Builtin methods are coded at the risc level with a dsl. Even though basically assembler,
|
||||||
they are through the ruby magic quite readable
|
they are
|
||||||
([see init](https://github.com/ruby-x/rubyx/blob/2f07cc34f3f56c72d05c7d822f40fa6c15fd6a08/lib/risc/builtin/object.rb#L48))
|
([quite readable](https://github.com/ruby-x/rubyx/blob/2f07cc34f3f56c72d05c7d822f40fa6c15fd6a08/lib/risc/builtin/object.rb#L48))
|
||||||
|
through the ruby magic.
|
||||||
|
|
||||||
## Types and classes, static vs dynamic
|
## Types and classes, static vs dynamic
|
||||||
|
|
||||||
@ -152,6 +153,15 @@ Specifically here is a list of what works:
|
|||||||
Current work is on implicit blocks, which are surprisingly like static method calls
|
Current work is on implicit blocks, which are surprisingly like static method calls
|
||||||
and lambdas like dynamic dispatch.
|
and lambdas like dynamic dispatch.
|
||||||
|
|
||||||
|
## Contributing to rubyx
|
||||||
|
|
||||||
|
Probably best to talk to me, if it's not a typo or so.
|
||||||
|
|
||||||
|
There is a todo, for inspiration, though actual tasks that result in pulls, should start
|
||||||
|
their live as a github issue. There we can discuss details so that no work is done
|
||||||
|
in vain. There are some small issues there already, just comment if you're interested.
|
||||||
|
|
||||||
|
Fork and create a branch before sending pulls.
|
||||||
|
|
||||||
### Stary sky
|
### Stary sky
|
||||||
|
|
||||||
@ -168,21 +178,10 @@ Iterate:
|
|||||||
10. Also better string/arrays would be good.
|
10. Also better string/arrays would be good.
|
||||||
11. The minor point of threads and hopefully lock free primitives to deal with that.
|
11. The minor point of threads and hopefully lock free primitives to deal with that.
|
||||||
12. Other languages, python at least, maybe others
|
12. Other languages, python at least, maybe others
|
||||||
13. translation of the vm instructions to another vm, say js
|
|
||||||
|
|
||||||
And generally optimise and work towards that perfect world (we never seem to be able to attain).
|
And generally optimise and work towards that perfect world (we never seem to be able to attain).
|
||||||
|
|
||||||
|
## Copyright
|
||||||
|
|
||||||
## Contributing to rubyx
|
|
||||||
|
|
||||||
Probably best to talk to me, if it's not a typo or so.
|
|
||||||
|
|
||||||
I do have a todo, for the adventurous.
|
|
||||||
|
|
||||||
Fork and create a branch before sending pulls.
|
|
||||||
|
|
||||||
== Copyright
|
|
||||||
|
|
||||||
Copyright (c) 2014-8 Torsten Ruger.
|
Copyright (c) 2014-8 Torsten Ruger.
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user