Richard Frith-Macdonald wrote:
Chasing MacOS-X is a problem for us .. sometimes Apple make changes
which require ABI changes. Often they add new stuff, which we try
to add too. If we don't get the additions quite right in one
release, we need to fix them in the next release, and that fix may
change the ABI with respect to the new feature, even though the ABI
of the main part of the library is stable/unaffected. This can be
something as trivial as implementing an obscure method with an
argument of the wrong type (eg a long rather than an int), then
having to change the argument type in a later release to match
MacOS-X.
I find it quite funny that you regularly bring up Mac OS X
compatibility as a reason for ABI breakage. Have you ever looked at
what Apple is doing? I can use executables compiled on Mac OS X 10.2
on Mac OS X 10.5 without any problems and Mac OS X does ship with
only a single instance of all its libraries/frameworks. I.e., it was
possible for Apple to keep the ABI stable and avoid any soname
changes for all major libraries since at least 10.2. For sure, they
play some tricks here and check at runtime whether an executable was
linked against the 10.2, 10.3, 10.4, or 10.5 frameworks and adapt
the behavior of some methods accordingly.