Primary test compilers in Boost release notes
We have an issue, https://github.com/boostorg/boost/issues/610, that points out that the "Primary test compilers" section in the Boost 1.78 release notes is misleading, because it doesn't actually reflect whether a Boost library works with a specific compiler or not. The specific example cited is Multiprecision. The release notes say that on Linux, the following C++11 GCC compilers are "primary": GCC, C++11: 4.7.3, 4.8.5, 11 However, Multiprecision doesn't work with GCC 4.7.3 or 4.8.5, and likely never will, because these compilers do not actually implement the C++11 standard. (They don't implement reference qualified member functions and don't have a conforming <type_traits> header.) It would be better for everyone involved if the primary test compilers are somewhat aligned with (a) what Boost libraries actually support or require, and (b) what Boost libraries actually test with. The section historically lists what's in our test matrix, but nowadays most libraries depend on CI for testing, specifically on Github Actions (after the untimely death of open source Travis) and Appveyor. There's a fair bit of discussion in the linked issue above, but what I think is reasonable to list as primary test compilers as far as GCC is concerned is something like C++03: 4.8, 4.9, 5 C++11: 4.8(*), 4.9(*), 5 I would start with 4.8, because this is what GHA has on its 18.04 image. C++03 needs to have GCC up to 5 because this is the default -std level for these versions (GCC 6 is -std=c++14 by default), and the system- provided Boost is compiled with the default. 4.8 has enough of C++11 so it's possible for C++11 libraries to support it without much heroics, but we could go either way on this one, hence the asterisk.
Peter Dimov via Boost <boost@lists.boost.org> writes:
There's a fair bit of discussion in the linked issue above, but what I think is reasonable to list as primary test compilers as far as GCC is concerned is something like
C++03: 4.8, 4.9, 5 C++11: 4.8(*), 4.9(*), 5
To add a data point in case it helps with the decision: in build2 we've used the following compiler versions as minimum supported: GCC 4.9 Clang 3.7 MSVC 14.3 This gives a C++14 subset that we found to be reasonably comfortable to work with (move capture and generic lambdas, etc). In particular, we dropped GCC 4.8 because it has an unusable std::regex implementation (which was important for our use-case).
participants (2)
-
Boris Kolpackov
-
Peter Dimov