Boost logo

Boost :

Subject: Re: [boost] [parameter] Go C++11 and above only, or keep C++03 support?
From: Andrey Semashev (andrey.semashev_at_[hidden])
Date: 2018-11-03 14:35:06


On 11/3/18 5:17 PM, Andrey Semashev wrote:
> On 11/3/18 4:21 PM, degski wrote:
>> On Sat, 3 Nov 2018 at 14:41, Andrey Semashev via Boost
>> <boost_at_[hidden] <mailto:boost_at_[hidden]>> wrote:
>>
>>     On 11/3/18 2:47 PM, Cromwell Enage via Boost wrote:
>>      > Hello, Andrey.
>>      >
>>      > It's possible to retain the old code for C++03 compilers.  Which
>>     ones do
>>      > your library users have?
>>
>>     I don't have this data. Boost.Log is documented to support gcc since
>>     4.5
>>     and MSVC since 8.0 SP1. It might be ok to raise the minimum
>> requirement
>>     a bit, if it makes it easier to support in Boost.Parameter and other
>>     lower level libraries, but switching sraight to C++11 might be big
>> deal
>>     for users.
>>
>>
>> The following question has been asked many times by many posters and
>> there never is an answer: "Those users who want to stick to the old
>> ways of doing things and like to use unsafe compilers [Meltdown,
>> Spectre come to mind], why can't they just use old versions of Boost?"
>
> As it was answered, also many times: because we don't do support
> releases. Basically, if a bug is discovered, our recommendation is
> always "use a more recent Boost release". Of course, users can apply
> patches to their versions of Boost but this is a significant maintenance
> burden and may not be acceptable to everyone.
>
> Having new features and libraries might also be desirable. That the
> user's code base is C++03 doesn't necessarily mean it doesn't evolve.
>
>> There was, as far as I read it, considerable support to at least move
>> to C++11, which is already 2 standards behind the current standard
>> [and is by now fully supported on the main platforms]. Whatever is
>> documented is not relevant, if the docs are out of date, they have to
>> be updated. If every time this kind of question pops up, the answer
>> is, "let's keep backward compatibility", then when are we gonna move
>> to a newer standard? Or to put it differently, a direct question to
>> you Andrey, at which point in time [which new std, 20, 23, 26, 29,
>> 32???] do you think it will be opportune to move to C++11 and break
>> with C++98 [because doing nothing will always be easier]?
>
> If by "move" you mean actively stripping Boost from C++03 support then
> probably never. But as far as I'm concerned, Boost has moved to C++11
> and later as soon as the first C++11 was accepted.

That should read "the first C++11 library was accepted".

> At that point in
> time, the rest of Boost, still compatible with C++03, did not disappear
> and stayed relevant. C++03-compatible libraries are still a part of
> Boost and very much relevant, despite how many C++ versions have come out.
>
> Specifically for Boost.Log, it already does use some of the C++11
> features, when available. And I even think it started doing so before
> C++11 was finalized. But I still consider C++03 compatibility a plus
> rather than a minus.
>
> On a personal note, I find this "C++11 holy cow" hype quite a pointless
> waste of breath (or... network bandwidth, I guess). There is no point in
> dropping libraries on the ground of C++03 compatibility, so that's never
> going to happen. Boost never rejected libraries that targeted newer C++
> versions, that's not changing either. Declaring that we're not testing
> C++03 compilers anymore might make sense, but we actually do. So I don't
> quite understand what were the recent discussions about "dropping C++03"
> about. Just stop debating and start writing some great code, guys! Our
> users will be only happy. :)
>
>>     I'm not adamantly against it, not to the point I would
>>     rewrite Boost.Log just to stay C++03 compatible. But it would seem
>> that
>>     the C++11 requirement is not that necessary in Boost.Parameter
>> either -
>>     you can just keep the existing code in C++03 mode it it'll work as
>>     before.
>>
>> I guess, it's always possible to write more code [that's what you ask
>> all maintainers to do] and work around the C++11 specificities?
>
> It's a tradeoff, of course. In some cases, C++11 or whatever might be
> crucial for the library design or functionality. The particular case
> with Boost.Parameter doesn't seem to me like one, so yes, I'd *prefer*
> to keep the compatibility with C++03. If there appears a case that would
> make keeping the support for C++03 unreasonable (in Boost.Parameter or
> elswhere), I will accept it and Boost.Log, by induction, will become
> C++11-only.


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