Let's discuss dropping support for msvc <= 9.0 (2008), gcc < 4.6, clang < 3.4
During the Boost 1.69.0 release there was a regression on Visual Studio 2005 (msvc-8.0). Microsoft ended support for msvc-8.0 on December 4, 2016. I was going to argue we let it happen, but it wasn't the right time to discuss that sort of change. Boost has a very large compatibility matrix which increases the effort required, and sometimes limits solutions development, to get out a quality release. The boost project as a whole agreed in summer 2018 that if repository maintainers wanted to drop C++03 support per repository to make substantial improvements or simplifications, or to ease maintenance then they are able to do so. *Folks who need support for older language levels and older compilers can always download an older version of Boost.* The compilers I mentioned in the subject have trouble with C++11 and are no longer maintained. msvc-8.0 (Visual Studio 2005) ended support Dec 10 2016 msvc-9.0 (Visual Studio 2018) ended support April 10 2018 The last release of gcc 4.6 was April 12, 2013 The last release of gcc 4.5 was July 02, 2012 The last release of gcc 4.4 was March 13, 2012 The compilers by default in Ubuntu Trusty 14.04.5 LTS, supported through April 2019, is gcc-4.8, currently at gcc-4.8.2, and clang 3.4 (however clang-3.8 is available). My argument is that this is a huge project, and maintaining backwards compatibility is not always efficiently possible. We spend build matrix resources testing and analyzing those tests. We find and develop fixes and workarounds. In some cases we hobble potential solutions to cater to decade-old compilers. Given the summer 2018 discussions about language level, and the aging vendor support matrix, I'd like us to consider dropping support for msvc <= 9.0 (2008), gcc < 4.6, clang < 3.4. What does this mean exactly? 1. We no longer test these compilers in the post-commit build matrix. 2. We no longer test these compilers in continuous integration. 3. We no longer develop fixes for issues that affect these compilers. 4. We are allowed, over time, to remove workarounds for these compilers. 5. We no longer block releases due to incompatibility with these compilers. 6. We remove these compilers from the documented environments in the release notes. 7. We direct anyone looking for support of these compilers to download a previous release of Boost that given them that support. 8. We do not update older Boost releases to fix issues with older compiler support. What would we remove from the release notes as a result? primary: linux: clang: c++03: 3.0 c++0x: 3.0 c++11: 3.0, 3.1, 3.2, 3.3 gcc: c++03: 4.4.7, 4.5.3 c++0x: 4.4.7 windows: gcc: c++03: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4 msvc: - msvc-7.0 (Visual C++ 7.1) - msvc-8.0 (Visual Studio 2005) - msvc-9.0 (Visual Studio 2008) additional: linux: clang: c++03: 3.0, 3.8.1, 3.9.1, 4.0.1 c++0x: 3.0 c++11: 3.0, 3.1, 3.2, 3.3 gcc: c++03: 4.4.7, 4.5.3 c++0x: 4.4.7 windows: gcc: c++03: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4 msvc: - msvc-7.0 (Visual C++ 7.1) - msvc-8.0 (Visual Studio 2005) - msvc-9.0 (Visual Studio 2008) The release notes section on compiler compatibility should probably be updated to match the current state of the post-commit matrix and duplicates in the "additional" section that are present in the "primary" section should be removed, or simply merge them. Why do we have a distinction here? Thanks for your consideration, Jim
On 12/12/18 6:53 AM, James E. King III via Boost wrote:
During the Boost 1.69.0 release there was a regression on Visual Studio 2005 (msvc-8.0). Microsoft ended support for msvc-8.0 on December 4, 2016. I was going to argue we let it happen, but it wasn't the right time to discuss that sort of change.
Boost has a very large compatibility matrix which increases the effort required, and sometimes limits solutions development, to get out a quality release. The boost project as a whole agreed in summer 2018 that if repository maintainers wanted to drop C++03 support per repository to make substantial improvements or simplifications, or to ease maintenance then they are able to do so. *Folks who need support for older language levels and older compilers can always download an older version of Boost.*
<snip> If we consider boost more of a federation of libraries rather than one large "library", then we can just leave the decision of level of support up to the lean maintainer. Boost has required that libraries support the latest C++ standard. Anything other than that is optional. So I don't believe that this requires forming any consensus. Robert Ramey
On 2018-12-12 10:30 a.m., Robert Ramey via Boost wrote:
On 12/12/18 6:53 AM, James E. King III via Boost wrote:
During the Boost 1.69.0 release there was a regression on Visual Studio 2005 (msvc-8.0). Microsoft ended support for msvc-8.0 on December 4, 2016. I was going to argue we let it happen, but it wasn't the right time to discuss that sort of change.
Boost has a very large compatibility matrix which increases the effort required, and sometimes limits solutions development, to get out a quality release. The boost project as a whole agreed in summer 2018 that if repository maintainers wanted to drop C++03 support per repository to make substantial improvements or simplifications, or to ease maintenance then they are able to do so. *Folks who need support for older language levels and older compilers can always download an older version of Boost.*
<snip>
If we consider boost more of a federation of libraries rather than one large "library", then we can just leave the decision of level of support up to the lean maintainer. Boost has required that libraries support the latest C++ standard. Anything other than that is optional. So I don't believe that this requires forming any consensus.
I agree. However, given that at present a lot of effort is put into testing Boost as a whole, I think it makes sense to ask whether this is a good point to drop testers running with obsoleted compiler versions. Stefan -- ...ich hab' noch einen Koffer in Berlin...
On 12/12/18 11:01 AM, stefan via Boost wrote:
Anything other than that is optional. So I don't believe that this requires forming any consensus.
I agree. However, given that at present a lot of effort is put into testing Boost as a whole, I think it makes sense to ask whether this is a good point to drop testers running with obsoleted compiler versions.
By the same token, testers can test whatever they want to. That is, that is most useful to them.
Stefan
--
...ich hab' noch einen Koffer in Berlin...
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 2018-12-12 3:39 p.m., Robert Ramey via Boost wrote:
On 12/12/18 11:01 AM, stefan via Boost wrote:
Anything other than that is optional. So I don't believe that this requires forming any consensus.
I agree. However, given that at present a lot of effort is put into testing Boost as a whole, I think it makes sense to ask whether this is a good point to drop testers running with obsoleted compiler versions.
By the same token, testers can test whatever they want to. That is, that is most useful to them.
What is your point ? Stefan -- ...ich hab' noch einen Koffer in Berlin...
On 12/12/18 12:53 PM, stefan via Boost wrote:
On 2018-12-12 3:39 p.m., Robert Ramey via Boost wrote:
On 12/12/18 11:01 AM, stefan via Boost wrote:
Anything other than that is optional. So I don't believe that this requires forming any consensus.
I agree. However, given that at present a lot of effort is put into testing Boost as a whole, I think it makes sense to ask whether this is a good point to drop testers running with obsoleted compiler versions.
By the same token, testers can test whatever they want to. That is, that is most useful to them.
What is your point ?
I don't think we have the means or authority to "drop testers" so I don't think we need to spend time trying to reach a consenus on it Robert Ramey
Stefan
--
...ich hab' noch einen Koffer in Berlin...
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
AMDG On 12/12/2018 03:35 PM, Robert Ramey via Boost wrote:
On 12/12/18 12:53 PM, stefan via Boost wrote:
On 2018-12-12 3:39 p.m., Robert Ramey via Boost wrote:
On 12/12/18 11:01 AM, stefan via Boost wrote:
Anything other than that is optional. So I don't believe that this requires forming any consensus.
I agree. However, given that at present a lot of effort is put into testing Boost as a whole, I think it makes sense to ask whether this is a good point to drop testers running with obsoleted compiler versions.
By the same token, testers can test whatever they want to. That is, that is most useful to them.
What is your point ?
I don't think we have the means or authority to "drop testers" so I don't think we need to spend time trying to reach a consenus on it
Testers for 'master' are whitelisted, so they actually can be dropped (Note that I'm not suggesting that this is desirable, only that there are no technical difficulties.). Also it's not like we have no influence over the testers. It's just that instead of deciding by consensus, we would need to convince Tom and Ion. In Christ, Steven Watanabe
On Wed, Dec 12, 2018 at 5:07 PM Steven Watanabe via Boost < boost@lists.boost.org> wrote:
AMDG
On 12/12/2018 03:35 PM, Robert Ramey via Boost wrote:
On 12/12/18 12:53 PM, stefan via Boost wrote:
On 2018-12-12 3:39 p.m., Robert Ramey via Boost wrote:
On 12/12/18 11:01 AM, stefan via Boost wrote:
Anything other than that is optional. So I don't believe that this requires forming any consensus.
I agree. However, given that at present a lot of effort is put into testing Boost as a whole, I think it makes sense to ask whether this is a good point to drop testers running with obsoleted compiler versions.
By the same token, testers can test whatever they want to. That is, that is most useful to them.
What is your point ?
I don't think we have the means or authority to "drop testers" so I don't think we need to spend time trying to reach a consenus on it
Testers for 'master' are whitelisted, so they actually can be dropped (Note that I'm not suggesting that this is desirable, only that there are no technical difficulties.).
Also it's not like we have no influence over the testers. It's just that instead of deciding by consensus, we would need to convince Tom and Ion.
I'm convinced. I've just updated my tester scripts to remove: msvc-8.0, msvc-9.0 gcc-4.4, gcc-4.5 clang-3.0, clang-3.1, clang-3.2, clang-3.3 https://github.com/teeks99/boost-build/commit/c6127f2af75cb35c5d25b6494ac3d4... Additionally, I've updated the windows binary release build scripts to remove: msvc-8.0, msvc-9.0 https://github.com/teeks99/boost-release-windows/commit/5e31fa27cccb08095947... Tom
Also it's not like we have no influence over the testers. It's just that instead of deciding by consensus, we would need to convince Tom and Ion.
I recently discussed I'll drop GCC < 4.3 and MSVC < 9.0 in Boost 1.70 in my libraries (all compilers released ten years ago). More details on: http://boost.2283326.n4.nabble.com/container-interprocess-intrusive-move-Rem... I'll start removing old compiler runners in a few days. Best. Ion PS: In any case, my runners have completed tests but I don't see them updated in the master matrix: # Processing test log "c:\boost\master\results\boost-build-msvc-7.1\test_log.xml" # Done writing "c:\boost\master\results\igaztanaga-master-msvc-7.1.xml". # Compressing "c:\boost\master\results\igaztanaga-master-msvc-7.1.xml"... # Done writing "c:\boost\master\results\igaztanaga-master-msvc-7.1.zip". # Uploading log archive "c:\boost\master\results\igaztanaga-master-msvc-7.1.zip" to master END 13/12/2018 2:58:31,64
Am 12.12.18 um 21:39 schrieb Robert Ramey via Boost:
On 12/12/18 11:01 AM, stefan via Boost wrote:
Anything other than that is optional. So I don't believe that this requires forming any consensus.
I agree. However, given that at present a lot of effort is put into testing Boost as a whole, I think it makes sense to ask whether this is a good point to drop testers running with obsoleted compiler versions.
By the same token, testers can test whatever they want to. That is, that is most useful to them.
There is a test matrix for Boost as a whole, right? It is documented publicly which exact compiler versions are tested for Boost as a whole. I'm very much in favor of this proposal: It is clear and even has defined "what it means" which avoids what happened to "dropping C++03" or "Support CMake": - Clean up build matrix of Boost super project - Change documentation accordingly - Of course individual libraries are free to do what they want IN ADDITION to those "officially supported" versions, but they don't have to So I think "We no longer block releases due to incompatibility with these compilers." is the key. Am I right, that currently Boost builds in all configurations stated in the release notes? And that a failure on one in one library will be considered a bug (Exception: C++AA libs which are only build on C++AA+)? This would contradict "Anything other than that [Latest C++/Compiler version] is optional." Alex
Wouldn't dropping gcc 4.6 drop support for RHEL 7.x? That might cause some off-the-wall problems for some users. Can anyone speak to this with any more knowledge? On 12/12/18 9:53 AM, James E. King III via Boost wrote:
During the Boost 1.69.0 release there was a regression on Visual Studio 2005 (msvc-8.0). Microsoft ended support for msvc-8.0 on December 4, 2016. I was going to argue we let it happen, but it wasn't the right time to discuss that sort of change.
Boost has a very large compatibility matrix which increases the effort required, and sometimes limits solutions development, to get out a quality release. The boost project as a whole agreed in summer 2018 that if repository maintainers wanted to drop C++03 support per repository to make substantial improvements or simplifications, or to ease maintenance then they are able to do so. *Folks who need support for older language levels and older compilers can always download an older version of Boost.*
The compilers I mentioned in the subject have trouble with C++11 and are no longer maintained.
msvc-8.0 (Visual Studio 2005) ended support Dec 10 2016 msvc-9.0 (Visual Studio 2018) ended support April 10 2018 The last release of gcc 4.6 was April 12, 2013 The last release of gcc 4.5 was July 02, 2012 The last release of gcc 4.4 was March 13, 2012 The compilers by default in Ubuntu Trusty 14.04.5 LTS, supported through April 2019, is gcc-4.8, currently at gcc-4.8.2, and clang 3.4 (however clang-3.8 is available).
My argument is that this is a huge project, and maintaining backwards compatibility is not always efficiently possible. We spend build matrix resources testing and analyzing those tests. We find and develop fixes and workarounds. In some cases we hobble potential solutions to cater to decade-old compilers.
Given the summer 2018 discussions about language level, and the aging vendor support matrix, I'd like us to consider dropping support for msvc <= 9.0 (2008), gcc < 4.6, clang < 3.4. What does this mean exactly?
1. We no longer test these compilers in the post-commit build matrix. 2. We no longer test these compilers in continuous integration. 3. We no longer develop fixes for issues that affect these compilers. 4. We are allowed, over time, to remove workarounds for these compilers. 5. We no longer block releases due to incompatibility with these compilers. 6. We remove these compilers from the documented environments in the release notes. 7. We direct anyone looking for support of these compilers to download a previous release of Boost that given them that support. 8. We do not update older Boost releases to fix issues with older compiler support.
What would we remove from the release notes as a result?
primary: linux: clang: c++03: 3.0 c++0x: 3.0 c++11: 3.0, 3.1, 3.2, 3.3 gcc: c++03: 4.4.7, 4.5.3 c++0x: 4.4.7 windows: gcc: c++03: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4 msvc: - msvc-7.0 (Visual C++ 7.1) - msvc-8.0 (Visual Studio 2005) - msvc-9.0 (Visual Studio 2008) additional: linux: clang: c++03: 3.0, 3.8.1, 3.9.1, 4.0.1 c++0x: 3.0 c++11: 3.0, 3.1, 3.2, 3.3 gcc: c++03: 4.4.7, 4.5.3 c++0x: 4.4.7 windows: gcc: c++03: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4 msvc: - msvc-7.0 (Visual C++ 7.1) - msvc-8.0 (Visual Studio 2005) - msvc-9.0 (Visual Studio 2008)
The release notes section on compiler compatibility should probably be updated to match the current state of the post-commit matrix and duplicates in the "additional" section that are present in the "primary" section should be removed, or simply merge them. Why do we have a distinction here?
Thanks for your consideration,
Jim
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
On 12/12/2018 16:55, jrmarsha via Boost wrote:
Wouldn't dropping gcc 4.6 drop support for RHEL 7.x? That might cause some off-the-wall problems for some users. Can anyone speak to this with any more knowledge?
RedHat and CentOS 7.x and 6.x have devtoolset-7, and now devtoolset-8 since a few weeks back, which provide GCC 7.x and 8.x, respectively. They are binary compatible with the toolchain and libstdc++ of the base system, and so can be used as a drop-in replacement. I've been using the older devtoolset-4 and newer devtoolset-7 for years, and I'll be upgrading to devtoolset-8 in the next few weeks (not yet available via yum for CentOS, but will be in the next few days I expect). In consequence, dropping GCC 4.x does not preclude using a new Boost on RHEL. Regards, Roger
On 12/12/2018 18:08, Roger Leigh via Boost wrote:
On 12/12/2018 16:55, jrmarsha via Boost wrote:
Wouldn't dropping gcc 4.6 drop support for RHEL 7.x? That might cause some off-the-wall problems for some users. Can anyone speak to this with any more knowledge?
RedHat and CentOS 7.x and 6.x have devtoolset-7, and now devtoolset-8 since a few weeks back, which provide GCC 7.x and 8.x, respectively. They are binary compatible with the toolchain and libstdc++ of the base system, and so can be used as a drop-in replacement. I've been using the older devtoolset-4 and newer devtoolset-7 for years, and I'll be upgrading to devtoolset-8 in the next few weeks (not yet available via yum for CentOS, but will be in the next few days I expect).
In consequence, dropping GCC 4.x does not preclude using a new Boost on RHEL.
Official compiler for building packages in RHEL 6 is GCC 4.4 AFAIK Best, Ion
On Wed, Dec 12, 2018 at 5:56 PM jrmarsha via Boost
Wouldn't dropping gcc 4.6 drop support for RHEL 7.x? That might cause some off-the-wall problems for some users. Can anyone speak to this with any more knowledge?
4.6 is not < 4.6... so James is not proposing to drop 4.6.
On 12/12/2018 9:53 AM, James E. King III via Boost wrote:
During the Boost 1.69.0 release there was a regression on Visual Studio 2005 (msvc-8.0). Microsoft ended support for msvc-8.0 on December 4, 2016. I was going to argue we let it happen, but it wasn't the right time to discuss that sort of change.
Boost has a very large compatibility matrix which increases the effort required, and sometimes limits solutions development, to get out a quality release. The boost project as a whole agreed in summer 2018 that if repository maintainers wanted to drop C++03 support per repository to make substantial improvements or simplifications, or to ease maintenance then they are able to do so. *Folks who need support for older language levels and older compilers can always download an older version of Boost.*
The compilers I mentioned in the subject have trouble with C++11 and are no longer maintained.
msvc-8.0 (Visual Studio 2005) ended support Dec 10 2016 msvc-9.0 (Visual Studio 2018) ended support April 10 2018 The last release of gcc 4.6 was April 12, 2013 The last release of gcc 4.5 was July 02, 2012 The last release of gcc 4.4 was March 13, 2012 The compilers by default in Ubuntu Trusty 14.04.5 LTS, supported through April 2019, is gcc-4.8, currently at gcc-4.8.2, and clang 3.4 (however clang-3.8 is available).
My argument is that this is a huge project, and maintaining backwards compatibility is not always efficiently possible. We spend build matrix resources testing and analyzing those tests. We find and develop fixes and workarounds. In some cases we hobble potential solutions to cater to decade-old compilers.
Given the summer 2018 discussions about language level, and the aging vendor support matrix, I'd like us to consider dropping support for msvc <= 9.0 (2008), gcc < 4.6, clang < 3.4. What does this mean exactly?
1. We no longer test these compilers in the post-commit build matrix. 2. We no longer test these compilers in continuous integration. 3. We no longer develop fixes for issues that affect these compilers. 4. We are allowed, over time, to remove workarounds for these compilers. 5. We no longer block releases due to incompatibility with these compilers. 6. We remove these compilers from the documented environments in the release notes. 7. We direct anyone looking for support of these compilers to download a previous release of Boost that given them that support. 8. We do not update older Boost releases to fix issues with older compiler support.
What would we remove from the release notes as a result?
primary: linux: clang: c++03: 3.0 c++0x: 3.0 c++11: 3.0, 3.1, 3.2, 3.3 gcc: c++03: 4.4.7, 4.5.3 c++0x: 4.4.7 windows: gcc: c++03: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4 msvc: - msvc-7.0 (Visual C++ 7.1) - msvc-8.0 (Visual Studio 2005) - msvc-9.0 (Visual Studio 2008) additional: linux: clang: c++03: 3.0, 3.8.1, 3.9.1, 4.0.1 c++0x: 3.0 c++11: 3.0, 3.1, 3.2, 3.3 gcc: c++03: 4.4.7, 4.5.3 c++0x: 4.4.7 windows: gcc: c++03: 3.4.5, 4.1.2, 4.2.4, 4.3.3, 4.4.0, 4.5.4 msvc: - msvc-7.0 (Visual C++ 7.1) - msvc-8.0 (Visual Studio 2005) - msvc-9.0 (Visual Studio 2008)
The release notes section on compiler compatibility should probably be updated to match the current state of the post-commit matrix and duplicates in the "additional" section that are present in the "primary" section should be removed, or simply merge them. Why do we have a distinction here?
Thanks for your consideration,
I do not think that Boost in general needs to support gcc prior to 4.8, vc++ prior to VS2010, and clang prior to 3.8. If there are people still using gcc-4.6, VS2008, or clang 3.7, tough luck to them. There are tons of releases for each compiler after these old versions and they are all much better than what came before them. Giving only the major/minor release numbers for versions we could support: For gcc there is 4.8, 4.9, 5.1, 5.2, 5.3, 5.4, 6.1, 6.2, 6.3, 6.4, 7.1, 7.2, 7.3, 8.1 For vc++ there is 10.0, 11.0, 12.0 14.0, 14.1 For clang there is 3.8, 3.9, 4.0, 5.0, 6.0, 7.0 The problem is always the same. We have long discussions about what Boost should support and the answer is always that individual libraries can support what they want but no general direction can be decided. I put the blame for this on the Boost Steering Committee, which seems to me does little or no steering at all. We went through this about "dropping support for C++03" and even though there was a consensus about what this meant nothing was done, as evidenced by a real case of dropping support for C++03 ( Parameter ) where it was suggested not to do it. We got the whole treatment about supporting CMake without any real decision ever being made about what supporting CMake actually means. We will do the same here and I am pretty sure that nothing will be done other than that each library will do what it wants and the regression testers will do what they want. My point is that we can discuss these issues of support ad nauseam but until there is someone with authority to make a decision who actually makes a decision, nothing will be effected. My personal viewpoint is that while a particular library can support what it wants, someone should have the power to suggest a general direction about Boost and what it should support at the minimum. Then individual libraries can decide to support more if they want. But I do not ever see this happening because those who have the authority to do so do not seem as if they will ever do this. I do not mean to be critical or negative but we have been through this before, to very little purpose.
Jim
On Wed, Dec 12, 2018 at 3:54 PM James E. King III via Boost
Given the summer 2018 discussions about language level, and the aging vendor support matrix, I'd like us to consider dropping support for msvc <= 9.0 (2008), gcc < 4.6, clang < 3.4.
As a reference, the Linux kernel also increased the minimum version to gcc 4.6 last August (i.e. the released Linux 4.19 already requires it). Cheers, Miguel
participants (12)
-
Alexander Grund
-
Edward Diener
-
Ion Gaztañaga
-
James E. King III
-
jrmarsha
-
Miguel Ojeda
-
Olaf van der Spek
-
Robert Ramey
-
Roger Leigh
-
stefan
-
Steven Watanabe
-
Tom Kent