10月5日、6日で行われたOSCで笹田耕一さんからRuby1.9の話がありました。
ミニセミナーという形式だったので、短時間で大雑把な話をお聞きしただけなのですが、勢いのあるトークもあって、人だかりが凄かったですね。
形式的には、質問を受けて笹田さんが答えるという内容でした。主な項目と回答はこんな感じでした。
1. Ruby1.9のリリース日は?
まつもとゆきひろさんは、12月25日に出すと言っています。まだFIXしていないマルチリンガライぜーションの仕様があって、まさに議論中なのでプロダクションに使えるバージョンがリリースできるかはわかりませんが、何らかの形で出ます。例えば、文字列ごとにエンコードをつけるのは決まっていますが、どのようにするのかの詳細がまだ詰められていません。なので1.9.1のバージョンでstableでRailsが動くということにはならないと思う。
2. 1.8で動いているコードを1.9で動かすときありそうな非互換になる変更は?
スレッドまわりがネイティブスレッドにかわることで、スレッドドットクリティカルというスレッドのクラスメソッドがなくなります。あとブロックパラメータにアトリビュートを入れちゃいけないという細かい仕様変更。M17Nの対応によって文字列の何バイト目というのが今までとれたんですが、キャラクターコードが出てきたんですが、それがなくなり、1文字の文字列が返ってくるようになります。他にもいろいろ変わりますね。
3.話題になってる速度面は?
メディアで5倍早くなるとあったんですが、5倍早くなるのもあるし、10倍早くなるのもありますし、遅くなるのもあります。よく使うアプリケーションでは多分ちょっと(1.5倍とかそういうレベルで)早くなります。VMでトレードオフを考えていて、これは遅くてもいいだろうという機能は遅くしちゃいました。具体的には例外を発生させるプログラムは遅くなります。文字列をRubyのプログラムとしてコンパイルして実行するのは遅くなります。なので、できるだけ、ebalは使わないようにしてください。
以下、THINK ITの笹田さんの原稿から引用して掲載しておきます。
http://www.thinkit.co.jp/free/article/0709/26/
・2007年クリスマスにRuby 1.9.1をリリース
・仮想マシンYARVが取り込まれ、従来より基本性能で5倍、通常アプリケーションでも1.x倍の高速化
・M17N(多言語化)標準搭載
・ネイティブスレッドを用いたRubyスレッド(ただし並列化は行わない)
・継続、Fiberのサポート
・独自のI/Oバッファリング機構とノンブロッキングI/O機構の改善
・データ構造の改善などによるメモリ効率
・新しいライブラリの追加
・新しいパッケージ機構の導入(RubyGems)
・若干の文法の変更
・より多くのテストの追加
しかし、笹田耕一氏(東京大学大学院情報理工学研究科特任助手)はいつもRubyのからんだTシャツを着てらっしゃいますね。
http://itpro.nikkeibp.co.jp/article/NEWS/20070909/281502/ |