From: KOSAKI Motohiro Date: 2011-01-31T17:30:59+09:00 Subject: [ruby-dev:43163] Re: RubyのパッチレベルとABI互換 > 2011/1/31 Takahiro Kambe : > > Ruby, 特に1.8.7系列でパッチレベルが上がった場合のバイナリ互換というの > > は、どの程度担保されているものなのでしょうか? > > > > o 共有ライブラリのバージョンが一緒だから大丈夫。 > > o そんなのないに決まってとる。 > > > > 前者とばかり思っていたのですが、実際は後者なのでしょうか? > > (1.9系も気にしてはいます。) > > Ruby 1.9に関して言えば、一応前者ということになっています。ですので1.9.2と1.9.1は共有ライブラリのバージョンが同じです。 > > APIとして公開されたシンボルがなくなったりプロトタイプが変化することはありません。ただし、teenyバージョンアップや、patchレベルでやむを得ない場合には公開されるシンボルが増えることはあります。 > > ここで頭が痛いのは、公開されているシンボルとは何かという話です。一応なんとなくこの辺りだろうという雰囲気はあるのですが、正式なドキュメントはありません。とりあえず1.9.2に関してはpatchlevelリリースではexternなシンボルはすべて削除しない、可能な限り追加もしないようにしています。 あと、今回の神戸さんのメールで気がついたのですが、ruby.hがconfig.hを インクルードしちゃってるのは堅牢じゃないなぁ。 *.c でしか使ってない #ifdef条件を消したらABI非互換になるという意味で 今だと厳密に運用すると configure.in 変更してるパッチは、原則バックポート不可に なってしまう気がするのですが、そういうもんなのでしょうか。