The Ruby VM: Episode II
For details about this ongoing interview, please see my introductory post.
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?
- Matz:
-
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.
-
- ko1:
-
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?
- Matz:
-
No, I just skimmed a few files from Rubinius, but not others. Mostly
because I am not familiar with neither Java nor Parrot.
-
- ko1:
-
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?
- Matz:
-
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.
-
- ko1:
-
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 bnechmarks 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".
-