こんにちは。

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