C++23 is on the way, so maybe it's time for us to raise our minimum to the one version before that. Let's aim for Qt 6.7, because feature-freeze for 6.6 is within one month, and lets us warn our users this is coming.
By this, I mean to: * modify our build system so Qt compiles with -std=c++20 or equivalent * require that user code compiling Qt headers be similarly done * remove the requirement for #if checks for C++17 Standard Library features * make a couple of C++20 features mandatory (see below) Of the C++20 features I currently see a good reason to make mandatory: * feature-test macros (no change: we're already using them) * spaceship operator and <compare> header * char8_t * std::is_constant_evaluated() * constinit * <bit> header * (maybe) designated initialisers * (maybe) constexpr from <algorithm> and <utility> I'm not proposing modules, concepts or coroutines be allowed in our code just yet. I think concepts will be the first of those, but we need to understand how to use them first and how our code will change. I'd love to require std::format and std::source_location, but those don't seem to be ready in the proposed versions above. For this, I'd also like to request we raise our minimum compiler versions to: * GCC 10 (released May 2020) * Clang 10 (released March 2020) * MSVC 2022 that is current today * XCode that is current today Clang and GCC will be, at the time of Qt 6.7's release, just under 4 years old. That should be enough to have been included in any long-term support Linux distribution. Currently, both SLE 15.4 and RHEL/RockyLinux 9 have GCC 13, while Ubuntu 22.04 and Debian 11 (current stable) have GCC 11. Debian will probably release its next stable before Qt 6.7, though whether it'll still upgrade from GCC 12 to 13 I don't know. When we released Qt 6.0, our minimum of GCC 8 was of a lower age, at 2.5 years, so we could reasonably bump our minimum GCC to 11 and still be 6 months more lenient. There are no new features in GCC 11 that we could use without also requiring a more recent Clang. Speaking of Clang, I simply chose a contemporaneous version and one that had a similar feature list. FreeBSD 13-STABLE (13.2) comes with Clang 14, which is much newer. We could raise the minimum if we wanted, but the intersection of features with GCC 10 or 11 doesn't change much; we get std::bit_cast with Clang/libc++ 14, but that's about it. This proposal also drops MSVC 2019 and assumes that users of 2022, like XCode, keep their compilers reasonably up-to-date. That is, that they'll update to the latest at least once in the next 10 months. I don't have access to QNX and INTEGRITY toolchain information, so I'd like to request that they simply match the feature list above, with minimal workarounds. Opinions? -- Thiago Macieira - thiago.macieira (AT) intel.com Cloud Software Architect - Intel DCAI Cloud Engineering
smime.p7s
Description: S/MIME cryptographic signature
-- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development