Boost logo

Boost :

From: John Maddock (John_Maddock_at_[hidden])
Date: 2002-01-20 06:45:52

>It is necessary, though, that the library authors maintain a coherent
>version number. Not knowing any better, I tend to pick the libtool
>scheme of CURRENT, REVISION, and AGE. This is reasonably-well documented
>I'm sure it sounds like I'm trying to push libtool on you; I'm not.
>It's just that it is the library-building tool with which I am familiar
>and the libtool authors have researched shared lib building and
>cross-platform issues way better than I have. It doesn't matter to
>me how the libraries are ultimately built. It matters to me that
>they have a workable versioning scheme.

At the risk of throwing cold water all over the place, one reason that I've
always avoided version numbering shared libraries with the regex code is
that it's not at all clear to me that it's possible to maintain binary
compatibility in C++. In C it's pretty obvious if you do anything to break
binary compatibility, it's not clear to me what in C++ breaks compatibility
and what doesn't, particularly when the library contains template instances
*and* the compiler does link-time template instantiation. I would guess
that one would have to ensure that the library always contained the same
template instances - probably by doing explicit template instantiation - I
for one don't want to go into that level of detail. It is also apparent to
me that at least one commercial vendor of C++ libraries (Rogue Wave) never
assume that updated versions of their standard lib are binary compatible
with previous versions, I would be interested to know if anyone has ever
maintained binary compatibility with in C++ libraries as complex as boost.
So the question is, if binary compatibility is effectively impossible, what
do we do? Increment the major version number with every boost release?
Remember that even if I think that regex hasn't changed, something it
depends upon (shared pointer for eg) may have :-(

If we increment the version number with every release then we may as well
just mangle the library name with the boost version number, as go down the
libtool route?

- John Maddock

Boost list run by bdawes at, gregod at, cpdaniel at, john at