ささだです。

 RubyConf 2006 の最終日にさっさと YARV をマージしろ、といわれてしまった
ので、11月中に YARV が本家リポジトリにマージできるように、今作業を進めて
います。具体的には、この連休中に形にできればと思っています。


 まつもとさんたちと相談した結果、具体的なプランは以下のとおりです。

1. 現在の Ruby HEAD (*a) の仕様(のほとんど)に YARV をあわせる
   この作業は、YARV のリポジトリで行います                  <-- いまここ
2. Subversion リポジトリを (*a) から cvs2svn で作る (*b)
3. (*b) に YARV をマージしたものをコミットする (*c)
4. 3 の作業中に (*a) に新たにコミットしたものを (*c) にコミットする (*d)
   (ここまでは、作業を全部なかったことにできる)
5. (*d) を Ruby の公式リポジトリとする
...
2007/12 YARV つきの 1.9.1 リリース

担当:
 1, 2, 3: ささだ
 4: まつもとさん
 5: ?
 5 を行う最終的な判断:まつもとさん

 5 の完了を今月 (2006/11) 中に行えればと思っております。


 これにともない、Rubyの開発について以下のように変更になります。

a) Ruby 評価器が YARV になる・Ruby の仕様に YARV の制限が入る
 ・ネイティブスレッドの利用、Thread.critical の廃止
 ・eval の binding に関する挙動変更
 ・などなど

b) リポジトリは CVS から Subversion になる


 本件につきまして、Ruby 開発者の方々にお願いがあります。

・eval.c / parse.y の挙動の差異の調査

 YARV の目的は eval.c を無くすこと(評価器の書き換え)であったため、
eval.c、つまり評価器に対する変更には十分に追従できていません。たとえば
funcall メソッドの導入(今は違うんでしたっけ?)。なんとなく、中途半端に
追従しているので、余計わかりづらくなっています。

 また、parse.y についてもコンパイラ開発との兼ね合いから最新の文法に追従
できていません。

 そこで、YARV と 1.9.0最新版と比較して「ここが違う」というご指摘(のリ
スト)、パッチなどを頂ければと思います。CVS の変更履歴から変更点を追って
いく作業が必要になるかもしれません。

 わかりやすい仕様以上に、エラーメッセージ・警告の追加・セキュリティに関
する挙動などがとくに追従できていません。それらに関するご指摘をお願いいた
します。この類に関する網羅的なテストは Ruby には存在しないので、これを機
に開発するのもいいかもしれません(Ruby の品質改善に興味がある人が居れば)。


・YARV のソースレビュー

 YARV はの C のコードは、ほぼ、ささだ一人で作っていたため全然人の目が
入っていないため、ちょっとあんまりだろ、というところも多いかと思います。
なので、読んでもらってそのあたりご指摘頂ければと思います。

 この辺がわからない、などありましたらご質問頂ければ回答させていただけれ
ばと思っております。

・その他

 本件について、その他のご指摘も歓迎します。この変更自体は大変大きなもの
になるため、いろいろな意見があるかと思います。前述のフェーズ「5」までは
いくらでも後戻り可能なので、ご意見頂ければと思います。



YARV: Yet Another Ruby VM
http://www.atdot.net/yarv/

YARV Subversion repository
http://www.atdot.net/svn/yarv/trunk

YARV on ViewCVS
http://www.atdot.net/viewcvs/yarv/trunk/

-- 
// SASADA Koichi at atdot dot net