Hello everyone,
I thought I'd talk about my new project here, since there is a good chance that someone might be interested in it. I'm planning to put Ruby on top of Smalltalk VMs. Ruby and Smalltalk are very similar under the covers, so Smalltalk VMs are a very good match for the language. This will give Ruby a much faster execution environment (perhaps 30X), VMs which are capable of incremental garbage collection, generational garbage collection that is so fast your progra still works even with an infinite loop allocating new objects (I do this as a lark sometimes), a wonderful debugger which will let programmers modify methods on the fly & continue execution, a "workspace" window where you can execute arbitrary code, a visual "inspect", a powerful "Refactoring Browser," an industrial strength OODB (Gemstone) with objects and methods you can define in Ruby, and a readily accessible meta-level which will allow Rubyists to readily modify their own language. (For example, you could then use Method wrappers to very quickly implement an Aspect-Oriented Ruby.)
My strategy for doing this involves writing a Ruby parser (or, rather, translating the existing one in JRuby to Ruby) then writing a Smalltalk Parser object to request parsing of Ruby code into an AST from a Ruby program outside of Smalltalk. We then reify the AST inside the image and use it to compile Ruby methods into bytecodes. (Multiple syntaxes can coexist in one Smalltalk image.) Once this is done, we can then compile the external Ruby parser and bring it into Smalltalk. Afterwards, we can use the Refactoring Browser Smalltalk parser plus a little runtime type inferencing to incrementally transform the image into pure Ruby.
We can do all of this without changing the structure of Ruby files & Modules or requiring Rubyists to do Smalltalk style image oriented development. And for those of you sharp enough to wonder: yes, we can handle Modules, Mixins, and fully qualified Method names without changing the Smalltalk VMs. (At least those that have Namespaces.)
If anyone is interested, please drop me a line.
--Peter
···
--
There's neither heaven nor hell, save what we grant ourselves.
There's neither fairness nor justice, save what we grant each other.