The Ruby VM: Episode II へたれ訳

id:hiro-ueda:20070224 の続き。相変わらず Google 翻訳、Excite 翻訳、アルク に頼ってます...

この対談の始まりは JRuby や Rubinius といった別の実装による刺激がきっかけでした。これらの新しいインタプリタについてどう思っていますか? そして Ruby の公式な開発にどのような影響を与えていると見ていますか?

まつもと さん(以下 Matz):

別の実装があるということは Ruby 言語の成熟を意味しますので、この事実を嬉しく思います。しかし、今まで十分な数のコア開発者がいたことがありませんので、実装間でより一層の協力が必要だと考えています。最近、Charles Nutter 氏と Ruby の使用に関して素晴らしい意見交換ができましたが、このような機会をもっと頻繁に持ちたいと思います。

ささだ さん(以下 ko1):

別の実装を持つことは非常に重要だと思います。どのように Ruby を実装し、その技術がどのように YARV に適応できるかを知りたいですね。

実際、実装をスクラッチするのはとても楽しいことです。YARV(公式な Ruby 実装)は歴史的な理由による数多くの問題(拡張ライブラリの互換性が最も大きな問題)を抱えています。


他のインタプリタをダウンロードしてインストールしたことはありますか?

Matz:

いいえ、Rubinius のいくつかのファイルをざっと読んだだけです。私は Java も Parrot も詳しくないので。

ko1:

試してみたいのですが、(YARV をハックする時間も無いくらい)時間が無くて。答えとしては『いいえ。試してみたい』です。


様々な実装のチームとの間で、良い意見交換をしていますか? 他のチームと話したり、彼らのコードを読んだり、あるいは彼らの実装の詳細について議論していますか?

Matz:

私と一緒に YARV の作業をしている ささだ くんを加え、私は Charles Nutter*1 氏と会い、2.0 に関して非常に興味深い意見交換をしました。Evan Phoenix*2 氏も私にインスピレーションを与えてくれました。言語実装に関心と知識のある、より多くのプログラマと会えるのはとても楽しいことです。

ko1:

時々、JRuby チームと IRC で会話します。全ての Ruby 実装の開発者と、特に性能に関して議論したいですね。

ところで、私たちはこの状況において次の 3つを必要としています:

  1. 仕様ドキュメント
  2. 優れたテスト
  3. 優れたベンチマーク

テスト:
Ruby の trunk と 1.8 にはテストスイートがあります。しかし test/unit は多くの Ruby の機能を使用しているため、実装の初期段階では実装そのものをテストすることが非常に難しくなります(RSpec も同じ問題を抱えています)。現在、trunk にはこれを解決するための”ブートストラップテスト”があります。これは前述の問題に対する優れた解であり、Ruby の最小限の仕様を示しています。

ベンチマークテスト:
私が書いた YARV ベンチマークを使用している人もいます。しかし、これらのコードは Ruby の一般的なベンチマーク用ではなく、YARV の速度アップ比を計るためのものです。つまり YARV を最適化するために書いたコードだ、ということです。私たちは Ruby 実装のためのより適したベンチマークを準備しなくてはなりません。

http://blog.grayproductions.net/articles/2007/03/16/the-ruby-vm-episode-ii

*1:JRuby 開発者、ブログは http://headius.blogspot.com/

*2:Rubinius 開発者、ブログは http://blog.fallingsnow.net/