Description
gcc no longer support gcc 10. I think it's time we plan to move up.
Due to compiler issues, we've already had to move Linux on s390x (LinuxONE) builds to use gcc 12: #3630
(FWIW the Red Hat team maintaining the V8 ports to Power and z also use gcc 12.)
My proposal is to move to gcc 12 as not all platforms that we support that we use gcc to build on have gcc 13 yet (e.g. AIX, IBM i). It would be easier to have the same baseline across all supported platforms, although it is not strictly necessarily (in the past we have had the minimum vary by platform, but in practice that forces Node.js to be compatible with the lowest out of the set).
Compilation of main
is currently broken on gcc 12.2 (although not on RHEL 8) but would be fixed by landing nodejs/node#53728.
For releases on Linux we'd continue to use RHEL 8 (now in maintenance but good through to 2029) and use gcc-toolset-12
instead of gcc-toolset-10
. This would mean we keep compatibility with glibc 2.28 and libstdc++ 6.0.25 (the base in RHEL 8) and Node.js 23 would continue to run in the same places that Node.js 22, 20 and 18 does. The exception to this is likely to be 32-bit arm (armv7l) which we use a custom cross-compiler for (as RHEL doesn't support armv7l). We would either need to generate a new gcc 12 cross-compiler (and check what that would mean in terms of run-time compatibility) or perhaps discuss whether armv7l is still a platform we continue to supply official binaries for.