[Ruby 1.8-Feature#4207] これから「1.8.8」の話をしよう -- 1.8がこの先生きのこるには

チケット #4207 が更新されました。 (by Akinori MUSHA)

色々と切羽詰まっててまったく議論の方向付けに加われずすみません。

ruby 1.8.8devを1.8.8とするためには以下が最低限必要と考えます。

  1. 1.8がMRIだけの存在となる環境が整うこと

    MRIほどに1.8サポートの存続が必要とされる処理系はほかにないはず。しかし現実には
    JRubyなどは依然サポートしており、その開発陣も1.8.8が出ることを快く思っていない
    ようです。

    MRI 1.8.8を出すにしても、JRubyや他の処理系に対応を求めることはないし、むしろ、
    それらが1.8(.7)サポート自体を打ち切るのを待ってMRI 1.8.8に取り組みたいと私は
    思っていました。昨年、JRubyでも1.9への移行は思ったほどには進んでいないという
    話を聞き、がっかりするとともに当面、状況が変わるまでは1.8.8の話をするのを控え
    ようと思いました。(リリースするしないの話を凍結とした)

    現在はどうでしょうか。私は、これからのベストの選択肢としてCRuby 1.9.2がその
    完成度とともに示され、JRubyなどが強力にこれをサポートし、多くの開発者もそれを
    支持しているのだから、1.8はもうMRIで細々と余生を送る存在として認識されるべき
    だと思っています。(勝手な本音を言えば、JRubyなどに1.8サポートを打ち切って
    ほしい)

    MRI 1.8が必要な理由はすでに挙がっている通りで、付け足すことはあまりありません。
    正式に1.8.8を出すとすれば、それはそれを必要とする人たちのためのものであって、
    「要らない」という意見によって響くものはあまりありません。

    ただ、1.8.8が出ることによって具体的な迷惑が発生することは防ぐ必要があります。
    1.8.8を使うユーザが声を大にして1.9に移行したプロジェクトに対応を意見するとか、
    そういった類です。これを避けるためには、以下の二点を達成することが1.8.8の位置
    づけ(別途書きます)を明確にし、それを大義とする上で必須だと考えています。

  2. ruby 1.9.2との互換性のための機能の実装

  • 1.9.2+互換性警告の強化(デフォルトで出力するなど)

  • ブロック変数がローカル変数と一致する場合に弱い警告を出す

  • magic comment($KCODEとの不一致時に弱い警告を出すなど)

  • リスト末尾以外でのsplat構文([a, *b, c] など)

  • ->()構文

(ほかにあれば挙げて)

  1. ruby 1.8.7との互換性の検証
  • RubySpec、サードパーティgem、インハウスアプリなどを片っ端から試す

  • ruby 1.8.7で動いて1.8.8で動かないものは、原則としてバグ扱い

    不適切な互換性コードや強引なモンキーパッチについては動かなくなることも
    あると思われるが、それらの修正は全面支援する

これに掛かる手間はかなりのものなので、それをまかなう熱意を持った人手が
必要です。しかし、それがないのであれば現状通り、1.8を使うふつうの人は
1.8.7を使い、変わったニーズを持つ人は有志がメンテナンスする1.8.8devを
使う、という形で変わらないことになります。

といったところが今の私の考えの要諦です。