There has been some confusion and back-and-forth about compiler requirements and C++20 features we can use in code. See comments in #5070 and #5083 for example.
We already made the move to C++20 in #4997 on February 20. There was no negative feedback at that time, but plenty of positive feedback. The PR also stated that while gcc 12 would likely be sufficient initially, gcc 14 would be needed eventually. Following this, some refactoring to use std::ranges was also performed, and no problems were reported.
However std::format has caused concern for users of gcc 12, which does not support that. And using a new compiler is as far as I understand not simply a question of apt-get new compiler, but requires operating system upgrade for popular distros like Ubuntu (where our support is stated as the last two LTS versions, meaning 24.04 and 26.04 for our upcoming 2026.04 release) or debian (which we do not formally support, but in practice have done, especially as we use it for the Jenkins server).
It is understandable that one wants to postpone for as long as possible upgrading, which is disruptive to daily work. In the interest of minimizing disruption I suggest the following:
- We hold back on using C++20 features that are unsupported in gcc 12 (such as std::format) until after the upcoming release branches have been created. This should happen quite soon, although a timeline for the release has not been decided yet. After that point we do allow gcc 14 supported features in the main branches (but not in the release). That way the release may be compiled with gcc 12.
- The upcoming release will still NOT officially support Ubuntu 22.04, but bump as usual (outlined above).
- If we discover any clang-related issue we bring them up as needed, at this point I am not aware of any. And the problem caused by the tight coupling of distro and compiler version does not apply to clang users to the same extent, I believe.
There has been some confusion and back-and-forth about compiler requirements and C++20 features we can use in code. See comments in #5070 and #5083 for example.
We already made the move to C++20 in #4997 on February 20. There was no negative feedback at that time, but plenty of positive feedback. The PR also stated that while gcc 12 would likely be sufficient initially, gcc 14 would be needed eventually. Following this, some refactoring to use std::ranges was also performed, and no problems were reported.
However std::format has caused concern for users of gcc 12, which does not support that. And using a new compiler is as far as I understand not simply a question of apt-get new compiler, but requires operating system upgrade for popular distros like Ubuntu (where our support is stated as the last two LTS versions, meaning 24.04 and 26.04 for our upcoming 2026.04 release) or debian (which we do not formally support, but in practice have done, especially as we use it for the Jenkins server).
It is understandable that one wants to postpone for as long as possible upgrading, which is disruptive to daily work. In the interest of minimizing disruption I suggest the following: