Skip to content

Commit 3671cc0

Browse files
authored
doc: update minimum glibc requirements for Linux
Starting with Node.js 18 we have moved building the release binaries from being built on CentOS 7/RHEL 7 to being built on RHEL 8 as the End-of-Life date of CentOS 7/RHEL 7 is before the End-of-Life date of Node.js 18 and we do not want to have to make a disruptive change towards the end of Node.js 18's life cycle. Moving to RHEL 8 has raised the glibc version being linked against (2.28). The official Node.js Linux release binaries will only run on Linux distributions with a matching or higher version of glibc. PR-URL: #42659 Refs: nodejs/build#2815 Refs: nodejs/build#2741 Reviewed-By: Michael Dawson <midawson@redhat.com> Reviewed-By: Stewart X Addison <sxa@redhat.com> Reviewed-By: Beth Griggs <bgriggs@redhat.com> Reviewed-By: Michaël Zasso <targos@protonmail.com>
1 parent 45162bf commit 3671cc0

File tree

1 file changed

+36
-47
lines changed

1 file changed

+36
-47
lines changed

BUILDING.md

+36-47
Original file line numberDiff line numberDiff line change
@@ -99,58 +99,49 @@ Node.js does not support a platform version if a vendor has expired support
9999
for it. In other words, Node.js does not support running on End-of-Life (EoL)
100100
platforms. This is true regardless of entries in the table below.
101101

102-
| Operating System | Architectures | Versions | Support Type | Notes |
103-
| ---------------- | ---------------- | ------------------------------- | ------------------------------------------- | ----------------------------------------- |
104-
| GNU/Linux | x64 | kernel >= 3.10, glibc >= 2.17 | Tier 1 | e.g. Ubuntu 16.04[^1], Debian 9, EL 7[^2] |
105-
| GNU/Linux | x64 | kernel >= 3.10, musl >= 1.1.19 | Experimental | e.g. Alpine 3.8 |
106-
| GNU/Linux | x86 | kernel >= 3.10, glibc >= 2.17 | Experimental | Downgraded as of Node.js 10 |
107-
| GNU/Linux | arm64 | kernel >= 4.5, glibc >= 2.17 | Tier 1 | e.g. Ubuntu 16.04, Debian 9, EL 7[^3] |
108-
| GNU/Linux | armv7 | kernel >= 4.14, glibc >= 2.24 | Tier 1 | e.g. Ubuntu 18.04, Debian 9 |
109-
| GNU/Linux | armv6 | kernel >= 4.14, glibc >= 2.24 | Experimental | Downgraded as of Node.js 12 |
110-
| GNU/Linux | ppc64le >=power8 | kernel >= 3.10.0, glibc >= 2.17 | Tier 2 | e.g. Ubuntu 16.04[^1], EL 7[^2] |
111-
| GNU/Linux | s390x | kernel >= 3.10.0, glibc >= 2.17 | Tier 2 | e.g. EL 7[^2] |
112-
| Windows | x64 | >= Windows 10/Server 2016 | Tier 1 | [^4],[^5] |
113-
| Windows | x86 | >= Windows 10/Server 2016 | Experimental | [^6] |
114-
| Windows | x64, x86 | Windows 8.1/Server 2012 | Experimental | |
115-
| Windows | arm64 | >= Windows 10 | Tier 2 (compiling) / Experimental (running) | |
116-
| macOS | x64 | >= 10.15 | Tier 1 | For notes about compilation see [^7] |
117-
| macOS | arm64 | >= 11 | Tier 1 | |
118-
| SmartOS | x64 | >= 18 | Tier 2 | |
119-
| AIX | ppc64be >=power8 | >= 7.2 TL04 | Tier 2 | |
120-
| FreeBSD | x64 | >= 12.2 | Experimental | |
121-
122-
[^1]: GCC 8 is not provided on the base platform. Users will
123-
need the
124-
[Toolchain test builds PPA](https://launchpad.net/\~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=xenial)
125-
or similar to source a newer compiler.
126-
127-
[^2]: GCC 8 is not provided on the base platform. Users will
128-
need the
129-
[devtoolset-8](https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/)
130-
or later to source a newer compiler.
131-
132-
[^3]: Older kernel versions may work for ARM64. However the
133-
Node.js test infrastructure only tests >= 4.5.
134-
135-
[^4]: On Windows, running Node.js in Windows terminal emulators
102+
| Operating System | Architectures | Versions | Support Type | Notes |
103+
| ---------------- | ---------------- | --------------------------------- | ------------------------------------------- | ------------------------------------ |
104+
| GNU/Linux | x64 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 1 | e.g. Ubuntu 20.04, Debian 10, RHEL 8 |
105+
| GNU/Linux | x64 | kernel >= 3.10, musl >= 1.1.19 | Experimental | e.g. Alpine 3.8 |
106+
| GNU/Linux | x86 | kernel >= 3.10, glibc >= 2.17 | Experimental | Downgraded as of Node.js 10 |
107+
| GNU/Linux | arm64 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 1 | e.g. Ubuntu 20.04, Debian 10, RHEL 8 |
108+
| GNU/Linux | armv7 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 1 | e.g. Ubuntu 20.04, Debian 10 |
109+
| GNU/Linux | armv6 | kernel >= 4.14, glibc >= 2.24 | Experimental | Downgraded as of Node.js 12 |
110+
| GNU/Linux | ppc64le >=power8 | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. Ubuntu 20.04, RHEL 8 |
111+
| GNU/Linux | s390x | kernel >= 4.18[^1], glibc >= 2.28 | Tier 2 | e.g. RHEL 8 |
112+
| Windows | x64 | >= Windows 10/Server 2016 | Tier 1 | [^2],[^3] |
113+
| Windows | x86 | >= Windows 10/Server 2016 | Experimental | [^4] |
114+
| Windows | x64, x86 | Windows 8.1/Server 2012 | Experimental | |
115+
| Windows | arm64 | >= Windows 10 | Tier 2 (compiling) / Experimental (running) | |
116+
| macOS | x64 | >= 10.15 | Tier 1 | For notes about compilation see [^5] |
117+
| macOS | arm64 | >= 11 | Tier 1 | |
118+
| SmartOS | x64 | >= 18 | Tier 2 | |
119+
| AIX | ppc64be >=power8 | >= 7.2 TL04 | Tier 2 | |
120+
| FreeBSD | x64 | >= 12.2 | Experimental | |
121+
122+
[^1]: Older kernel versions may work. However official Node.js release
123+
binaries are [built on RHEL 8 systems](#official-binary-platforms-and-toolchains)
124+
with kernel 4.18.
125+
126+
[^2]: On Windows, running Node.js in Windows terminal emulators
136127
like `mintty` requires the usage of [winpty](https://github.com/rprichard/winpty)
137128
for the tty channels to work (e.g. `winpty node.exe script.js`).
138129
In "Git bash" if you call the node shell alias (`node` without the `.exe`
139130
extension), `winpty` is used automatically.
140131

141-
[^5]: The Windows Subsystem for Linux (WSL) is not
132+
[^3]: The Windows Subsystem for Linux (WSL) is not
142133
supported, but the GNU/Linux build process and binaries should work. The
143134
community will only address issues that reproduce on native GNU/Linux
144135
systems. Issues that only reproduce on WSL should be reported in the
145136
[WSL issue tracker](https://github.com/Microsoft/WSL/issues). Running the
146137
Windows binary (`node.exe`) in WSL will not work without workarounds such as
147138
stdio redirection.
148139

149-
[^6]: Compiling Node.js for x86 Windows is currently impossible due to
140+
[^4]: Compiling Node.js for x86 Windows is currently impossible due to
150141
issues with version 10.1 of the V8 engine. Support will come back to its
151142
previous status as soon as possible.
152143

153-
[^7]: Our macOS x64 Binaries are compiled with 10.15 as a target. Xcode11 is
144+
[^5]: Our macOS x64 Binaries are compiled with 10.15 as a target. Xcode11 is
154145
required to compile.
155146

156147
### Supported toolchains
@@ -172,19 +163,17 @@ Binaries at <https://nodejs.org/download/release/> are produced on:
172163
| aix-ppc64 | AIX 7.2 TL04 on PPC64BE with GCC 8 |
173164
| darwin-x64 | macOS 10.15, Xcode Command Line Tools 11 with -mmacosx-version-min=10.15 |
174165
| darwin-arm64 (and .pkg) | macOS 11 (arm64), Xcode Command Line Tools 12 with -mmacosx-version-min=10.15 |
175-
| linux-arm64 | CentOS 7 with devtoolset-8 / GCC 8[^8] |
166+
| linux-arm64 | RHEL 8 with GCC 8[^6] |
176167
| linux-armv7l | Cross-compiled on Ubuntu 18.04 x64 with [custom GCC toolchain](https://github.com/rvagg/rpi-newer-crosstools) |
177-
| linux-ppc64le | CentOS 7 with devtoolset-8 / GCC 8[^8] |
178-
| linux-s390x | RHEL 7 with devtoolset-8 / GCC 8[^8] |
179-
| linux-x64 | CentOS 7 with devtoolset-8 / GCC 8[^8] |
168+
| linux-ppc64le | RHEL 8 with GCC 8[^6] |
169+
| linux-s390x | RHEL 8 with GCC 8[^6] |
170+
| linux-x64 | RHEL 8 with GCC 8[^6] |
180171
| win-x64 and win-x86 | Windows 2012 R2 (x64) with Visual Studio 2019 |
181172

182-
[^8]: The Enterprise Linux devtoolset-8 allows us to compile binaries with GCC 8
183-
but linked to the glibc and libstdc++ versions of the host platforms
184-
(CentOS 7 / RHEL 7). Therefore, binaries produced on these systems are
185-
compatible with glibc >= 2.17 and libstdc++ >= 6.0.20 (`GLIBCXX_3.4.20`).
186-
These are available on distributions natively supporting GCC 4.9, such as
187-
Ubuntu 14.04 and Debian 8.
173+
[^6]: Binaries produced on these systems are compatible with glibc >= 2.28
174+
and libstdc++ >= 6.0.25 (`GLIBCXX_3.4.25`). These are available on
175+
distributions natively supporting GCC 8.1 or higher, such as Debian 10,
176+
RHEL 8 and Ubuntu 20.04.
188177

189178
#### OpenSSL asm support
190179

0 commit comments

Comments
 (0)