rubyx/README.md

87 lines
3.0 KiB
Markdown
Raw Normal View History

2017-08-29 17:38:51 +02:00
[![Build Status](https://travis-ci.org/ruby-x/rubyx.svg?branch=master)](https://travis-ci.org/ruby-x/rubyx)
[![Code Climate](https://codeclimate.com/github/ruby-x/rubyx/badges/gpa.svg)](https://codeclimate.com/github/ruby-x/rubyx)
[![Test Coverage](https://codeclimate.com/github/ruby-x/rubyx/badges/coverage.svg)](https://codeclimate.com/github/ruby-x/rubyx)
2014-05-30 13:49:34 +02:00
2017-01-01 23:29:20 +01:00
# RubyX
2014-04-14 14:51:44 +02:00
RubyX is about native code generation in and of ruby.
X can be read as 10 times faster, or a decade away, depending on mindset.
2014-04-14 15:46:17 +02:00
2016-12-11 11:55:03 +01:00
The current (fourth) rewrite adds a typed intermediate representation layer (bit like c,
but not as a language). The idea is to compile ruby to that typed representation.
2015-03-15 12:58:17 +01:00
We use whitequarks parser to parse ruby.
Processing is roughly: Ruby --> Vm --> Risc --> Arm --> binary .
2015-03-15 12:58:17 +01:00
## Done
2015-11-30 19:25:17 +01:00
Some things that are finished, look below for current status / work
2016-12-11 11:55:03 +01:00
### Typed representation
2015-11-30 19:25:17 +01:00
The fully typed syntax representation and compiler to the Risc level is done.
2016-12-11 11:55:03 +01:00
It is remodeled after last years system language, which proved the concept and
surprised with speed.
2015-11-30 19:25:17 +01:00
Completely object oriented, including calling convention. Not much slower than c.
### A runtime: Parfait
In a dynamic system the distinction between compile-time and run-time is blurs. But a minimum
2017-01-01 23:29:20 +01:00
of support is needed to get the system up, and that is [Parfait](http://ruby-x.org/soml/parfait.html)
2015-10-07 10:32:48 +02:00
### Interpreter
After doing some debugging on the generated binaries i opted to write an interpreter for the
risc layer. That way test runs on the interpreter reveal most issues.
2015-10-07 10:32:48 +02:00
### Debugger
2017-08-29 17:38:51 +02:00
And after the interpreter was done, i wrote a [visual debugger](https://github.com/ruby-x/rubyx-debugger).
2015-10-07 10:32:48 +02:00
It is a simple opal application that nevertheless has proven great help both in figuring out
what is going on, and in finding bugs.
2015-10-07 10:32:48 +02:00
## Status
2016-12-11 11:55:03 +01:00
Most work on the statically typed layer should be done (and produces working binaries!).
2014-04-16 11:45:36 +02:00
2016-12-11 11:55:03 +01:00
Next up: compiling ruby and typing it :-)
2014-05-27 18:19:55 +02:00
2015-03-15 12:58:17 +01:00
### Stary sky
2014-05-30 13:49:34 +02:00
2015-03-15 12:58:17 +01:00
Iterate:
2014-05-30 13:49:34 +02:00
1. more cpus (ie intel)
2. more systems (ie mac)
3. more syscalls, there are after all some hundreds
5. A lot of modern cpu's functionality has to be mapped to ruby and implemented in assembler to be useful
6. Different sized machines, with different register types ?
7. on 64bit, there would be 8 bits for types and thus allow for rational, complex, and whatnot
8. Housekeeping (the superset of gc) is abundant
2014-09-19 18:39:08 +02:00
9. Any amount of time could be spent on a decent digital tree (see judy). Or possibly Dr.Cliffs hash.
10. Also better string/arrays would be good.
11. The minor point of threads and hopefully lock free primitives to deal with that.
12. Other languages, python at least, maybe others
13. translation of the vm instructions to another vm, say js
2014-05-30 13:49:34 +02:00
And generally optimize and work towards that perfect world (we never seem to be able to attain).
2014-04-16 11:45:36 +02:00
2014-04-14 15:46:17 +02:00
2017-08-29 17:38:51 +02:00
Contributing to rubyx
2014-04-14 15:46:17 +02:00
-----------------------
2014-04-27 21:19:32 +02:00
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.
2014-04-14 15:46:17 +02:00
== Copyright
2015-11-30 19:25:17 +01:00
Copyright (c) 2014/5 Torsten Ruger.
See LICENSE.txt for further details.