Re: [AD] Re: binary compatibility check

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


On 2006-02-24, Chris <chris.kcat@xxxxxxxxxx> wrote:
> In Unix, I think this kind of thing is done with having a symlink called 
> libfoo.so.0 point to the latest library that'll work with programs that need 
> arbitrary-version-0 (eg. liballeg.so.0 -> liballeg-4.4.0.so). Allegro already 
> does something like this:

This symlink comes from the library's "soname", which is embedded in the
library.  This is set in makefile.ver.

> $ ll liballeg*
> -rwxr-xr-x  1 root root 840K Feb 17 16:07 liballeg-4.2.1.so
> lrwxrwxrwx  1 root root   17 Feb 21 13:31 liballeg.so.4.2 -> liballeg-4.2.1.so
> -rw-r--r--  1 root root 171K Feb 17 16:07 liballeg_unsharable.a
> 
> But it uses the actual library version, which means it implicitly breaks when 
> the major or minor version number changes, regardless if ABI was actually 
> broken.

That's because the Allegro 4.0 branch is defined as the branch which is
backwards- (and forwards-) compatible with the 4.0.0 release, and the
4.2 branch is the branch that is backwards-compatible with the 4.2.0
release.

> If the file's version number was independant of the library version 
> number, this implict break wouldn't occur. Instead, the name-enforced break 
> could be controlled by only changing the number when the devs saw fit (which 
> would be when backwards binary compatibility is broken).

(1) Backwards compatibility breakage used to only be allowed between a
stable branch and the next unstable branch, and

(2) Backwards compatibility breakage was implicitly assumed to _always_
occur between a stable branch and the next unstable branch.

Your proposal is the right way to do things (especially for commercial
libraries for which version numbers get bumped for non-technical
reasons), but we know for sure that 4.2 binaries won't work with
4.3/4.4, so if we adopt it we would only do it from 4.3 onwards.
And we would still not break backwards compatibility within a stable
branch.

Peter





Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/