[MacRuby-devel] branches/experimental

Laurent Sansonetti lsansonetti at apple.com
Sat Mar 28 12:37:37 PDT 2009

Hi guys,

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  
compiler yet.
- 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  
optimized yet.
- 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 mailing list