You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Additionally, V8 officially discontinued support for GCC at the end of July 2024. Any remaining GCC support now mainly comes from third-party platforms on V8 (e.g., ppc64 and s390x).
Rust was also added as a dependency to help support Temporal. Since Rust relies on LLVM for code generation, maintaining support for the LLVM toolchain (and Clang) will be necessary going forward.
Considering the availability of GCC vs Clang across different platforms (Ubuntu, Debian, RHEL, AIX, etc.), should the community aim to upgrade to GCC 13.1+ or transition entirely to Clang?
A mixed toolchain approach may be less than ideal, as platforms sticking with GCC would need to continue patching compilation errors as they arise.
Our current Jenkins build zones we provide you do not have gcc13 in them. The ones I use to fix bugs, however:
nuc-build-2024(~)[0]% gcc --version
gcc (GCC) 13.3.0
Copyright (C) 2023 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
nuc-build-2024(~)[0]%
do. We should probably discuss updating them^H^H^H^H the build zones, possibly even spinning new ones if my recent contributions to v8 (which still haven't landed upstream in google's v8 yet) work as well as they should.
nuc-build-2024(~)[0]% pkgin avail | grep clang
clang-18.1.8nb3 C language family frontend for LLVM
opencl-clang-18.1.0nb3 OpenCL-oriented wrapper library around clang
nuc-build-2024(~)[0]%
Question regarding the Rust toolchain support: Should we consider migrating from ccache to sccache (https://github.com/mozilla/sccache) ? That would expand the caching footprint to include rust.
Today, I setup ubuntu2404-arm64 Docker containers.
There are currently 6 with the ubuntu2404-arm64 label, two of them which also have the ubuntu2404_debug-arm64 label, mirroring the 2204 setup.
There are two more ubuntu2204-arm64 containers but they are on osuosl and are currently offline (/cc @richardlau so I didn't touch that host).
I updated the following jobs to use ubuntu2404* instead of ubuntu2204*:
Thanks @targos - I've updated the config of the reproducibility job so hopefully it'll run through ok.
[EDIT: I needed to get rid of the CC=gcc-12 that was hard coded in that job since the new machines have gcc13 by default] EDIT 2: The job was set to run with -j32 which seems to have overwhelmed the system but was ok on the previous ones - are they a different spec in terms of CPU/memory? Regardless, I've dropped it to -j8 as the -j32 was set when we had the giant Ampere's from equinix - which is also the reason the test was being done on aarch64 :-)
There are two more ubuntu2204-arm64 containers but they are on osuosl and are currently offline (/cc @richardlau so I didn't touch that host).
I've replaced the two Ubuntu 22.04 containers on the OSUOSL host with Ubuntu 24.04 as part of #4229 (via changes to the inventory in the secrets repo).
Closing this issue as most platforms have now switched to using Clang.
Upgrading Clang itself will be tracked here: #4265
Upgrading SmartOS machines will be tracked here: #4259
Activity
targos commentedon Jun 3, 2025
Are there platforms that we support and don't have Clang ?
miladfarca commentedon Jun 4, 2025
/cc @nodejs/build
miladfarca commentedon Jun 19, 2025
As discussed we need to map supported Clang versions across the OS versions we support.
kadler commentedon Jun 19, 2025
Clang is being worked on for IBM i, but is not currently available (neither is GCC 13+).
miladfarca commentedon Jul 22, 2025
Initial changes have landed for ppc64le/s390x and we are now building/testing V8 (release) with Clang on RHEL: https://chromium-review.googlesource.com/c/chromium/src/+/6705431
targos commentedon Jul 22, 2025
With nodejs/node#59048, we will require Clang >=19.
miladfarca commentedon Jul 22, 2025
Correct, currently using clang version 19.1.7 on RHEL 8.10 .
miladfarca commentedon Jul 31, 2025
fyi @nodejs/platform-smartos
danmcd commentedon Jul 31, 2025
Our current Jenkins build zones we provide you do not have gcc13 in them. The ones I use to fix bugs, however:
do. We should probably discuss updating them^H^H^H^H the build zones, possibly even spinning new ones if my recent contributions to v8 (which still haven't landed upstream in google's v8 yet) work as well as they should.
danmcd commentedon Jul 31, 2025
We also have clang in pkgsrc:
and I should see if I can build using that.
danmcd commentedon Jul 31, 2025
Also, this v8 fix isn't in node yet (never mind upstream V8), but needs to be if we wanna solve the gcc13 and/or clang problem: nodejs/node#58237
ansible: install Clang on Fedora hosts
targos commentedon Aug 6, 2025
So we can start experimenting, here is a PR to install Clang on the Fedora-based CI hosts: #4116
ansible: install Clang on Fedora hosts (#4116)
44 remaining items
ryanaslett commentedon Nov 12, 2025
Question regarding the Rust toolchain support: Should we consider migrating from ccache to sccache (https://github.com/mozilla/sccache) ? That would expand the caching footprint to include rust.
targos commentedon Nov 15, 2025
I was looking at recommended ways to install Rust on Fedora: https://developer.fedoraproject.org/tech/languages/rust/rust-installation.html
I guess we need to decide on a general strategy. Do we want to:
rustupand setup Rust with Ansible?miladfarca commentedon Nov 16, 2025
On RHEL we current use the first option and use the package
rust-toolset-1.84.1, I've added more details here: nodejs/node#58730 (comment)kleisauke commentedon Jan 28, 2026
Just wondering, should this line be updated now as well?:
https://github.com/nodejs/node/blob/983fd3fcf7a929122574a5babe6551a8d459b1a1/BUILDING.md?plain=1#L110
That is:
(this assumes that binaries built on Alpine 3.21 and 3.22 can run on Alpine 3.20, as it uses the same version of musl libc)
kleisauke commentedon Jan 28, 2026
Ah, it looks like that Ansible template is only used for CI. I just opened PR nodejs/node#61569 for this.
targos commentedon Jan 29, 2026
Today, I setup ubuntu2404-arm64 Docker containers.
There are currently 6 with the ubuntu2404-arm64 label, two of them which also have the ubuntu2404_debug-arm64 label, mirroring the 2204 setup.
There are two more ubuntu2204-arm64 containers but they are on osuosl and are currently offline (/cc @richardlau so I didn't touch that host).
I updated the following jobs to use ubuntu2404* instead of ubuntu2204*:
There is still https://ci.nodejs.org/view/All/job/reproducibility-test/configure that specifically tests ubuntu2204 but I don't want to break the workflow, so @sxa feel free to change it when you're ready.
sxa commentedon Jan 30, 2026
Thanks @targos - I've updated the config of the reproducibility job so hopefully it'll run through ok.
[EDIT: I needed to get rid of the
CC=gcc-12that was hard coded in that job since the new machines have gcc13 by default]EDIT 2: The job was set to run with
-j32which seems to have overwhelmed the system but was ok on the previous ones - are they a different spec in terms of CPU/memory? Regardless, I've dropped it to-j8as the-j32was set when we had the giant Ampere's from equinix - which is also the reason the test was being done on aarch64 :-)richardlau commentedon Jan 30, 2026
I've replaced the two Ubuntu 22.04 containers on the OSUOSL host with Ubuntu 24.04 as part of #4229 (via changes to the inventory in the secrets repo).
miladfarca commentedon Mar 28, 2026
We are upgrading Clang and rustc versions on certain platforms: #4265
ansible: install clang on AIX (#4234)
aix: select clang for Node.26+ builds (#4286)
miladfarca commentedon Apr 30, 2026
Closing this issue as most platforms have now switched to using Clang.
Upgrading Clang itself will be tracked here: #4265
Upgrading SmartOS machines will be tracked here: #4259