Ryan's ParseTree library uses the current Ruby interpreter parser that is written in C. In fact, he doesn't actually parse the data, but just pulls out the parse tree that Ruby has already parsed. It just reifies that parse data as as Ruby objects so they can be accessed and processed by Ruby code.

This is enough to do refactoring browser type of stuff. Not enough to play syntax god with the language itself.

I believe that Ruby 2.0 will have a full Ruby invocable parser (but I'm don't know how much will be C code and how much will be Ruby code).

AFAICT, Matz himself is not too interested in the MetaRuby stuff, but he has always been willing to "take what works well" and incorporate it into Ruby. I'm hoping that Ryan's work will eventually make it into the core. Ryan's goal is to be able to write the Ruby libraries (and perhaps the VM) in a simple subset of Ruby that can easily be compiled to C code. My understanding is this is that same approach Squeak uses. Ryan has some great examples where he dynamically grabs a method object and calls both "to_c" (producing C code) and "to_ruby" (reproducing the original ruby source ... sans comments). It's pretty cool.