
Neal Becker wrote:
I think it is a bit unfortunate that we don't have a system to determine whether boost updates break existing api's. The usual process is that, for example, suppose we have
libboost.so.1.33.0
Let's assign this soname libboost.so.1. Then a symlink is created
libboost.so.1 -> libboost.so.1.33.0.
Now if a bugfix comes out that does not change the api, be can have
libboost.so.1.33.1, which also has soname libboost.so.1, and then symlink:
libboost.so.1 -> libboost.so.1.33.1
OK, so that's the background. AFAICT, we (boost) don't have any way to tell if a new release breaks existing api, and whether to up the version. I think that is unfortunate. I don't really know what to do about it, though.
Shared libraries are typically versioned as <major>.<minor>.<patch>, and the semantics of these are tied to ABI/API compatibility. That is, every ABI change has to be accounted for by an increment in the major version number. That is how these links above as well as the embedded sonames are supposed to work. Boost right now seems to equate library versions and release versions, which certainly adds to the confusion. Then, the name '1.33' somehow suggests two levels of versions, while really there is only one (by the way: why do you carry the '1.' around ? Do you expect a 'release 2' at some point ? If so, in what way would such a release be different from an upgrade from 1.32 to 1.33, say ?) Regards, Stefan