Boost logo

Boost :

Subject: Re: [boost] [Booster] Or boost is useless for library developers
From: Isidor Zeuner (boost_at_[hidden])
Date: 2010-05-15 15:29:34


> Hello Boosters,
>
> Some clarifications:
>
> 1. I do not suggest the way boost works but I do suggest a community
> to think about something like boost stable.
>

I am just doubting that boost is the right place to tackle the ABI
stability issue. Much like I think the build/test system development
is better split out of boost and acquired through CMake, I think ABI
stabilizing also belongs somewhere else: in distributors'
responsibility.

What I would rather like to see in boost would be building blocks
which go better with the dynamic nature of boost development, but
which could become tools for distributors putting together a stable
boost. These could be:

(a) Granular ABI versioning for boost components:

Imagine being able to put a...

int shared_ptr_abi() {
    return boost::shared_ptr<int>::abi_version;
}

..in your shared library, and then checking for compatibility using:

int main() {
    assert(boost::shared_ptr<int>::abi_version == shared_ptr_abi());
    ...

So there are no subtle bugs through ABI changes, but the program just
refuses to work, notifying you about recompiling both components
against the same boost version.

(b) modularization of boost components:

Suppose I have many libraries using boost::shared_ptr in their
exported interface, while boost::asio is used extensively, but none of
its objects are exposed in interfaces. Then I would prefer being able
to upgrade just boost::asio, which would allow me to upgrade libraries
depending on it one by one, and leave the boost::shared_ptr upgrade
out until it becomes feasible to upgrade all the libraries at once.

> Today it is quite feasible to take all tr1 stuff and make it ABI stable
> sacrificing some generality.
>
> This would give very good to C++.
>
> 2. Booster is not a fork of boost but rather small library that allows me
> to get free of boost keeping boost-like API.
>

Maybe "fork" was bad wording considering that the code is not derived
from boost. Still, as it serves as a boost replacement, I am saying
that I would love to see improvements you put there to be put into
boost instead, so they serve a larger audience.

Best regards,

Isidor


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk