Boost logo

Boost :

From: Matt Borland (matt_at_[hidden])
Date: 2023-02-04 14:52:39


On Sat, Feb 4, 2023 at 04:46, Andrey Semashev via Boost <boost_at_[hidden]> wrote:

> On 2/4/23 15:08, Peter Dimov via Boost wrote:
>> Greetings,
>>
>> I have a novel idea, let's drop C++03 support.
>>
>> The reasons to do that have been explicated already
>> a number of times, e.g. in
>>
>> https://pdimov.github.io/articles/phasing_out_cxx03.html#_ongoing_costs_of_maintaining_c03_support
>>
>> but in brief:
>>
>> * C++03 is 20 years old.
>> * A number of intra-Boost dependencies can be
>> eliminated by using the standard equivalent of
>> Boost components. This will help Boost to become
>> "more modular".
>> * Variadic templates allow us to remove the uses
>> of Preprocessor and MPL, which are the primary
>> contributor to slow Boost compilation times.
>> * Almost no new C++03 development occurs in
>> Boost at this point, so C++03 users do not need
>> to upgrade their Boost.
>>
>> To that end, I propose the following:
>>
>> Boost release 1.82.0 is announced as the last one
>> with C++03 support. If critical problems are found
>> in it post-release, we will issue 1.82.1, 1.82.2 and
>> so on, as appropriate (as C++03 users will not be
>> able to just upgrade to 1.83.)
>
> For this to be possible, a separate set of branches need to be created
> for each library and the superproject. Possibly, CI scripts needs to be
> updated to test the new branches.
>
> Also, I suggest we name the first Boost version that requires C++11 as
> Boost 2.0 and the C++03-compatible releases continue to be 1.x. The
> compiled binaries for 2.x should be named differently from 1.x, i.e. add
> a new tag in 2.x binaries. This will make it easier for downstream
> consumers to ship 2.x and 1.x releases side by side, should it be
> needed. Point releases may not be convenient for downstream since, for
> example, Debian dev packages for Boost are named as
> libboost-math1.74-dev (no point version).
>
>> Boost release 1.83.0 is announced to require C++11
>> at minimum. This means compilers that have all the
>> C++11 standard headers, and support all the C++11
>> syntactic constructs and keywords without issuing
>> errors. (E.g. VS2013 doesn't qualify because it doesn't
>> support the `constexpr` or `noexcept` keywords.)
>
> For gcc, the minimum version would be 4.8.1:
>
> https://gcc.gnu.org/projects/cxx-status.html#cxx11
>
> For clang, it's 3.3:
>
> https://clang.llvm.org/cxx_status.html#cxx11
>
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

When we were converting Math to C++11 we found that the practical minimum for GCC was 5. If I remember correctly GCC 4.8 series <type_traits> support is broken. We don’t have any Clang earlier than 5 in the CI system either.

Matt


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