Ruby 1.9.1(リンク)は1.9.xシリーズで初の安定リリースであり、多くの言語や標準ライブラリの中で、重要なパフォーマンスの改善を提供する。
しかしながら、1.9.1に移行する場合、既存のコードやGemとの互換性が障害となる。それにはさまざまな理由がある。たとえば、ParseTree(参考記事リンク)は利用不可である。なぜならソースコードが解析され、バイトコードにコンパイルされた後で、 新たなRuby VMが、Rubyパースツリーを保持しないからである。1.9.xでシップされるRipperライブラリで部分的な交換ができる(たとえばMacRubyはRipper を使用し、何らかの目的のためにRubyソースを解析する)(参考記事)。ソースコードの解析のみを要求するライブラリは、Ripperもしくは ruby_parser(参考記事)で何とかやっていく。互換性の問題についての別の理由は、ブロック変数のような言語セマンティクスにおける微妙な変更である(参考記事・英語)。
理由が何であれ、2007年の1.9のリリースおよび今年始めの1.9.1のリリースによって、ライブラリを1.9.xのために準備する意識が高まった。
たくさんの報告によると、Rails 2.3 (またはRails Edge)は1.9.xと互換性があり、それ以前のリリースは問題があるようだ。Ryan Bigg氏は、Railsを1.9.1で使用する際、持ち上がる問題のリストを詳述した(リンク)。Phusion Passenger(リンク)ブログは、もっとも直近のバージョンは1.9.1と互換性があることを報告し、この作業をするためにどのライブラリをアップデートした り、パッチしたりしなければならないかを詳細に示している。 MySQLアダプタなどのデータベースアダプタは読み取られ、MySQLアダプタはRuby1.9.1と動作することになっていたバージョン2.8.1をリリースした(リンク)。
互換性情報を決定する興味深いソリューションは、http://isitruby19.com/で利用可能である。そのサイトは、Ruby Gemsをリストし、ユーザが互換性でのエクスペリエンスを報告できるようにしている。素晴らしい機能はGemの名前の隣にある緑と赤のバーで、この Gemの1.9での成功および失敗数を示している。しかし結果は一粒の塩ととらえられるべきである。特に唯一のユーザ報告のGemsの場合はそうである。 このニュースアイテムの公開時、ParseTree Gemは「Working」として報告された(リンク)。ParseTreeの作成者であるRyan Davis氏の初めのメッセージ(リンク)と矛盾する。また、Ruby 1.9.1インスタンスにおけるParseTreeのクイックテストの実行は、以下で失敗する。
parse_tree.rb:3:in `': ParseTree doesn't work with ruby 1.9.1
それにもかかわらず、互換性の答えを求めるとき、http://isitruby19.comが開始するための1つの場所である。
Ruby 1.9.1へのマイグレーションを引き止めているのは何か?
原文はこちらです:http://www.infoq.com/news/2009/02/ruby-191-library-compat