[Development] Raising the minimum to C++20
Philippe
philwave at gmail.com
Wed May 3 18:23:53 CEST 2023
>> <bit> header
Not yet available with Apple CLang (I did not test today, but a fews ago).
Philippe
On Tue, 02 May 2023 17:39:01 -0700
Thiago Macieira <thiago.macieira at intel.com> wrote:
> 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
More information about the Development
mailing list