[Namazu-devel-ja 1585] --version-info LTVERSION について

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2007年 5月 5日 (土) 10:24:31 JST


寺西です。

Namazu では、--version-info で設定する値を configure.in の 
LTVERSION で設定しますが、
--version-info について理解しておらず、今まで LTVERSION を全く変更
していませんでした。

そのため、2.0.13から2.0.17まで LTVERSION="7:0:0" でしたが、この間
libnmz が未修正であったわけではありません。
リビジョンの変更やインターフェイスの変更はありました。
そのため、バージョンアップすると古い namazu クライアントが動かなく
なるといった問題があったと思います。

以下、自分用の資料的意味を含めてまとめておきます。

-------------------

LTVERSION="C:R:A"

C - A から C までのインターフェイスをサポート

Namazu 2.0.12 "6:0:3"   インターフェイス番号3〜6までと互換
Namazu 2.0.13 "7:0:0"   Namazu 2.0.12 と互換性なし
    :
Namazu 2.0.17 "7:0:0"   Namazu 2.0.13から2.0.17は互換性あり
                        となっているが、これは間違い
 
-------------------

前回のリリースバージョンと比較してLTVERSIONを設定するものとする。

C:R:A   未修正
C:R+1:A   インターフェイス互換性ありの些細な修正(バグ修正)
C+1:0:A+1 インターフェイス追加(互換性維持)
C+1:0:0   インターフェイス削除(互換性なし)

のいずれか。
インターフェイス番号が爆発的に増えないようするため、前回リリース
バージョンと比較して設定するため、pre, RC を含め、libnmz変更の度に
番号をインクリメントすることはしない。
このため、次のバージョンは C+2:0:0 など +2 とならない。

-------------------

例えば

新しい関数の追加        -> C+1:0:A+1
関数の削除              -> C+1:0:0
構造体のメンバ追加/削除 -> C+1:0:0
実装の修正              -> C:R+1:A

関数名の変更            -> C+1:0:0
関数の戻り値変更        -> C+1:0:0
引数の数、型変更*       -> C+1:0:0
構造体の変更*           -> C+1:0:0

* extern された構造体(ポインタは除く)が修正された場合はインター
  フェイスの互換性は崩れる。
* extern された関数の引数で指定している構造体(ポインタを除く)が
  修正された場合はインターフェイスの互換性は崩れる。

注意)
  構造体や関数の引数、戻り値が同じであっても、例えば新しいモード
  をサポートした場合は、やはりインターフェイスの追加となる。

-------------------

stable-2-0, development-2-1, HEAD の LTVERSION

これらは現在同じ "7:0:0" ですが、このため、development-2-1 を
インストールすると stable-2-0 が正しく動かなくなる不具合があります。

そこで、インターフェイス番号を次のように割り振るのはどうでしょうか?

2.0.X では   0 <= C <=  99 とする。
2.1.X では 100 <= C <= 199 とする。
2.2.X では 200 <= C <= 299 とする。
2.3.X では 300 <= C <= 399 とする。

各ブランチでインターフェイス番号は2桁あれば十分でしょう。
3.X.X とか 4.X.X とかまでは考えていませんが、ライブラリ名を変更すれ
ば良いと思います。

-------------------

Namazu 2.0.17 は LTVERSION="7:0:0" 
Namazu 2.0.18 は

A. "7:0:0"   Namazu 2.0.17 と同じ(libnmzに修正なし)
B. "7:1:0"   libnmzの内部実装を修正 Namazu 2.0.17 と互換
C. "8:0:1"   インターフェイス7番の上位互換
D. "8:0:0"   インターフェイス7番と互換性なし

のどれか。
libnmz は関数追加予定なので C, D のいずれかでなければならない。
-- 
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D  8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内