3

APIバンドルで1.0.0でバージョン管理されたパッケージで開始する場合、そのパッケージに新しいインターフェイスを追加した後、新しいバージョンはどうなりますか?ホワイトペーパーでは、互換性に関して次のように述べています。

バイナリ互換性が下位互換性において重要な役割を果たすことは明らかです。ただし、下位互換性もセマンティクスに大きく依存します。インターフェイスの責任が変更された場合でも、バイナリ互換性はありますが、下位互換性はなくなります。

同時に...

3.micro —マイクロパーツの違いは、下位互換性の問題を示すものではありません

新しいインターフェースでは、プロバイダーにバイナリの非互換性は発生しません。実装を単純に省略することは可能です。これは、パッケージのセマンティクスにおける「後方互換性のない」変更と見なされますか?これは、新しいバージョンが1.1.0であることを意味しますか?

4

2 に答える 2

8

APIのプロバイダー(OSGiではパッケージ)を壊すため、パッケージへのインターフェースの追加は少なくともマイナーな変更(1.2.3-> 1.3.0)です。APIのプロバイダーは、APIのプロバイダーには、実質的に下位互換性がありません。 、まあ、APIを提供します。結局のところ、APIの新しい義務には、いくつかの新しいコードが必要です。

ここで、APIにこの新しいインターフェースを実装する義務をコンシューマーに課していると仮定します。この変更(コンパイラーには表示されません)は、明らかに既存のすべてのコンシューマーを破壊するため、すべての人にとって破壊的な変更になります(たとえば、1.2.3-> 2.0.0)。

結論として:

  • マイクロチェンジ->APIの既存のプロバイダーおよびコンシューマーとの下位互換性
  • マイナーチェンジ->APIの既存のプロバイダーは互換性がありませんが、コンシューマーは互換性があります
  • 主な変更->既存のプロバイダーとコンシューマーは互換性がなくなりました
于 2013-03-18T07:38:54.070 に答える
1

セマンティックバージョニングには次のことが記載されています。

後方互換性のない変更がパブリックAPIに導入された場合は、メジャーバージョンXX.y.z| )をインクリメントする必要があります。X > 0

新しいインターフェースの追加は、1つの新しい操作にチェーンされた複数の古いインターフェースを呼び出すだけの場合、意味的に下位互換性があると見なす必要があります。
その場合、マイナーバージョンの増分で十分です。

于 2013-03-18T07:06:13.257 に答える