About a year ago, I joined GemStone Systems to work on MagLev (an implementation of the Ruby language on the GemStone/S Virtual Machine). Back then, MagLev could run just enough Ruby to make a decent demo, but not much else. While the underlying VM was mature and stable, the Ruby implementation was a prototype with gaping holes. E.g., the parser was an MRI process running WEBrick that we sent ruby source via http, and got back a string of s-expressions. The (partial) IRB implementation was written in Smalltalk. We had no idea what the persistence API would look like. Etc.
We’ve come a long way in the past year. We’ve embedded Ryan Davis’ pure ruby parser, MagLev has gone from passing fewer than 5,000 RubySpecs to passing over 27,000. MagLev runs RubyGems, and we have several demos using the Rack and Sinatra gems. We run a (patched) version of the real IRB, we have implemented a substantial portion of the Rubinius /JRuby Foreign Function Interface, and we have most of the core libraries implemented. While there is still work to do, MagLev is beginning to feel like a real Ruby implementation.
In future posts, I plan on discussing some of the features unique to MagLev (native object persistence, distributed architecture, etc.), walk through some demo code and discuss whatever I think is interesting about MagLev, Ruby and related topics.