GCC 14.1 has been released, and it should come as no surprise that the new features are not exactly something I, someone who doesn’t program, can properly parse. So, here’s the three items GCC itself thought were important to list first.
The C frontend when targeting standards newer than C89 now considers many non-standard constructs as errors that were previously only warnings. See https://gcc.gnu.org/gcc-14/porting_to.html#warnings-as-errors for more details. C23 _BitInt Bit-precise integer types are now supported, for now only on IA-32, x86-64 and AArch64.
The C++ frontend now implements several C++26 features, some missing C++23 bits and defect report resolutions. Diagnostics involving C++ templates now quote source from the instantiation context.
The libstdc++exp.a library now includes all symbols for the Filesystem TS and the experimental symbols for the C++23 std::stacktrace class, so -lstdc++exp can be used instead of -lstdc++fs. The libstdc++_libbacktrace.a library is not longer installed. Improved experimental support for C++20, C++23, and C++26. Updated parallel algorithms that are compatible with oneTBB.
↫ GCC 14.1 release announcement
GCC 14.1 is available for download, of course, but most of us will get it once it hits our distribution’s package repositories.
>>> … the new features are not exactly something I, someone who doesn’t program, can properly parse….
>>> The C frontend when targeting standards newer than C89 now considers many non-standard constructs as errors that were previously only warnings.
Consider the following scenario. You have code that is written with some non-standard construct.
You build it with gcc version N, get warning, run some tests, publish it. Now, you want to upgrade
your compiler to the new version 14.1. You cannot do this transparently because the build process
fails. You have basically two options: re-write the block with those non-standard stuff, or remain with
the existing compiler version.
The one and only toolchain.
I’m glad to see an important FOSS program progressing. 🙂
The C frontend when targeting standards newer than C89 now considers many non-standard constructs as errors that were previously only warnings
This is nice. 🙂 Clean up the garden!