世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2007年12月27日

Ruby 1.9の未来

@ITにまつもとさんとささださんの記事が載ってる。Ruby 1.9についてだそうだ。

まつもと いえいえ、逆にこれをちゃんと伝えていただきたいんです。1.9は安定版じゃなくて開発版です。“ブリーディング・エッジ”(Bleeding Edge)といって血がどばどば出ている状態のものです。そのために1.8系を用意しているということです。1.9の荒削りな部分が丸くなるには年単位で時間がかかると思うんです。そのときまでは1.8が運用されていると思います。もし何かの事情で1.9をエンタープライズで使いたいということであれば、自己責任でやっていただくしかない。

——でも、あまりエッジなことをやっていると、1.8系と互換性のあるJRubyがマスマーケットを獲って、Ruby 1.9とかい離していく可能性もあるんじゃないですか。

まつもと ええ、Ruby 2.0が1.x系をサポートするJRubyと別物になる可能性はありますよね。

ん、1.9は「2.0に向けての実験」ではある。でもさー、でもさー、ただtrunkで開発してるものを1.9と称するのではなくて、今回みたいにリリースを重ねていくというのは「2.0への踏み台」でもあるからなんじゃないの?

今回のRubyGems標準添付とか、ブロックパラメータの仕様変更とか、多値の扱いとか、M17Nとか、全般的に言語仕様としてとても良いものだったと思うんだよね。まさに、2.0に向けて進むべき道というか。まあ、まつもとさんを中心にみんなが何年も話し合ってきた成果なわけだから。

gemsの添付はJRubyはCRubyにさきがけて実践してるぐらいだし。パッケージングシステムが付いてるのは現代の言語としては当然でしょ? 文法非互換性も、1.8に対する非互換性ではあっても、結局は言語全体を一貫したルールで支配して、覚えることがより少なくてすむ、直感に沿った文法を実現する前向きな変更だ。

安定した1.9

今回のリリース祭りの顛末からして、確かに現段階で1.9をエンタープライズに使うのはリスキーだ。というか、選択肢としてあり得ない。でも、もう少し経って安定した頃には、みんなが1.9の優れた文法を享受する機会を得られたら嬉しいと思う。せめて今のv1_8ブランチぐらいには安心して使える安定した1.9feature実装が欲しい。

や、事情は分かってる。「Ruby 2.0」は「Perl 6」やかつての「Python 3000」と同じ、見果てぬ「洗練されたRuby」の象徴的な名前なんだよね。そして、バージョン番号はmajor, minor, teeny、各1桁(だから辞書式に比較できる)という前提でずっとやってきたので、Ruby 1.10というのも難しい。

かといって、それが「1.9」である限り安定することはできない。今の1.8のように「大きく互換性を損ねる変更は禁止」になったら実験性が失われて、Rubyは進化を止めてしまうから。そうしたら2.0は永遠に失われて、Rubyは死んでしまうから。

でもそこをなんとかならんだろうか。今回リリースされた新版リファレンスマニュアル、以前RUBY_VERSION定数の項にはこう書いてあった。

Ruby 1.8 までは、minor が奇数のバージョンは開発版、minor が偶数のバージョンは安定版です。 RUby 1.9.0 以降は、teeny が 0 のバージョンが開発版となる予定です。

じゃあ、teenyが0じゃないやつは? 準安定版とか、次期安定版お試し用とか、それぐらいにならんものか。

これから1.9系統に盛り込まれるであろう実験的機能は分からない。でも、今回1.9.0リリースに盛り込まれた機能はRubyist全員がいつかは使うべき良いものだ。Javaならここで5までバージョンを上げる。まさにTigerに匹敵する大きな一歩だ。これを「リスクを取りたくないなら2.0までおあずけ」はひどいだろう。JRubyにしても、私はこの機能を無視し続けるとは思わない。JVM上で実装し得ないYARV specificなものはともかく、それ以外はいつか手を出すだろう。この機能たちを無視するなら、JRubyはたとえビジネス的に一時盛り上がったとしてもただの負け犬だ。

実験の足を引っ張らず、1.9の「角がとれた」部分を順次取り込んでリリースを重ねる方法を考えて欲しい。というか、ruby-devにも投稿したけど、事務作業ぐらいならできるし、何でも手伝うので何とかして欲しい。

トラックバック

http://yugui.jp/articles/729/ping

現在のところトラックバックはありません

コメント

takano32 (2007年12月27日 07時46分11秒)
<p>概ね同じことを思います。それに、1.9系がエンタープライズで安定して使えるようになったところで、急に開発体制がそれに従うことができるとは思えません。安定した1.9系のようなもので練習的な運用をしつつ、1.9系で角がとれたらそれに移行する、というパスが見えてきません。<br />エンタープライズレベルの堅い連中がほんとに急に1.9系に適応できるの?と。疑問に思います・・・</p>
ささだ (2007年12月27日 11時53分37秒)
<p>これは、1.9.0 のことを言ってるんだと思うんだけど、違うのかな。1.9.5 くらいでは、多分安定するんじゃなかろうかと思います。いつごろ出るかはわからないけれど。</p>
Yugui (2007年12月27日 13時51分43秒)
<p>&gt; これは、1.9.0 のことを言ってるんだと思うんだけど</p> <p>えー、記事からはそうは読めなかったんですが、そういう感じの流れなんですか? だったら嬉しいな。</p> <p>何にしても、1.9.1が1.8.0くらいの安心感にはなって欲しいわけですよ。基本的に。エンタープライズの人は1.8.0くらいだと使わないだろうけれども、「将来に備えて社内ライブラリぐらい対応しておくか」という気持ちになるような存在感を出して欲しいんです。</p>
まつもと (2007年12月27日 17時41分07秒)
<p>えーと、「1.9が開発版」ではなく「1.9.0が開発版」ですから、1.9.1以降は安定運用を目指します。別にRuby2.0を待つ必要はありませんです。<br /></p>
Yugui (2007年12月27日 20時54分36秒)
<p>&gt; 1.9.1以降は安定運用を目指します</p> <p>えがったです。</p> <p>ありがとうございます。</p>
blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system