RailsConf 2008(source)に丁度間に合って、JRuby 1.1.2がリリースされた(source)。(JRuby 1.1.2のダウンロード(source)) 今回リリースされた1.1.xブランチのメンテナンスリリースには、バグの修正と重要なパフォーマンス増加が幾つか含まれている。
既に報告済みではあるがstartup peformance boost(source)は、JRubyのjarファイルをbootclasspathに置いてしまう(source)という考えに基づいている。boootclasspathからクラスをロードする方が、一般的なクラスパスからロードすることと比較して早い。理由はバイトコードが、検証されないからだ。
MRIの安定版Ruby1.8.xブランチのランタイムリリースが利用可能だ。Ruby 1.8.7 preview 4がリリースされた(source)。Ruby 1.8.6以降追加された機能とAPIの概略をリストにしたもの(source)、またはMRIのChangelog全て(source)を確認することが可能だ。
Ruby 1.8.7 preview 4と前のバージョンのプレビュー新機能の違いをざっと眺めてみると、いくつかは活発な機能があり、以前持ち出された機能は消えて、そして再び変更されたものがある。
大きな変更点は、Symbolのto_procメソッドが、復活したことだ。Symbolのto_procメソッドは、Ruby1.9で初めて現れた(source)。Ruby 1.8.7 preview 1は、バックポート版を含んでいた(source)。それは、Rails特有のSymbolのto_procメソッドのカスタムバージョンを利用しているソフトウェアの不具合を発見したときに見つけられた(source)。このことが原因で、Symbolのto_procは取り除かれたが、このメソッドの振る舞いが、テストスイートを全てパスするように変更された後に、また取り入れられた。現状を見ると、Symbolのto_procメソッドは、Ruby 1.8.7で定着しているようである。
前に言及してなかったAPIの変更リストは、以下の通りである。
- Binding#eval
- __method__メソッドは、現在のメソッドの名前をSymbolとして返します。
- String#bytesizeは、文字列のサイズをバイトで返します。
- Object#instance_exec
APIの幾つかの振る舞いが変更された。それが原因でアプリケーションに不具合が生じる可能性がある。
- Date.parseは、'##.##.##'が現在、'MM.DD.YY'ではなく、'YY.MM.DD'と解釈されるので変更された。
- アンダースコアを含んだ数字をレシーバーにして、String#to_i、String#hex及びString#octメソッドを使ったときの振る舞いが変更された。例えばRuby1.8.6では、'10'の結果は、'10'となるがRuby1.8.7では、1となる。より完全な概略を知りたい場合は、リリースノートを確認して欲しい。
原文はこちらです:http://www.infoq.com/news/2008/05/jruby112-ruby187-preview4