doc: update supported platforms for Node.js 12 · nodejs/node@b581d59 (original) (raw)
`@@ -13,38 +13,38 @@ file a new issue.
`
13
13
`
14
14
`* Input
`
15
15
`* Strategy
`
16
``
`-
`
``
16
`+
`
17
17
`
18
``
`-
`
19
``
`-
`
20
``
`-
`
``
18
`+
`
21
19
`
``
20
`+
`
22
21
`* Building Node.js on supported platforms
`
23
22
`* Unix/macOS
`
24
23
`
25
``
`-
`
``
24
`+
`
26
25
`
27
26
`
28
27
`
29
28
`
30
``
`-
`
``
29
`+
`
31
30
`* Android/Android-based devices (e.g. Firefox OS)
`
32
31
``
33
32
`` * Default: small-icu
(English only) support
``
34
33
`* Build with full ICU support (all locales supported by ICU)
`
35
34
`* Unix/macOS
`
36
``
`-
`
``
35
`+
`
37
36
`* Building without Intl support
`
38
37
`* Unix/macOS
`
39
``
`-
`
``
38
`+
`
40
39
`* Use existing installed ICU (Unix/macOS only)
`
41
40
`
42
41
`* Unix/macOS
`
43
``
`-
`
``
42
`+
`
44
43
`* Building Node.js with FIPS-compliant OpenSSL
`
45
44
`* Building Node.js with external core modules
`
46
45
`* Unix/macOS
`
47
``
`-
`
``
46
`+
`
``
47
`+
`
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 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,2,3 |
`
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
``
`-
1: Tier 1 support for building on Windows is only on 64-bit
`
93
``
`-
hosts. Support is experimental for 32-bit hosts.
`
94
``
-
95
``
`-
2: 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 1, Debian 9, EL 7 2 |
`
``
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 3 |
`
``
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 | 4,5 |
`
``
109
`+
| Windows | x86 (native) | >= Windows 7/2008 R2/2012 R2 | Tier 1 (running) / Experimental (compiling) 6 | |
`
``
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
`+
1: GCC 6 is not provided on the base platform, users will
`
``
117
`+
need the
`
``
118
`+
`
``
119
`+
or similar to source a newer compiler.
`
``
120
+
``
121
`+
2: GCC 6 is not provided on the base platform, users will
`
``
122
`+
need the
`
``
123
`+
`
``
124
`+
or later to source a newer compiler.
`
``
125
+
``
126
`+
3: Older kernel versions may work for ARM64, however the
`
``
127
`+
Node.js test infrastructure only tests >= 4.5.
`
``
128
+
``
129
`+
4: On Windows, running Node.js in Windows terminal emulators
`
96
130
`` like mintty
requires the usage of 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
``
`-
3: The Windows Subsystem for Linux (WSL) is not directly
`
``
135
`+
5: 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. 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
`+
6: 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 |
`
``
168
`+
| linux-ppc64le | Ubuntu 14.04 with GCC 6 |
`
``
169
`+
| linux-s390x | RHEL 7 with devtoolset-6 / GCC 6 7 |
`
``
170
`+
| linux-x64 | CentOS 7 with devtoolset-6 / GCC 6 7 |
`
``
171
`+
| sunos-x64 | SmartOS 18 with GCC 7 |
`
``
172
`+
| win-x64 and win-x86 | Windows 2012 R2 (x64) with Visual Studio 2017 |
`
``
173
+
``
174
`+
7: 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
`+
`
``
213
`+
`
``
214
`+
`
``
215
+
150
216
`## Building Node.js on supported platforms
`
151
217
``
152
218
`The bootstrapping guide
`
`@@ -156,8 +222,8 @@ explains how to install all prerequisites.
`
156
222
``
157
223
`#### Prerequisites
`
158
224
``
159
``
`` -
gcc
andg++
4.9.4 or newer, or
``
160
``
`` -
clang
andclang++
3.4.2 or newer (macOS: latest Xcode Command Line Tools)
``
``
225
`` +
gcc
andg++
>= 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
`
190
256
``
191
``
`` -
Note that the above requires that python
resolve to Python 2.7 and not a newer
``
192
``
`-
version. See Prerequisites.
`
``
257
`` +
Note that the above requires that python
resolves to a supported version of
``
``
258
`+
Python. See Prerequisites.
`
193
259
``
194
260
`After building, setting up firewall rules 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
`> .\vcbuild 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`
`> .\vcbuild 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
`
`` @@ -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
``