@@ -13,38 +13,38 @@ file a new issue.
13
13
* [ Supported platforms] ( #supported-platforms )
14
14
* [ Input] ( #input )
15
15
* [ Strategy] ( #strategy )
16
- * [ Supported platforms ] ( #supported-platforms-1 )
16
+ * [ Platform list ] ( #platform-list )
17
17
* [ Supported toolchains] ( #supported-toolchains )
18
- * [ Unix] ( #unix )
19
- * [ AIX] ( #aix )
20
- * [ Windows] ( #windows )
18
+ * [ Official binary platforms and toolchains] ( #official-binary-platforms-and-toolchains )
21
19
* [ OpenSSL asm support] ( #openssl-asm-support )
20
+ * [ Previous versions of this document] ( #previous-versions-of-this-document )
22
21
* [ Building Node.js on supported platforms] ( #building-nodejs-on-supported-platforms )
23
22
* [ Unix/macOS] ( #unixmacos )
24
23
* [ Prerequisites] ( #prerequisites )
25
- * [ Building Node.js] ( #building-nodejs-1 )
24
+ * [ Building Node.js] ( #building-nodejs )
26
25
* [ Running Tests] ( #running-tests )
27
26
* [ Running Coverage] ( #running-coverage )
28
27
* [ Building the documentation] ( #building-the-documentation )
29
28
* [ Building a debug build] ( #building-a-debug-build )
30
- * [ Windows] ( #windows-1 )
29
+ * [ Windows] ( #windows )
31
30
* [ Android/Android-based devices (e.g. Firefox OS)] ( #androidandroid-based-devices-eg-firefox-os )
32
31
* [ ` Intl ` (ECMA-402) support] ( #intl-ecma-402-support )
33
32
* [ Default: ` small-icu ` (English only) support] ( #default-small-icu-english-only-support )
34
33
* [ Build with full ICU support (all locales supported by ICU)] ( #build-with-full-icu-support-all-locales-supported-by-icu )
35
34
* [ Unix/macOS] ( #unixmacos-1 )
36
- * [ Windows] ( #windows-2 )
35
+ * [ Windows] ( #windows-1 )
37
36
* [ Building without Intl support] ( #building-without-intl-support )
38
37
* [ Unix/macOS] ( #unixmacos-2 )
39
- * [ Windows] ( #windows-3 )
38
+ * [ Windows] ( #windows-2 )
40
39
* [ Use existing installed ICU (Unix/macOS only)] ( #use-existing-installed-icu-unixmacos-only )
41
40
* [ Build with a specific ICU] ( #build-with-a-specific-icu )
42
41
* [ Unix/macOS] ( #unixmacos-3 )
43
- * [ Windows] ( #windows-4 )
42
+ * [ Windows] ( #windows-3 )
44
43
* [ Building Node.js with FIPS-compliant OpenSSL] ( #building-nodejs-with-fips-compliant-openssl )
45
44
* [ Building Node.js with external core modules] ( #building-nodejs-with-external-core-modules )
46
45
* [ Unix/macOS] ( #unixmacos-4 )
47
- * [ Windows] ( #windows-5 )
46
+ * [ Windows] ( #windows-4 )
47
+ * [ Note for downstream distributors of Node.js] ( #note-for-downstream-distributors-of-nodejs )
48
48
49
49
## Supported platforms
50
50
@@ -59,68 +59,124 @@ Node.js relies on V8 and libuv. We adopt a subset of their supported platforms.
59
59
60
60
There are three support tiers:
61
61
62
- * ** Tier 1** : Full test coverage and maintenance by the Node.js core team and
63
- the broader community.
64
- * ** Tier 2** : Full test coverage. Limited maintenance, often provided by the
65
- vendor of the platform.
66
- * ** Experimental** : May not compile or test suite may not pass.
67
- These are often approaching Tier 2 support but are not quite ready.
68
- There is at least one individual providing maintenance.
69
-
70
- ### Supported platforms
71
-
72
- For production applications, run Node.js on supported platforms only.
62
+ * ** Tier 1** : These platforms represent the majority of Node.js users. The
63
+ Node.js Build Working Group maintains infrastructure for full test coverage.
64
+ Maintenance is supported by the Node.js core team. All commits to the
65
+ Node.js repository are tested on multiple variants of these platforms. Test
66
+ failures on tier 1 platforms will block releases.
67
+ * ** Tier 2** : These platforms represent smaller segments of the Node.js user
68
+ base. The Node.js Build Working Group maintains infrastructure for full test
69
+ coverage. Maintenance is supported by smaller groups or individuals within
70
+ the Node.js core team, or the vendor of the platform itself. All commits to
71
+ the Node.js repository are tested on multiple variants of these platforms
72
+ where practical. Test failures on tier 2 platforms will block releases.
73
+ Delays in release of binaries for these platforms are acceptable
74
+ where necessary due to infrastructure concerns.
75
+ * ** Experimental** : May not compile or test suite may not pass. The core team
76
+ does not create releases for these platforms. Test failures on experimental
77
+ platforms do not block releases. Contributions to improve support for these
78
+ platforms are welcome.
79
+
80
+ Platforms may move between tiers between major release lines. The table below
81
+ will be updated to reflect those changes.
82
+
83
+ ### Platform list
84
+
85
+ Compiling and running Node.js is supported for a limited set of operating
86
+ systems, architectures and libc versions. The table below lists the
87
+ combinations that the core team has committed to supporting and the nature of
88
+ that support as per the support tiers above. A list of
89
+ [ supported compile toolchains] ( #supported-toolchains ) is also supplied for
90
+ tier 1 platforms.
91
+
92
+ ** For production applications, run Node.js on supported platforms only.**
73
93
74
94
Node.js does not support a platform version if a vendor has expired support
75
95
for it. In other words, Node.js does not support running on End-of-Life (EoL)
76
96
platforms. This is true regardless of entries in the table below.
77
97
78
- | System | Support type | Version | Architectures | Notes |
79
- | ------------ | ------------ | ------------------------------- | ---------------- | ----------------------------- |
80
- | GNU/Linux | Tier 1 | kernel >= 2.6.32, glibc >= 2.12 | x64, arm | |
81
- | GNU/Linux | Tier 1 | kernel >= 3.10, glibc >= 2.17 | arm64 | |
82
- | macOS/OS X | Tier 1 | >= 10.11 | x64 | |
83
- | Windows | Tier 1 | >= Windows 7/2008 R2/2012 R2 | x86, x64 | [ 1] ( #fn1 ) ,[ 2] ( #fn2 ) ,[ 3] ( #fn3 ) |
84
- | SmartOS | Tier 2 | >= 16 | x64 | |
85
- | FreeBSD | Tier 2 | >= 11 | x64 | |
86
- | GNU/Linux | Tier 2 | kernel >= 3.13.0, glibc >= 2.19 | ppc64le >=power8 | |
87
- | AIX | Tier 2 | >= 7.1 TL04 | ppc64be >=power7 | |
88
- | GNU/Linux | Tier 2 | kernel >= 3.10, glibc >= 2.17 | s390x | |
89
- | GNU/Linux | Experimental | kernel >= 2.6.32, glibc >= 2.12 | x86 | limited CI |
90
- | Linux (musl) | Experimental | musl >= 1.0 | x64 | |
91
-
92
- <em id =" fn1 " >1</em >: Tier 1 support for building on Windows is only on 64-bit
93
- hosts. Support is experimental for 32-bit hosts.
94
-
95
- <em id =" fn2 " >2</em >: On Windows, running Node.js in Windows terminal emulators
98
+ | Operating System | Architectures | Versions | Support Type | Notes |
99
+ | ---------------- | ---------------- | ------------------------------- | ------------ | --------------------------------- |
100
+ | 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 > |
101
+ | GNU/Linux | x64 | kernel >= 3.10, musl >= 1.1.19 | Experimental | e.g. Alpine 3.8 |
102
+ | GNU/Linux | x86 | kernel >= 3.10, glibc >= 2.17 | Experimental | Downgraded as of Node.js 10 |
103
+ | GNU/Linux | arm64 | kernel >= 4.5, glibc >= 2.17 | Tier 1 | e.g. Ubuntu 16.04, Debian 9, EL 7 <sup >[ 3] ( #fn3 ) </sup > |
104
+ | GNU/Linux | armv7 | kernel >= 4.14, glibc >= 2.24 | Tier 1 | e.g. Ubuntu 18.04, Debian 9 |
105
+ | GNU/Linux | armv6 | kernel >= 4.14, glibc >= 2.24 | Experimental | Downgraded as of Node.js 12 |
106
+ | GNU/Linux | ppc64le >=power8 | kernel >= 3.13.0, glibc >= 2.19 | Tier 2 | e.g. Ubuntu 16.04, EL 7 |
107
+ | GNU/Linux | s390x | kernel >= 3.10.0, glibc >= 2.17 | Tier 2 | e.g. EL 7 |
108
+ | Windows | x64, x86 (WoW64) | >= Windows 7/2008 R2/2012 R2 | Tier 1 | <sup >[ 4] ( #fn4 ) ,[ 5] ( #fn5 ) </sup > |
109
+ | Windows | x86 (native) | >= Windows 7/2008 R2/2012 R2 | Tier 1 (running) / Experimental (compiling) <sup >[ 6] ( #fn6 ) </sup > | |
110
+ | Windows | arm64 | >= Windows 10 | Experimental | |
111
+ | macOS | x64 | >= 10.11 | Tier 1 | |
112
+ | SmartOS | x64 | >= 18 | Tier 2 | |
113
+ | AIX | ppc64be >=power7 | >= 7.1 TL05 | Tier 2 | |
114
+ | FreeBSD | x64 | >= 11 | Experimental | Downgraded as of Node.js 12 |
115
+
116
+ <em id =" fn1 " >1</em >: GCC 6 is not provided on the base platform, users will
117
+ need the
118
+ [ Toolchain test builds PPA] ( https://launchpad.net/~ubuntu-toolchain-r/+archive/ubuntu/test?field.series_filter=xenial )
119
+ or similar to source a newer compiler.
120
+
121
+ <em id =" fn2 " >2</em >: GCC 6 is not provided on the base platform, users will
122
+ need the
123
+ [ devtoolset-6] ( https://www.softwarecollections.org/en/scls/rhscl/devtoolset-6/ )
124
+ or later to source a newer compiler.
125
+
126
+ <em id =" fn3 " >3</em >: Older kernel versions may work for ARM64, however the
127
+ Node.js test infrastructure only tests >= 4.5.
128
+
129
+ <em id =" fn4 " >4</em >: On Windows, running Node.js in Windows terminal emulators
96
130
like ` mintty ` requires the usage of [ winpty] ( https://github.com/rprichard/winpty )
97
131
for the tty channels to work correctly (e.g. ` winpty node.exe script.js ` ).
98
132
In "Git bash" if you call the node shell alias (` node ` without the ` .exe `
99
133
extension), ` winpty ` is used automatically.
100
134
101
- <em id =" fn3 " >3 </em >: The Windows Subsystem for Linux (WSL) is not directly
135
+ <em id =" fn5 " >5 </em >: The Windows Subsystem for Linux (WSL) is not directly
102
136
supported, but the GNU/Linux build process and binaries should work. The
103
137
community will only address issues that reproduce on native GNU/Linux
104
138
systems. Issues that only reproduce on WSL should be reported in the
105
139
[ WSL issue tracker] ( https://github.com/Microsoft/WSL/issues ) . Running the
106
140
Windows binary (` node.exe ` ) in WSL is not recommended. It will not work
107
141
without workarounds such as stdio redirection.
108
142
143
+ <em id =" fn6 " >6</em >: Running Node.js on x86 Windows should work and binaries
144
+ are provided. However, tests in our infrastructure only run on WoW64.
145
+ Furthermore, compiling on x86 Windows is currently considered Experimental and
146
+ may not be possible.
147
+
109
148
### Supported toolchains
110
149
111
150
Depending on the host platform, the selection of toolchains may vary.
112
151
113
- #### Unix
114
-
115
- * GCC 4.9.4 or newer
116
- * Clang 3.4.2 or newer
117
-
118
- #### AIX
119
- * GCC 6.3 or newer
120
-
121
- #### Windows
122
-
123
- * Visual Studio 2017 with the Windows 10 SDK on a 64-bit host.
152
+ | Operating System | Compiler Versions |
153
+ | ---------------- | -------------------------------------------------------------- |
154
+ | Linux | GCC >= 6.3 |
155
+ | Windows | Visual Studio >= 2017 with the Windows 10 SDK on a 64-bit host |
156
+ | macOS | Xcode >= 8 (Apple LLVM >= 8) |
157
+
158
+ ### Official binary platforms and toolchains
159
+
160
+ Binaries at < https://nodejs.org/download/release/ > are produced on:
161
+
162
+ | Binary package | Platform and Toolchain |
163
+ | --------------------- | ------------------------------------------------------------------------ |
164
+ | aix-ppc64 | AIX 7.1 TL05 on PPC64BE with GCC 6 |
165
+ | darwin-x64 (and .pkg) | macOS 10.11, Xcode Command Line Tools 8 with -mmacosx-version-min=10.10 |
166
+ | linux-arm64 | CentOS 7 with devtoolset-6 / GCC 6 |
167
+ | linux-armv7l | Cross-compiled on Ubuntu 16.04 x64 with [ custom GCC toolchain] ( https://github.com/rvagg/rpi-newer-crosstools ) |
168
+ | linux-ppc64le | Ubuntu 14.04 with GCC 6 |
169
+ | linux-s390x | RHEL 7 with devtoolset-6 / GCC 6 <sup >[ 7] ( #fn7 ) </sup > |
170
+ | linux-x64 | CentOS 7 with devtoolset-6 / GCC 6 <sup >[ 7] ( #fn7 ) </sup > |
171
+ | sunos-x64 | SmartOS 18 with GCC 7 |
172
+ | win-x64 and win-x86 | Windows 2012 R2 (x64) with Visual Studio 2017 |
173
+
174
+ <em id =" fn7 " >7</em >: The Enterprise Linux devtoolset-6 allows us to compile
175
+ binaries with GCC 6 but linked to the glibc and libstdc++ versions of the host
176
+ platforms (CentOS 7 / RHEL 7). Therefore, binaries produced on these systems
177
+ are compatible with glibc >= 2.17 and libstdc++ >= 6.0.20 (` GLIBCXX_3.4.20 ` ).
178
+ These are available on distributions natively supporting GCC 4.9, such as
179
+ Ubuntu 14.04 and Debian 8.
124
180
125
181
#### OpenSSL asm support
126
182
@@ -147,6 +203,16 @@ Please refer to
147
203
If compiling without one of the above, use ` configure ` with the
148
204
` --openssl-no-asm ` flag. Otherwise, ` configure ` will fail.
149
205
206
+ ### Previous versions of this document
207
+
208
+ Supported platforms and toolchains change with each major version of Node.js.
209
+ This document is only valid for the current major version of Node.js.
210
+ Consult previous versions of this document for older versions of Node.js:
211
+
212
+ * [ Node.js 10] ( https://github.com/nodejs/node/blob/v10.x/BUILDING.md )
213
+ * [ Node.js 8] ( https://github.com/nodejs/node/blob/v8.x/BUILDING.md )
214
+ * [ Node.js 6] ( https://github.com/nodejs/node/blob/v6.x/BUILDING.md )
215
+
150
216
## Building Node.js on supported platforms
151
217
152
218
The [ bootstrapping guide] ( https://github.com/nodejs/node/blob/master/tools/bootstrap/README.md )
@@ -156,8 +222,8 @@ explains how to install all prerequisites.
156
222
157
223
#### Prerequisites
158
224
159
- * ` gcc ` and ` g++ ` 4.9.4 or newer, or
160
- * ` clang ` and ` clang++ ` 3.4.2 or newer ( macOS: latest Xcode Command Line Tools)
225
+ * ` gcc ` and ` g++ ` >= 6.3 or newer, or
226
+ * macOS: Xcode Command Line Tools >= 8
161
227
* Python 2.7
162
228
* Python 2.7 end of life is in 2019 so a transition to Python 3 is underway.
163
229
* Python 3.5, 3.6, and 3.7 are experimental.
@@ -188,8 +254,8 @@ The `-j4` option will cause `make` to run 4 simultaneous compilation jobs which
188
254
may reduce build time. For more information, see the
189
255
[ GNU Make Documentation] ( https://www.gnu.org/software/make/manual/html_node/Parallel.html ) .
190
256
191
- Note that the above requires that ` python ` resolve to Python 2.7 and not a newer
192
- version. See [ Prerequisites] ( #prerequisites ) .
257
+ Note that the above requires that ` python ` resolves to a supported version of
258
+ Python. See [ Prerequisites] ( #prerequisites ) .
193
259
194
260
After building, setting up [ firewall rules] ( tools/macos-firewall.sh ) can avoid
195
261
popups asking to accept incoming network connections when running tests.
@@ -457,7 +523,7 @@ $ make
457
523
```
458
524
459
525
460
- ### ` Intl ` (ECMA-402) support:
526
+ ### ` Intl ` (ECMA-402) support
461
527
462
528
[ Intl] ( https://github.com/nodejs/node/blob/master/doc/api/intl.md ) support is
463
529
enabled by default, with English data only.
@@ -469,19 +535,19 @@ the full `Intl` (ECMA-402) APIs. It does not need to download
469
535
any dependencies to function. You can add full
470
536
data at runtime.
471
537
472
- #### Build with full ICU support (all locales supported by ICU):
538
+ #### Build with full ICU support (all locales supported by ICU)
473
539
474
540
With the ` --download=all ` , this may download ICU if you don't have an
475
541
ICU in ` deps/icu ` . (The embedded ` small-icu ` included in the default
476
542
Node.js source does not include all locales.)
477
543
478
- ##### Unix/macOS:
544
+ ##### Unix/macOS
479
545
480
546
``` console
481
547
$ ./configure --with-intl=full-icu --download=all
482
548
```
483
549
484
- ##### Windows:
550
+ ##### Windows
485
551
486
552
``` console
487
553
> .\v cbuild full-icu download-all
@@ -492,19 +558,19 @@ $ ./configure --with-intl=full-icu --download=all
492
558
The ` Intl ` object will not be available, nor some other APIs such as
493
559
` String.normalize ` .
494
560
495
- ##### Unix/macOS:
561
+ ##### Unix/macOS
496
562
497
563
``` console
498
564
$ ./configure --without-intl
499
565
```
500
566
501
- ##### Windows:
567
+ ##### Windows
502
568
503
569
``` console
504
570
> .\v cbuild without-intl
505
571
```
506
572
507
- #### Use existing installed ICU (Unix/macOS only):
573
+ #### Use existing installed ICU (Unix/macOS only)
508
574
509
575
``` console
510
576
$ pkg-config --modversion icu-i18n && ./configure --with-intl=system-icu
@@ -513,7 +579,7 @@ $ pkg-config --modversion icu-i18n && ./configure --with-intl=system-icu
513
579
If you are cross-compiling, your ` pkg-config ` must be able to supply a path
514
580
that works for both your host and target environments.
515
581
516
- #### Build with a specific ICU:
582
+ #### Build with a specific ICU
517
583
518
584
You can find other ICU releases at
519
585
[ the ICU homepage] ( http://icu-project.org/download ) .
@@ -553,7 +619,7 @@ as `deps/icu` (You'll have: `deps/icu/source/...`)
553
619
554
620
## Building Node.js with FIPS-compliant OpenSSL
555
621
556
- This version of Node.js does not support FIPS.
622
+ The current version of Node.js does not support FIPS.
557
623
558
624
## Building Node.js with external core modules
559
625
0 commit comments