Dear Rubyists,
Lately (as I was dissatified with Ruby's current continuation implementation), I remembered that we had a Ruby-In-Ruby project some years ago. Python has PyPy, which got even fund by EU. Squeak in mostly written in itself, too.
So the question is, do we get enough interested people together that would work on such a project? I've noticed that PyPy and StacklessPython develop much code in so-called Sprints, where the developers meet and hack a weekend or a whole week on that project. Ruby developers are probably more distributed that Python's, but maybe it would work if we build small teams, which are then connected via internet to other teams, worldwide... just dreaming Or isn't that exactly the idea of the Ruby Codefest by Ruby Central, Inc? Maybe we could even get funded
So who is really interested in this project and would spend a little bit of his/her free time (of course not on christmas or silvester :-).
= First steps?
1. setup a project... discuss, discuss, discuss... agree on some goals,
most important is that we stand united and bundle our forces
2. write a Ruby parser in Ruby (do we already have one, Robert Feldt?)
we could also omit this step, and use the node-tree directly, and
implement the parser later.
3. Ruby AST-to-bytecode generator (YARV bytecode?)
4. Implement the Ruby VM (in Ruby): object model, memory management (GC),
interface to RubyC, port core-libraries.
5. Implement the RubyVM in C (either manually or by using a MicroRuby
approach, by translating a subset of Ruby into C)
Steps 2. and 3. could be reused by future RubyC implementations. 4. and 5. not, this are the steps that would bring us some new features.
What I'm especially dreaming of is the ability to dump any object to disk... threads, continuations, and to have an accurate (non-conservative) garbage collector, so that Ruby will under no circumstances (except bugs) leak memory (that's especially important in the case of continuations). If we can dump everything, the GC-thing would of course be optional, as we could stop and restart at any point.
Well, we could also implement a Ruby-like language first... maybe that's simpler... start small. And parts of this project could flow into Rite/Ruby2 if matz agrees.
Enough for today...tell me what you think about this (old) idea...
Regards,
Michael