|
Boost : |
Subject: Re: [boost] New libraries implementing C++11 features in C++03
From: Nathan Ridge (zeratul976_at_[hidden])
Date: 2011-11-23 15:54:39
> There as a discussion before where a proposition was to have two high
> versions of boost : 1.xx (like the current ones) that would be guaranteed
> to work with C++03 compilers, 2.xx that would require C++11 compilers.
> 1.xx would contain all the libraries but the ones requiring C++11
> 2.xx would contain all the libraries but the but the ones that cannot work
> on a C++11 compiler (I guess none) plus libraries (and versions of
> libraries) requiring C++11.
> Maybe 2.xx could even remove libraries that would be considered obsolete by
> the new standard. That would be too much work I guess.
I like this idea. Here's how I envision it might work:
- At some point, we decide to fork Boost into Boost v1 and Boost v2. This will
probably have to wait until the major compilers have reasonably complete
C++11 support, so we don't have to be backwards-compatible to incomplete
C++11 implementations. Obviously small issues can be worked around, but
the big features should be there. At the moment of the fork, all libraries are
still C++03-compatible.
- Library authors/maintainers who are not interested in C++11 yet can continue
treating the v1 and v2 forks of their libraries as one, making identical changes
to both versions.
- Library authors/maintainers interested in C++11 can start adding C++11
features to their v2 forks, or refactoring their v2 forks to take advantage of
C++11 features (e.g. refactoring Boost.Fusion to use variadic templates).
- For libraries which have started using C++11 in v2, and therefore their v1 and v2
forks are different, all new features and bug fixes would go into the v2 fork only
by default. If it's a bug fix, or a feature that is possible even in the C++03 v1
implementation, and the library maintainer, or someone else, cares to do so,
they can back-port the new feature to the v1 fork.
- For libraries that are obsoleted by C++11, such as Boost.Move or Boost.Tuple,
they would be kept around in v2 until all v2 forks that depend on them have
been refactored to use the C++11 equivalents, at which point they will be
deprecated and ultimately removed. Boost users who have upgraded to v2 have
until this time to refactor their own code to use the C++11 equivalents as well.
- Over time, there will be less and less interested in C++03 support, and the v1
fork will begin to fall into disuse. Ultimately, it too will be deprecated and removed
(this will probably be in 10 years or more, by my guess).
Thoughts?
Regards,
Nate
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk