Boost Libraries and Dropping C++ Language Support
*Boost library authors and maintainers are free to drop support for old C++ standards in their libraries, at any time. * This includes libraries that other Boost libraries depend on. It even includes core libraries like Boost.Core or Boost.Static_Assert. We ask that maintainers do the right thing by all our users (which may include other Boost libraries) by announcing a future breakage *at least two Boost releases in advance*. When that eventual release time arrives, if Boost libraries are broken in older standards modes due to another Boost library dropping support, it will not block the Boost release. This means that we do not need to announce "Boost is dropping C++03" because Boost doesn't "support C++03" now as it is. It means that you, maintainer of Boost.X, should realize that you are free to announce that "Boost.X is dropping C++XY in version 1.Z" as you see fit. Boost in its infancy thrived because its libraries were on the cutting edge. Boost libraries today should similarly not be confined simply because other Boost libraries have chosen to depend on them. Furthermore, as Boost release managers we support authors exercising this freedom, and do not intend to impose any restrictions on what language support they must maintain. We will add a page to the Boost website stating the above formally. -- The release team (Glen Fernandes, Marshall Clow)
Thank you Glen, this is good news for everyone involved. On Wed, Feb 22, 2023 at 3:11 PM Glen Fernandes via Boost-users < boost-users@lists.boost.org> wrote:
*Boost library authors and maintainers are free to drop support for old C++ standards in their libraries, at any time. * This includes libraries that other Boost libraries depend on. It even includes core libraries like Boost.Core or Boost.Static_Assert.
We ask that maintainers do the right thing by all our users (which may include other Boost libraries) by announcing a future breakage *at least two Boost releases in advance*.
When that eventual release time arrives, if Boost libraries are broken in older standards modes due to another Boost library dropping support, it will not block the Boost release.
This means that we do not need to announce "Boost is dropping C++03" because Boost doesn't "support C++03" now as it is.
It means that you, maintainer of Boost.X, should realize that you are free to announce that "Boost.X is dropping C++XY in version 1.Z" as you see fit.
Boost in its infancy thrived because its libraries were on the cutting edge. Boost libraries today should similarly not be confined simply because other Boost libraries have chosen to depend on them.
Furthermore, as Boost release managers we support authors exercising this freedom, and do not intend to impose any restrictions on what language support they must maintain.
We will add a page to the Boost website stating the above formally.
-- The release team (Glen Fernandes, Marshall Clow)
_______________________________________________ Boost-users mailing list Boost-users@lists.boost.org https://lists.boost.org/mailman/listinfo.cgi/boost-users
On 22/02/2023 23:10, Glen Fernandes via Boost wrote:
*Boost library authors and maintainers are free to drop support for old C++ standards in their libraries, at any time. * This includes libraries that other Boost libraries depend on. It even includes core libraries like Boost.Core or Boost.Static_Assert.
To ensure I'm understanding correctly, this means that a core library everybody else depends upon could declare it is dropping support for C++ 17 as that is old, and thereafter all dependent libraries by definition would require C++ 20 as a minimum? Niall
On Thu, Feb 23, 2023 at 9:28 AM Niall Douglas via Boost < boost@lists.boost.org> wrote:
To ensure I'm understanding correctly, this means that a core library everybody else depends upon could declare it is dropping support for C++ 17 as that is old, and thereafter all dependent libraries by definition would require C++ 20 as a minimum?
Correct. The "everybody else" would be given notice two Boost releases (6 months) in advance to fork what they want into their own libraries to maintain compatibility with older standards. Glen
On 23/02/2023 14:29, Glen Fernandes wrote:
On Thu, Feb 23, 2023 at 9:28 AM Niall Douglas via Boost
mailto:boost@lists.boost.org> wrote: To ensure I'm understanding correctly, this means that a core library everybody else depends upon could declare it is dropping support for C++ 17 as that is old, and thereafter all dependent libraries by definition would require C++ 20 as a minimum?
Correct. The "everybody else" would be given notice two Boost releases (6 months) in advance to fork what they want into their own libraries to maintain compatibility with older standards.
I know I've been a strong advocate for a Boost 2.0 which required a minimum of C++ 11 in the past (and I still am), but I'm finding the above freedom a touch too free. Core libraries going to C++ 11 works for me. Core libraries going newer than C++ 11 I'm finding not helpful for a major use case for Boost, which is "whatever the oldest supported RHEL's compiler is". RHEL 7 EOLs in June 2024 and it comes with GCC 4.8. I - and I am sure many if not most Boost users would like Boost core libraries to keep working on GCC 4.8 until June 2024. After that, rock on with GCC 8, which is what RHEL 8 ships with, and it defaults to C++ 14. I assume if a core library announces it intends to go past C++ 11 in the next year if enough people complain here its maintainer could be persuaded to hold off until the end of 2023? Niall
On Thu, Feb 23, 2023 at 10:06 AM Niall Douglas wrote:
I assume if a core library announces it intends to go past C++ 11 in the next year if enough people complain here its maintainer could be persuaded to hold off until the end of 2023?
Anyone is free to try and persuade any maintainer to maintain compatibility with C++11 or any old language standard. You're also free to help any affected library maintainers support any old language standards by volunteering your time with pull requests. Glen
On Thu, Feb 23, 2023 at 4:05 PM Niall Douglas via Boost < boost@lists.boost.org> wrote:
RHEL 7 EOLs in June 2024 and it comes with GCC 4.8.
But you can use official RHEL DTS packages which provide newer compilers too. Which is exactlty what is happening where I work. So even w/o going as far as compiling your own GCC from source, you can (relatively) easily use much newer GCC, in our case 9.1.1 from DTS9 on RHEL7 with C++17. Why be limited to the default system compiler?
On 23/02/2023 15:44, Dominique Devienne wrote:
On Thu, Feb 23, 2023 at 4:05 PM Niall Douglas via Boost
mailto:boost@lists.boost.org> wrote: RHEL 7 EOLs in June 2024 and it comes with GCC 4.8.
But you can use official RHEL DTS packages which provide newer compilers too. Which is exactlty what is happening where I work. So even w/o going as far as compiling your own GCC from source, you can (relatively) easily use much newer GCC, in our case 9.1.1 from DTS9 on RHEL7 with C++17. Why be limited to the default system compiler?
It's not us, it's our customers. And no, they won't use any compiler which isn't the system default. Thus we all await with relish and excitement when RHEL 7 goes EOL, and we can finally wave goodbye to all GCCs before 8. Niall
Niall Douglas wrote:
I know I've been a strong advocate for a Boost 2.0 which required a minimum of C++ 11 in the past
*14
(and I still am), but I'm finding the above freedom a touch too free.
Core libraries going to C++ 11 works for me. Core libraries going newer than C++ 11 I'm finding not helpful for a major use case for Boost, which is "whatever the oldest supported RHEL's compiler is".
Yeah, this "every core library maintainer is sovereign" policy we have on paper is ridiculous and it doesn't match what we do in practice. But each time I make some effort to change our de-facto minimum standard level for core libraries I get this predictable torrent of "it says here in my Boost Policy Compendium that every core library maintainer is sovereign" replies. No, core library maintainers can't just go ahead and make their libraries C++20. They wouldn't be core library maintainers if they did things like that.
On Thu, Feb 23, 2023 at 11:27 AM Peter Dimov via Boost < boost@lists.boost.org> wrote:
No, core library maintainers can't just go ahead and make their libraries C++20. They wouldn't be core library maintainers if they did things like that.
Either Boost library authors who depend on others can reach those agreements via discussions on the list, or they can't. I believe they will act sensibly without enforcement. i.e. Whatever the permissions on paper, I doubt core library maintainers would drop C++14 or C++17 any time soon. I know I won't. In any case the release managers are not going to impose a minimum language standard on those libraries. Glen
On 2/23/23 19:27, Peter Dimov via Boost wrote:
No, core library maintainers can't just go ahead and make their libraries C++20. They wouldn't be core library maintainers if they did things like that.
The moral... obligation (I'm not sure this is the right word) to your users to continue supporting the old C++ standards remains the same regardless of what we do or don't announce Boost-wide. Even if the release managers decided to announce that the next Boost release no longer supports C++03, I would still be reluctant to remove said support from my libraries, as long as I know there are C++03 users. That is until I'm no longer willing to support it, at which point, again, it doesn't matter what release managers say. For this reason I find proposals like this pretty much moot, sorry.
On 2/22/23 3:10 PM, Glen Fernandes via Boost-announce wrote:
Furthermore, as Boost release managers we support authors exercising this freedom, and do not intend to impose any restrictions on what language support they must maintain.
I believe that traditionally, new boost libraries have been required to compile and pass tests using that the latest version of C++. I don't believe that similar requirements on pre-existing boost libraries as C++ evolves ... or am I wrong about this? If a library stops working because it depends upon something that has been deprecated, should the library be suspended from being in boost? I gather not. I'm not advocating for this. I think the stated policy is correct as it stands, but that leaves a few questions unanswered. Generally, library maintainers want their code to survive and usually maintenance is not a huge time suck. If no maintainer is sufficiently interested to follow this policy or if the library is hard to maintain, maybe it's time it should be set aside. Robert Ramey
participants (8)
-
Andrey Semashev
-
Dominique Devienne
-
Emil Dotchevski
-
Glen Fernandes
-
Marshall Clow
-
Niall Douglas
-
Peter Dimov
-
Robert Ramey