RubyX compiles ruby to binary (in ruby), hoping to be that X times faster
Go to file
2016-12-09 13:38:07 +02:00
lib refactor if_statement 2016-12-09 13:38:07 +02:00
stash gets rid of soml-parser completely 2016-12-08 20:13:08 +02:00
test gets rid of soml-parser completely 2016-12-08 20:13:08 +02:00
.codeclimate.yml add codeclimate config (with reek,not robocop) 2016-12-08 13:58:38 +02:00
.gitignore small c programs to bench against 2015-11-20 19:12:13 +02:00
.travis.yml restrict travis to my working version to avoid travis only fails 2016-12-08 13:15:48 +02:00
CNAME sorted out the domain 2015-05-03 20:33:54 +03:00
CodeStyle.md fix docs for rename 2016-02-25 12:03:11 -08:00
FEATURES.md moved to consitent md ending 2014-08-28 18:52:55 +03:00
Gemfile gets rid of soml-parser completely 2016-12-08 20:13:08 +02:00
Gemfile.lock gets rid of soml-parser completely 2016-12-08 20:13:08 +02:00
Guardfile update gems and fix tests 2016-12-06 12:08:18 +02:00
LICENSE.txt jeweler generates its things 2014-04-14 15:58:59 +03:00
Rakefile update version 2015-10-07 15:22:10 +03:00
README.md update readme 2015-11-30 20:25:17 +02:00
salama.gemspec add parser and basic test framework 2015-12-01 11:55:33 +02:00
ToDo.md improve reinit of interpreter 2015-11-10 19:28:31 +02:00

Build Status Gem Version Code Climate Test Coverage

Salama

Salama is about native code generation in and of ruby.

It is probably best to read the The Book first.

The current third rewrite adds a system language, with the idea of compiling ruby to that language, Soml. The original ruby parser has been remodeled to parse Soml and later we will use whitequarks parser to parse ruby. Then it will be ruby --> Soml --> assembler --> binary .

Done

Some things that are finished, look below for current status / work

Soml

A working of the system language is done. It is strongly typed, but leans more towards ruby style syntax.

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 of support is needed to get the system up, and that is Parfait

Interpreter

After doing some debugging on the generated binaries i opted to write an interpreter for the register layer. That way test runs on the interpreter reveal most issues.

Debugger

And after the interpreter was done, i wrote a visual debugger. It is a simple opal application that nevertheless has proven great help both in figuring out what is going on, and in finding bugs.

Status

Having finished Soml, it's time to compile ruby to it.

This will mean more work on the type front.

Stary sky

Iterate:

  1. more cpus (ie intel)
  2. more systems (ie mac)
  3. more syscalls, there are after all some hundreds
  4. A lot of modern cpu's functionality has to be mapped to ruby and implemented in assembler to be useful
  5. Different sized machines, with different register types ?
  6. on 64bit, there would be 8 bits for types and thus allow for rational, complex, and whatnot
  7. Housekeeping (the superset of gc) is abundant
  8. Any amount of time could be spent on a decent digital tree (see judy). Or possibly Dr.Cliffs hash.
  9. Also better string/arrays would be good.
  10. The minor point of threads and hopefully lock free primitives to deal with that.
  11. Other languages, python at least, maybe others
  12. translation of the vm instructions to another vm, say js

And generally optimize and work towards that perfect world (we never seem to be able to attain).

Contributing to salama

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/5 Torsten Ruger. See LICENSE.txt for further details.