-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

あ。ささださんがメール書いたから俺も書こう。
RubyConfの最終日にYARVをマージしろといいましたが俺自身は何も作業してな
くてごめんなさい、卜部です。このメールはYARVではなくて1.8についての話
題を扱います。また、議論のベースがRubyConf時点のものなので、わりと状況
変わってる部分もあると思います。御了承ください。

[ruby-dev:29755]で神戸さんも御指摘のように、いまの1.8ブランチは*BSD文
化圏でいうところのいわゆるSTABLEに相当する状態だとわたしも認識していま
す。これをRELEASEに相当する状態(か、それに類似するもの)に変更しようと
いうのがこのメールの提案の趣旨です。これは
- - trunk : CURRENT
- - 1.8.5 : STABLE
から
- - trunk : CURRENT
- - 1.8.6 : RELEASE
- - 1.8.6-p1 : RELEASE + patchlevel 1
にしようという提案であり
- - trunk : CURRENT
- - 1.8.6 : STABLE
- - 1.8.6-p1 : RELEASE
ではない、という点には御注意ください。

さて上記をどのように実現するかという話ですが。

(1)1.8メンテナをまつもとさん以外の人にする
まずご自身で仰っているようにまつもとさんは「Designer」です。そのこと自
体は得がたい能力だと思いますし、卜部にはできないことをやっておられるわ
けで実際かなり尊敬していますが、デザインが得意だからといってメンテナン
スが得意かというと、それは違うとしか。

以下は卜部がブランチメンテナになった場合の話で、

(2) API変更停止
以下に述べるPATCHLEVELの修正をのぞくすべての変更を凍結します。具体的には
- - Cヘッダファイルの記述全て
- - RubyレベルAPIの全て
- - test/以下の全てのファイル

ただし、RubyレベルAPIに関しては明確なものがない(今まさにJRubyのCharles
が書いてるはず)ため、最初の段階では「動いてるコードが仕様です」となる
可能性はかなり高いと思います。


(3) RUBY_PATCHLEVELの新設
Rubyのバージョン番号にはこれまで「MAJOR.MINOR.TEENY、各フィールドは十
進一桁以下」という制限がありました(制限は主にversion.hとCプリプロセッ
サの制約から来ています)が、新たにパッチレベルを示すPATCHLEVELという数
字を導入します。PATCHLEVELは十進でFixnumに収まる範囲の非負整数です。こ
の数字は0から始まり、なんらかのパッチセットが投入されるたびに1づつ増え
ていきます。基本的にバグフィックスしか行われないはずなので、パッチセッ
トは取捨選択の必要はないと思います(入れるなら全部入れるべき)。

#define RUBY_VERSION "1.8.6"
#define RUBY_RELEASE_DATE "2008-12-20"
#define RUBY_VERSION_CODE 186
#define RUBY_RELEASE_CODE 20081220

#define RUBY_VERSION_MAJOR 1
#define RUBY_VERSION_MINOR 8
#define RUBY_VERSION_TEENY 6

#define RUBY_PATCHLEVEL 65535

#define RUBY_RELEASE_YEAR 2008
#define RUBY_RELEASE_MONTH 12
#define RUBY_RELEASE_DAY 20

こんな感じにしようかと。

以上いろいろ書きましたが、みなさまどうでしょう?
問題ないようならとりあえずアカウントください>まつもとさん
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.2.2 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFFS+FRuTXPUnA5eMIRAjRUAJ9TqYhuz3ErgZ2UBRhSLGj0+BeJRgCfULiq
xigZMoOrMZb6l/z1hCq1mL8=
=ckTP
-----END PGP SIGNATURE-----