version updates for libraries

Rusty Russell rusty at ozlabs.org
Mon Apr 11 21:22:28 MDT 2011


On Tue, 12 Apr 2011 08:27:33 +1000, Andrew Bartlett <abartlet at samba.org> wrote:
> > >> if X == 0:
> > >>     /* X == 0, means there's no stable API/ABI yet */
> > >>     - bug fixes and new features should trigger an update of Z.
> > >>     - incompatible changes should trigger an update of Y.
> > >> else
> > >>     - important bug fixes should trigger an update of Z.
> > >>     - new features should trigger an update of Y
> > >>     - incompatible changes should trigger an update of X.
> > >>
> > >> It would be nice if we could add checks for this into the ABI checking code.
> > > 
> > > Ok, I can agree with this logic, having at least guideines splleed
> > > clearly in a README is probably a nice first step.
> > 
> > Are you also fine with such a logic for talloc, tdb, tevent and ldb?
> 
> How should we describe new features that are ABI compatible with a
> previous ABI, but are significant improvements?

On the one hand, neither is a user-visible *API* change, so they're both
Z.  On the other, they're significant changes, so such a minor bump
seems deceptive.  I think that's a fair debate which can't be solved in
general.  That's OK.

Of course, in practice version bumps are batched, especially Y version
(ie. one increment introduces 3 new features).

Note also: incompatible API changes require a header name change too,
eg. tdb2.h.  That's because you can have two versions of the library on
the same system, even if not in the same binary.

The real answer is, don't export libraries if you don't have to: it's
hard! :)

Cheers,
Rusty.


More information about the samba-technical mailing list