「Ruby 2.0.0-p0」リリース

CodeZine / 2013年2月25日 12時5分

 Rubyコミュニティは、Ruby 2.0系列の最初の安定版リリースとなる「Ruby 2.0.0-p0」を、24日にリリースした。「Ruby 2.0.0-p0」には、Rubyへの要求の多様化・大規模化に対応するため、数多くの新機能や改善が追加されている。

 言語コア機能における変更点としては、API設計の柔軟性を高める「キーワード引数」や、新しいクラス拡張の方法である「Module#prepend」、シンボル配列を簡単に作れるリテラル「%i」、実行中のファイルのあるディレクトリを示す「__dir__」を追加した。また、デフォルトのエンコーディングがUTF-8になったことによって、多くのマジックコメントが不要となっている。

 組み込みライブラリの新機能は、無限の遅延ストリームを可能にする「Enumerable#lazy」「Enumertor::Lazy」、遅延サイズを評価する「Enumerable#size」、新しい正規表現エンジンであり、「鬼車」のforkである「Onigmo(鬼雲)」、非同期例外を安全にハンドリングするAPIを追加した。

 デバッグサポートの新機能では、本番環境での実行時診断が可能な「DTrace」をサポートするとともに、改善されたトレースAPI「TracePoint」が追加されている。

 ほかにも、bitmap markingによってGCを最適化し、「Kernel#require」を最適化することで「Rails」の起動時間を大幅に短縮した。さらに、メソッドディスパッチなどのVMを最適化するとともに、浮動小数演算を最適化している。また、rdocが大幅に追加され、ドキュメント率が75%と大きく改善した。

 なお、2.0.0は1.9との互換性に配慮して設計しており、「Rails」や「tDiary」など、いくつかの広く使われているアプリケーションが2.0.0のRelease Candidate版で動作していることから、1.9から2.0への移行には大きな困難はないと考えられる。

 一方で、いくつかの非互換も存在しており、「iconv」が削除されるとともに、ABI互換性がなくなっている。「#lines」「#chars」「#codepoints」「#bytes」メソッドは配列を返すようになり、「Object#inspect」は「#to_s」を呼び出さず、常に「#<ClassName:0x…>」のような文字列を返すようになった。ほかにも、比較的小さな非互換が存在する。

 さらに、Rubyのモジュール性に新しい概念を与える実験的機能「Refinement」を追加した。実験的機能であるため、将来的に仕様が変化する可能性がある。

 Rubyコミュニティは、今回リリースした「Ruby 2.0.0-p0」が1.9.0とは異なり、安定版リリースであることから、ライブラリ作者に対して2.0.0のサポートを推奨している。


CodeZine

トピックスRSS

ランキング