The Ruby VM: Episode II
We started these talks because of the excitement around the alternate implementations, like JRuby and Rubinius. How do you feel about all of these new interpreters and how do you see them affecting the official development of Ruby?
Alternate implementations mean maturity of Ruby language. I'm glad for the fact. But we have never had enough number of developers for core, so I think we need more cooperation between implementations. I had a good talk about future Ruby spec. with Charles Nutter recently. I expect occasion like this more often.
I think having alternatives is very important. I want to know how to implement Ruby and apply these techniques to YARV.
In fact, implementing from scratch is very fun. YARV (official Ruby implementation) has many problems resulted from historical reasons (a biggest problem is compatibility to extension libraries).
Have you downloaded and installed any of the other interpreters?
No, I just skimmed a few files from Rubinius, but not others. Mostly because I am not familiar with neither Java nor Parrot.
I wanted to try these alternatives, but no time to do it (and no time to hack YARV ...).
Answer is: No. I'll try.
Is there a good exchange of ideas between the various implementation teams? Do you talk to the other teams, read their code, and/or discuss implementation details with them?
Besides Koichi who works on YARV with me, Last month I met with Charles Nutter and exchanged very interesting idea about 2.0 behavior. Evan Phoenix also gave me inspiration. I am very glad to see more programmers with interest and knowledge in language implementation.
Sometimes I talked with JRuby team on IRC. I want to discuss every Ruby implementation developers, especially performance of it.
BTW we need 3 things on this context:
- Documents of specification
- Good tests
- Good benchmarks
Tests: Ruby trunk and 1.8 have test suits. But it's too difficult to test with it on early stage of implementation, because test/unit use many ruby's functions (RSpec has a same problem). Now, trunk has "bootstraptest" to solve it. I think it is good solution for this problem. And it's show a minimum ruby's specification.
Benchmark tests: Some people using YARV's benchmarks I wrote. But I didn't write these codes to measure "Ruby's general benchmark test", but to measure speed-up ratio on YARV. It's means that I wrote codes what YARV optimizes. We must prepare more suitable benchmarks for "Ruby implementations".