Linux 6.16 Now Enforces A Minimum Compiler Version Of GCC 8
([Linux Kernel] 73 Minutes Ago
Compiler Requirement Bump)
- Reference: 0001550395
- News link: https://www.phoronix.com/news/Linux-6.16-Requires-GCC-8-Min
- Source link:
To compile the Linux x86/x86_64 kernel has already enforced a minimum compiler version of GCC 8 while now with Linux 6.16 this requirement is in place for all other architectures. The GCC 8 and GNU Binutils 2.30 baseline for all Linux kernel architectures now allows removing a number of old workarounds from the codebase.
Linus Torvalds merged the change today to universally mandate at least GCC 8 when it comes to the GNU Compiler Collection version needed to compile the Linux kernel. The GCC 8 minimum replaces the prior GCC 5 minimum requirement. The GNU BInutils baseline goes from v2.25 to v2.30. LLVM Clang 13 and newer remains the alternative to GCC for compiling the Linux kernel.
Arnd Bergmann argued in [1]the Git merge the justification for raising the GCC baseline:
"Require gcc-8 and binutils-2.30
x86 already uses gcc-8 as the minimum version, this changes all other architectures to the same version. gcc-8 is used is Debian 10 and Red Hat Enterprise Linux 8, both of which are still supported, and binutils 2.30 is the oldest corresponding version on those.
Ubuntu Pro 18.04 and SUSE Linux Enterprise Server 15 both use gcc-7 as the system compiler but additionally include toolchains that remain supported.
With the new minimum toolchain versions, a number of workarounds for older versions can be dropped, in particular on x86_64 and arm64. Importantly, the updated compiler version allows removing two of the five remaining gcc plugins, as support for sancov and structeak features is already included in modern compiler versions.
I tried collecting the known changes that are possible based on the new toolchain version, but expect that more cleanups will be possible."
The merge with this change already saw more than 600 lines of code removed from the kernel in being able to eliminate the old workarounds for pre-GCC8.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dee264c16a6334dcdbea5c186f5ff35f98b1df42
Linus Torvalds merged the change today to universally mandate at least GCC 8 when it comes to the GNU Compiler Collection version needed to compile the Linux kernel. The GCC 8 minimum replaces the prior GCC 5 minimum requirement. The GNU BInutils baseline goes from v2.25 to v2.30. LLVM Clang 13 and newer remains the alternative to GCC for compiling the Linux kernel.
Arnd Bergmann argued in [1]the Git merge the justification for raising the GCC baseline:
"Require gcc-8 and binutils-2.30
x86 already uses gcc-8 as the minimum version, this changes all other architectures to the same version. gcc-8 is used is Debian 10 and Red Hat Enterprise Linux 8, both of which are still supported, and binutils 2.30 is the oldest corresponding version on those.
Ubuntu Pro 18.04 and SUSE Linux Enterprise Server 15 both use gcc-7 as the system compiler but additionally include toolchains that remain supported.
With the new minimum toolchain versions, a number of workarounds for older versions can be dropped, in particular on x86_64 and arm64. Importantly, the updated compiler version allows removing two of the five remaining gcc plugins, as support for sancov and structeak features is already included in modern compiler versions.
I tried collecting the known changes that are possible based on the new toolchain version, but expect that more cleanups will be possible."
The merge with this change already saw more than 600 lines of code removed from the kernel in being able to eliminate the old workarounds for pre-GCC8.
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=dee264c16a6334dcdbea5c186f5ff35f98b1df42
dylanmtaylor