lsansonetti at apple.com
Sat Mar 28 12:37:37 PDT 2009
As some of you already noticed we have been working on a branch for a
few weeks and I thought it's now time to describe what has been done
and were we are going exactly.
I wrote a blog entry here: http://www.macruby.org/blog/2009/03/28/experimental-branch.html
2 big features in this branch: a LLVM-based JIT compiler and a new IO
subsystem. Obviously performance-related, we really need to be faster.
Current status of the branch:
- The compiler is now able to pass most of the Ruby AST. It compiles
nodes directly from the parser in a lazy fashion.
- Only JIT compilation for the moment (AOT is planned for later).
- The VM is still under development, it's not as complete as the
- Early performance benchmarks are very promising.
- By the time of this writing, we pass the vast majority of the
language RubySpecs (a week ago we weren't even able to even bootstrap
mspec!), about 1190 expectations. Work is very active in this area, we
are also making sure the specs do run with the original Ruby 1.9 and
writing missing specs.
- The new IO subsystem is mostly functional, but there are still many
methods that are not implemented yet and we are working on this. Once
it will be complete we will integrate a default runloop in the VM and
expose asynchronous IOs.
For the near future, the goals are:
- Improving the compiler. Currently compile time has not really been
- Be able to run IRB. We are almost there.
- Remove the libffi code used to call C/ObjC implementations and
instead JIT compile stubs and insert them in the dispatcher cache. We
should be way closer to ObjC then (and maybe faster once we enable
secondary compilations of hotspots and inline the stubs).
- Rewrite the BridgeSupport side using LLVM types.
- Implement full concurrent threading! (this is a big one :-)).
- And many more (check the TODO file for more info).
Once we arrive at a point when the branch is as functional as trunk,
it will be merged in trunk and we will then work on stabilizing it, to
later on release it as 0.5. The schedule for this release is unknown,
it will be released when it will be ready (preferably this year though).
If you want to help let me know!
More information about the MacRuby-devel