Boost logo

Boost :

Subject: Re: [boost] C++03 / C++11 compatibility question for compiled libraries
From: Edward Diener (eldiener_at_[hidden])
Date: 2018-02-19 18:30:52


On 2/19/2018 4:51 AM, Mike via Boost wrote:
> Hello everyone,
> I hope it is ok, for me as a non-boost-dev, to chime in here.
> What I generally expect " dropping c++03 support" to mean are the
> following things:
> - Any library may start to use c++11 features at any point without
> prior announcement and/or without having to wait a few releases (I.e.
> it is no longer considered a breaking change).

I think that it is a breaking change in that end-users who previously
compiled in C++03 mode when using such a library can no longer do so. Of
course if Boost wants to tell end-users that compiling any particular
library in C++03 mode is no longer guaranteed to work, even if it has
worked previously, then this would not longer be a breaking change.

> - c++03 builds are removed from the test matrices

The test matrices are up to those contributing them. If you would like
to suggest to them that testing in C++03 mode is wasteful, please feel
free to do so.

> - Compilation paths that are c++03 only can be removed (thus
> simplifying the code base and future refactoring/development)

Any library developer can always do this now as a potential breaking change.

> - My hope (obviously no one can or should force a volunteer to do
> anything) is that - where applicable - libraries start to replace boost
> types & functions that have been merged into the c++11 standard with
> their std equivalent or the equivalent c++11 language feature.

Using std versus boost libraries is almost always equivalent to working
only in C++11 mode or above.

> - In the long run, libraries that have been fully merged into c++11
> could be deprecated and removed all together.

What does "fully merged into c++11" mean ? Requires C++11 mode to work ?
If a library which previously worked in C++03 mode is changed so that it
requires C++11 mode on up, why would you want to remove or deprecate it ?

> Just to be clear: Dropping c++03 support doesn't mean a developer is
> forced to use c++11 constructs (if we ignore the potential future
> removal of boost libraries) - it primarily means that a user can no
> longer rely on the lib being usable in c++03 mode.

OK, at least this is your definition of what "dropping support for
C++03" means.

> And yes, this could be done on a per library basis, but especially
> older boost libraries are so tightly coupled that such decisions affect
> a lot of other libraries anyway. So my guess is that very few
> maintainers would dare to drop c++03 support as long as that hasn't
> been deemed acceptable by larger parts of the boost community.j

The problem with your definition of "dropping support for C++03" is that
end-users of Boost libraries need to be told that Boost no longer can
guarantee that a library which currently works in C++03 mode will
continue to do so. This announcement as I see it would have to be
determined by the Boost Steering Committee and announced on the website,
as a minimum. I am not personally against doing so, but I am also glad I
am not involved in any way ofd making such a decision. I am personally
against dropping libraries from Boost just because they happen to work
in C++03 mode, when that library also works fine in C++11 mode on up.

> Best regards
> Mike
> --
> Diese Nachricht wurde von meinem Android Mobiltelefon mit GMX Mail
> gesendet.


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