From: Takahiro Kambe Date: 2011-01-31T12:02:48+09:00 Subject: [ruby-dev:43152] RubyのパッチレベルとABI互換 こんにちは。 Ruby, 特に1.8.7系列でパッチレベルが上がった場合のバイナリ互換というの は、どの程度担保されているものなのでしょうか? o 共有ライブラリのバージョンが一緒だから大丈夫。 o そんなのないに決まってとる。 前者とばかり思っていたのですが、実際は後者なのでしょうか? (1.9系も気にしてはいます。) 背景はpkgsrcでRubyの保守に関わってるメンバーから連絡をもらい、状況とし ては pl302 で作成(コンパイルとリンク)済みのパッケージを、ruby 1.8.7だ け新しいpl330にした状況です。彼によると、 ------------------------------------------------------------------------ o Ruby 1.8.7pl302から1.8.7pl330にしたら rabbit と mikutter の動作が おかしくて調べた。 o 少なくともNetBSD 5.1上では1.8.7pl302と1.8.7pl330はABI非互換なのでは ないか。 o 実際、ruby-gnom2-glibのPKGREVISIONを上げて、再作成をかかるようにした ら、直った。 lib/ruby/1.8/i386-netbsdelf/config.hを比較して関係ありそうなところで、 #define HAVE_UCONTEXT_H 1 #define HAVE_GETCONTEXT 1 #define HAVE_SETCONTEXT 1 がなくなっていて、node.hで影響がありそうに見える。 背景を調べようとして、 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8_7/configure.in?r1=29853&r2=29854 が影響しているみたいで、 http://timetobleed.com/fix-a-bug-in-rubys-configurein-and-get-a-30-performance-boost/ が発端なのか? ------------------------------------------------------------------------ 以上、ここまで私の要約で、この辺りにたどり着いたところで、ここからはよ うわからんということです。残念ながら、私もようわからん状態なのですが、 最初に戻ってABIの互換性に対する考え方はどうしたらよいものでしょう。 取り敢えず、pkgsrc的にはABIのバージョン指定のパラメーターを追加して、 関連する(コンパイルが必要な)rubyのパッケージをすべてPKGREVISIONを上げ る方向で動いています。 -- 神戸 隆博 / Takahiro Kambe