@@ -99,61 +99,61 @@ Node.js does not support a platform version if a vendor has expired support
9999for it. In other words, Node.js does not support running on End-of-Life (EoL)
100100platforms. 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 < sup > [ 1 ] ( #fn1 ) </ sup > , Debian 9, EL 7 < sup > [ 2 ] ( #fn2 ) </ sup > |
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 < sup > [ 3 ] ( #fn3 ) </ sup > |
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 < sup > [ 1 ] ( #fn1 ) </ sup > , EL 7 < sup > [ 2 ] ( #fn2 ) </ sup > |
111- | GNU/Linux | s390x | kernel >= 3.10.0, glibc >= 2.17 | Tier 2 | e.g. EL 7 < sup > [ 2 ] ( #fn2 ) </ sup > |
112- | Windows | x64, x86 (WoW64) | >= Windows 8.1/2012 R2 | Tier 1 | < sup > [ 4 ] ( #fn4 ) , [ 5 ] ( #fn5 ) </ sup > |
113- | Windows | x86 (native) | >= Windows 8.1/2012 R2 | Tier 1 (running) / Experimental (compiling) < sup > [ 6 ] ( #fn6 ) </ sup > | |
114- | Windows | x64, x86 | Windows Server 2012 (not R2) | Experimental | |
115- | Windows | arm64 | >= Windows 10 | Tier 2 (compiling) / Experimental (running) | |
116- | macOS | x64 | >= 10.13 | Tier 1 | For notes about compilation see < sup > [ 7 ] ( #fn7 ) </ sup > |
117- | macOS | arm64 | >= 11 | Tier 1 | |
118- | SmartOS | x64 | >= 18 | Tier 2 | |
119- | AIX | ppc64be >=power7 | >= 7.2 TL04 | Tier 2 | |
120- | FreeBSD | x64 | >= 12.2 | Experimental | |
121-
122- < em id = " fn1 " >1</ em > : 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- < em id = " fn2 " >2</ em > : 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- < em id = " fn3 " >3</ em > : Older kernel versions may work for ARM64. However the
133- Node.js test infrastructure only tests >= 4.5.
134-
135- < em id = " fn4 " >4</ em > : On Windows, running Node.js in Windows terminal emulators
136- like ` mintty ` requires the usage of [ winpty] ( https://github.com/rprichard/winpty )
137- for the tty channels to work (e.g. ` winpty node.exe script.js ` ).
138- In "Git bash" if you call the node shell alias (` node ` without the ` .exe `
139- extension), ` winpty ` is used automatically.
140-
141- < em id = " fn5 " >5</ em > : The Windows Subsystem for Linux (WSL) is not
142- supported, but the GNU/Linux build process and binaries should work. The
143- community will only address issues that reproduce on native GNU/Linux
144- systems. Issues that only reproduce on WSL should be reported in the
145- [ WSL issue tracker] ( https://github.com/Microsoft/WSL/issues ) . Running the
146- Windows binary (` node.exe ` ) in WSL is not recommended. It will not work
147- without workarounds such as stdio redirection.
148-
149- < em id = " fn6 " >6</ em > : Running Node.js on x86 Windows should work and binaries
150- are provided. However, tests in our infrastructure only run on WoW64.
151- Furthermore, compiling on x86 Windows is Experimental and
152- may not be possible.
153-
154- < em id = " fn7 " >7</ em > : Our macOS x64 Binaries are compiled with 10.13 as a target.
155- However there is no guarantee compiling on 10.13 will work as Xcode11 is
156- required to compile.
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, x86 (WoW64) | >= Windows 8.1/2012 R2 | Tier 1 | [ ^ 4 ] , [ ^ 5 ] |
113+ | Windows | x86 (native) | >= Windows 8.1/2012 R2 | Tier 1 (running) / Experimental (compiling)[ ^ 6 ] | |
114+ | Windows | x64, x86 | Windows Server 2012 (not R2) | Experimental | |
115+ | Windows | arm64 | >= Windows 10 | Tier 2 (compiling) / Experimental (running) | |
116+ | macOS | x64 | >= 10.13 | Tier 1 | For notes about compilation see [ ^ 7 ] |
117+ | macOS | arm64 | >= 11 | Tier 1 | |
118+ | SmartOS | x64 | >= 18 | Tier 2 | |
119+ | AIX | ppc64be >=power7 | >= 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
136+ like ` mintty ` requires the usage of [ winpty] ( https://github.com/rprichard/winpty )
137+ for the tty channels to work (e.g. ` winpty node.exe script.js ` ).
138+ In "Git bash" if you call the node shell alias (` node ` without the ` .exe `
139+ extension), ` winpty ` is used automatically.
140+
141+ [ ^ 5 ] : The Windows Subsystem for Linux (WSL) is not
142+ supported, but the GNU/Linux build process and binaries should work. The
143+ community will only address issues that reproduce on native GNU/Linux
144+ systems. Issues that only reproduce on WSL should be reported in the
145+ [ WSL issue tracker] ( https://github.com/Microsoft/WSL/issues ) . Running the
146+ Windows binary (` node.exe ` ) in WSL is not recommended. It will not work
147+ without workarounds such as stdio redirection.
148+
149+ [ ^ 6 ] : Running Node.js on x86 Windows should work and binaries
150+ are provided. However, tests in our infrastructure only run on WoW64.
151+ Furthermore, compiling on x86 Windows is Experimental and
152+ may not be possible.
153+
154+ [ ^ 7 ] : Our macOS x64 Binaries are compiled with 10.13 as a target.
155+ However there is no guarantee compiling on 10.13 will work as Xcode11 is
156+ required to compile.
157157
158158### Supported toolchains
159159
@@ -174,19 +174,19 @@ Binaries at <https://nodejs.org/download/release/> are produced on:
174174| aix-ppc64 | AIX 7.2 TL04 on PPC64BE with GCC 8 |
175175| darwin-x64 | macOS 10.15, Xcode Command Line Tools 11 with -mmacosx-version-min=10.13 |
176176| darwin-arm64 (and .pkg) | macOS 11 (arm64), Xcode Command Line Tools 12 with -mmacosx-version-min=10.13 |
177- | linux-arm64 | CentOS 7 with devtoolset-8 / GCC 8 < sup > [ 8 ] ( #fn8 ) </ sup > |
177+ | linux-arm64 | CentOS 7 with devtoolset-8 / GCC 8[ ^ 8 ] |
178178| linux-armv7l | Cross-compiled on Ubuntu 18.04 x64 with [ custom GCC toolchain] ( https://github.com/rvagg/rpi-newer-crosstools ) |
179- | linux-ppc64le | CentOS 7 with devtoolset-8 / GCC 8 < sup > [ 8 ] ( #fn8 ) </ sup > |
180- | linux-s390x | RHEL 7 with devtoolset-8 / GCC 8 < sup > [ 8 ] ( #fn8 ) </ sup > |
181- | linux-x64 | CentOS 7 with devtoolset-8 / GCC 8 < sup > [ 8 ] ( #fn8 ) </ sup > |
179+ | linux-ppc64le | CentOS 7 with devtoolset-8 / GCC 8[ ^ 8 ] |
180+ | linux-s390x | RHEL 7 with devtoolset-8 / GCC 8[ ^ 8 ] |
181+ | linux-x64 | CentOS 7 with devtoolset-8 / GCC 8[ ^ 8 ] |
182182| win-x64 and win-x86 | Windows 2012 R2 (x64) with Visual Studio 2019 |
183183
184- < em id = " fn8 " >8</ em > : The Enterprise Linux devtoolset-8 allows us to compile
185- binaries with GCC 8 but linked to the glibc and libstdc++ versions of the host
186- platforms (CentOS 7 / RHEL 7). Therefore, binaries produced on these systems
187- are compatible with glibc >= 2.17 and libstdc++ >= 6.0.20 (` GLIBCXX_3.4.20 ` ).
188- These are available on distributions natively supporting GCC 4.9, such as
189- Ubuntu 14.04 and Debian 8.
184+ [ ^ 8 ] : The Enterprise Linux devtoolset-8 allows us to compile binaries with GCC 8
185+ but linked to the glibc and libstdc++ versions of the host platforms
186+ (CentOS 7 / RHEL 7). Therefore, binaries produced on these systems are
187+ compatible with glibc >= 2.17 and libstdc++ >= 6.0.20 (` GLIBCXX_3.4.20 ` ).
188+ These are available on distributions natively supporting GCC 4.9, such as
189+ Ubuntu 14.04 and Debian 8.
190190
191191#### OpenSSL asm support
192192
@@ -771,6 +771,7 @@ dynamically linking with OpenSSL 3.0.0 by using the configuration flag
771771### FIPS support when statically linking OpenSSL
772772
773773FIPS can be supported by specifying the configuration flag ` --openssl-is-fips ` :
774+
774775``` console
775776$ ./configure --openssl-is-fips
776777$ make -j8
@@ -783,23 +784,30 @@ to include the correct path to fipsmodule.cnf and finally uncomment the fips
783784section.
784785
785786We can then run node specifying ` --enable-fips ` :
787+
786788``` console
787789$ ./node --enable-fips -p ' crypto.getFips()'
7887901
789791```
792+
790793The above will use the Node.js default locations for OpenSSL 3.0:
794+
791795``` console
792796$ ./out/Release/openssl-cli version -m -d
793797OPENSSLDIR: "/nodejs/openssl/out/Release/obj.target/deps/openssl"
794798MODULESDIR: "/nodejs/openssl/out/Release/obj.target/deps/openssl/lib/openssl-modules"
795799```
800+
796801The OpenSSL configuration files will be found in ` OPENSSLDIR ` directory above:
802+
797803``` console
798804$ ls -w 1 out/Release/obj.target/deps/openssl/* .cnf
799805out/Release/obj.target/deps/openssl/fipsmodule.cnf
800806out/Release/obj.target/deps/openssl/openssl.cnf
801807```
808+
802809And the FIPS module will be located in the ` MODULESDIR ` directory:
810+
803811``` console
804812$ ls out/Release/obj.target/deps/openssl/lib/openssl-modules/
805813fips.so
0 commit comments