doc: update supported platforms for Node.js 12 · nodejs/node@b581d59 (original) (raw)

`@@ -13,38 +13,38 @@ file a new issue.

`

13

13

`* Supported platforms

`

14

14

`* Input

`

15

15

`* Strategy

`

16

``

`-

`

``

16

`+

`

17

17

`* Supported toolchains

`

18

``

`-

`

19

``

`-

`

20

``

`-

`

``

18

`+

`

21

19

`* OpenSSL asm support

`

``

20

`+

`

22

21

`* Building Node.js on supported platforms

`

23

22

`* Unix/macOS

`

24

23

`* Prerequisites

`

25

``

`-

`

``

24

`+

`

26

25

`* Running Tests

`

27

26

`* Running Coverage

`

28

27

`* Building the documentation

`

29

28

`* Building a debug build

`

30

``

`-

`

``

29

`+

`

31

30

`* Android/Android-based devices (e.g. Firefox OS)

`

32

31

`` * Intl (ECMA-402) support

``

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

`* Build with a specific ICU

`

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

``

`-

`

63

``

`-

the broader community.

`

64

``

`-

`

65

``

`-

vendor of the platform.

`

66

``

`-

`

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

`+

`

``

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

`+

`

``

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

`+

`

``

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

`+

Toolchain test builds PPA

`

``

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

`+

devtoolset-6

`

``

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

``

`-

`

116

``

`-

`

117

``

-

118

``

`-

AIX

`

119

``

`-

`

120

``

-

121

``

`-

Windows

`

122

``

-

123

``

`-

`

``

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

``

`` -

``

160

``

`` -

``

``

225

`` +

``

``

226

`+

`

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.

`

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

`the ICU homepage.

`

`` @@ -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

``