2016-05-20 13 views
2

要約:大規模なC/C++ライブラリで作業しているときに、いつABIを壊すのですか?消費者がいて、非主要リリースで安定性が期待されていますか?ABIの安定性:いつABIを壊すのですか?

+0

広すぎると、「私的に使用された」とはどういう意味ですか?それは公的に利用可能なクラスのメンバーですか? – SergeyA

+0

私もそれを削除することができます。この質問にはあまり重要ではありません。関数の追加にも同じことが適用されます。 – eljefedelrodeodeljefe

+1

これは主観的な質問ですが、それぞれの状況によって異なる回答が出る可能性があります。ビジネスニーズがメンテナンスの問題でABIを壊すには大きすぎる場合は、おそらく今ABIを壊す適切な時期ではありません。ビジネスがそれを正当化する必要がある場合は、おそらく今は適切な時期です。それは本当に状況に依存します –

答えて

3

いいえ、APIとABIの非互換性に違いがあります。 APIの非互換性とは、ユーザーが新しいライブラリで使用できなくなったと言ったように、関数の非難/削除を指します。これにより、古いコードがコンパイルされなくなります。

一方、ABIの非互換性には、ライブラリがSystem VとARMシステムでコンパイルされた場合、libstdC++またはlibC++でコンパイルされた場合など、不安定性/リンクエラーが含まれます。これには、ライブラリ全体をターゲットシステム用に再コンパイルする必要があります。

+0

APIの非互換性は、ABI非互換性のサブセットですか?ユーザーが一般に公開されている関数を使用していないため、理論的にコードをコンパイルする必要があるとします。いずれにせよ、その答えは私には十分であろう。 – eljefedelrodeodeljefe

+2

@eljefedelrodeodeljefe _ "APIの非互換性は、ABIの非互換性のサブセットですか?"これらは直交するものです。 –

+0

@eljefedelrodeodeljefeあなたがパブリック関数を持っている場合は、ユーザーを完全にコントロールしない限り、ユーザーがそれを使用していないことを保証することはできません。 )。一部のAPIの変更(公開機能の削除など)によってABIが破損する場合があります。一部のAPIの変更は必ずしも必要ではありません。 – user2079303

関連する問題