
On Thu, Apr 24, 2008 at 12:37:09PM +0200, Sebastian Redl wrote:
Jens Seidel wrote:
On Thu, Apr 24, 2008 at 09:14:25AM +0400, Vladimir Prus wrote:
2. If application link to 1.35.0 as dynamic library, then switching them to use 1.35.1 should not break anything.
Since most of Boost's libraries are header-only, that's meaningless for them. Mostly, anyway.
Right!
ABI compatibility is to be maintained by the compiled libraries foremost, they would have to worry about this the most. It can be done with a bit of understanding of the issues and some discipline.
Indeed. I think even changing a public function (ahm, method) from int f() to int f(int c=0) would create a ABI but no API conflict. One has to be careful.
The question is, is it worth it?
I'm very sure it is!
Any application that uses a precompiled Boost component probably uses other Boost components, too. As such, the
OK.
likelihood is high that upgrading Boost means recompiling the application.
Please explain this! Probably you mean that beside Boost libraries also parts of Boost are used which are provided in headers only? Now you assume that one has to recompile to gain from the header only parts? This is right but you forgot (if my assumptions are true) that there is a much more likely case: Every Linux or *BSD distribution (and probably also Cygwin and Fink) contains Boost and applications linked against it. Now assume the Boost maintainer in this distribution wants to update Boost. With a stable ABI the maintainer just uploads a new version of Boost and that's all. Without a stable ABI the maintainer either has to keep the old Boost library (or better librar*ies* in this case) and provide just another version or the upload of a new Boost version requires a coordinated upload with all recompiled programs and libraries which depend on Boost. This is a very big mess!!!! Debian currently discusses to install multiple versions of Boost. Currently libboost-dev installs it's header files in the standard search path /usr/include/boost/*.h. This has to change to support multiple versions and every program which uses Boost requires updates if no link to a default version is created. Such transitions are very time consuming (there could be hundreds of programs affected). For Debian: $ grep-dctrl -FBuild-Depends,Build-Depends-Indep -s Package libboost-dev -n /var/lib/apt/lists/*_Sources ... d4x dc-qt debian-xcontrol deluge-torrent enblend encfs evolvotron exmap fslview geordi glob2 gnash gnuradio gpsdrive inkscape ... That are 50 packages (strange, I expected many more).
Thus, keeping the ABI is kind of pointless.
No, it isn't. I remember also postings (on this list or on a Debian one) that some programs do not intent to use Boost because of no stable API/ABI. Jens