Node v17.0.0 (Current)

Bethany Nicolle Griggs

Bethany Nicolle Griggs

Notable Changes

Deprecations and Removals

  • [f182b9b29f] - (SEMVER-MAJOR) dns: runtime deprecate type coercion of dns.lookup options (Antoine du Hamel) #39793
  • [4b030d0573] - doc: deprecate (doc-only) http abort related (dr-js) #36670
  • [36e2ffe6dc] - (SEMVER-MAJOR) module: subpath folder mappings EOL (Guy Bedford) #40121
  • [64287e4d45] - (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns (Guy Bedford) #40117

OpenSSL 3.0

Node.js now includes OpenSSL 3.0, specifically quictls/openssl which provides QUIC support. With OpenSSL 3.0 FIPS support is again available using the new FIPS module. For details about how to build Node.js with FIPS support please see BUILDING.md.

While OpenSSL 3.0 APIs should be mostly compatible with those provided by OpenSSL 1.1.1, we do anticipate some ecosystem impact due to tightened restrictions on the allowed algorithms and key sizes.

If you hit an ERR_OSSL_EVP_UNSUPPORTED error in your application with Node.js 17, it’s likely that your application or a module you’re using is attempting to use an algorithm or key size which is no longer allowed by default with OpenSSL 3.0. A command-line option, --openssl-legacy-provider, has been added to revert to the legacy provider as a temporary workaround for these tightened restrictions.

For details about all the features in OpenSSL 3.0 please see the OpenSSL 3.0 release blog.

Contributed in https://github.com/nodejs/node/pull/38512, https://github.com/nodejs/node/pull/40478

V8 9.5

The V8 JavaScript engine is updated to V8 9.5. This release comes with additional supported types for the Intl.DisplayNames API and Extended timeZoneName options in the Intl.DateTimeFormat API.

You can read more details in the V8 9.5 release post - https://v8.dev/blog/v8-release-95.

Contributed by Michaël Zasso - https://github.com/nodejs/node/pull/40178

Readline Promise API

The readline module provides an interface for reading data from a Readable stream (such as process.stdin) one line at a time.

The following simple example illustrates the basic use of the readline module:

import * as readline from 'node:readline/promises';
import { stdin as input, stdout as output } from 'process';

const rl = readline.createInterface({ input, output });

const answer = await rl.question('What do you think of Node.js? ');

console.log(`Thank you for your valuable feedback: ${answer}`);

rl.close();

Contributed by Antoine du Hamel - https://github.com/nodejs/node/pull/37947

Other Notable Changes

  • [1b2749ecbe] - (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup() (treysis) #39987
  • [59d3d542d6] - (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that cause exit (Divlo) #38332
  • [a35b7e0427] - deps: upgrade npm to 8.1.0 (npm team) #40463
  • [6cd12be347] - (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream() (James M Snell) #39331
  • [d0a898681f] - (SEMVER-MAJOR) lib: add structuredClone() global (Ethan Arrowood) #39759
  • [e4b1fb5e64] - (SEMVER-MAJOR) lib: expose DOMException as global (Khaidi Chu) #39176
  • [0738a2b7bd] - (SEMVER-MAJOR) stream: finished should error on errored stream (Robert Nagy) #39235

Semver-Major Commits

  • [9dfa30bdd5] - (SEMVER-MAJOR) build: compile with C++17 (MSVC) (Richard Lau) #38807
  • [9f0bc602e4] - (SEMVER-MAJOR) build: compile with --gnu++17 (Richard Lau) #38807
  • [62719c5fd2] - (SEMVER-MAJOR) deps: update V8 to 9.5.172.19 (Michaël Zasso) #40178
  • [66da32c045] - (SEMVER-MAJOR) deps,test,src,doc,tools: update to OpenSSL 3.0 (Daniel Bevenius) #38512
  • [40c6e838df] - (SEMVER-MAJOR) dgram: tighten address validation in socket.send (Voltrex) #39190
  • [f182b9b29f] - (SEMVER-MAJOR) dns: runtime deprecate type coercion of dns.lookup options (Antoine du Hamel) #39793
  • [1b2749ecbe] - (SEMVER-MAJOR) dns: default to verbatim=true in dns.lookup() (treysis) #39987
  • [ae876d420c] - (SEMVER-MAJOR) doc: update minimum supported FreeBSD to 12.2 (Michaël Zasso) #40179
  • [59d3d542d6] - (SEMVER-MAJOR) errors: print Node.js version on fatal exceptions that cause exit (Divlo) #38332
  • [f9447b71a6] - (SEMVER-MAJOR) fs: fix rmsync error swallowing (Nitzan Uziely) #38684
  • [f27b7cf95c] - (SEMVER-MAJOR) fs: aggregate errors in fsPromises to avoid error swallowing (Nitzan Uziely) #38259
  • [d0a898681f] - (SEMVER-MAJOR) lib: add structuredClone() global (Ethan Arrowood) #39759
  • [e4b1fb5e64] - (SEMVER-MAJOR) lib: expose DOMException as global (Khaidi Chu) #39176
  • [36e2ffe6dc] - (SEMVER-MAJOR) module: subpath folder mappings EOL (Guy Bedford) #40121
  • [64287e4d45] - (SEMVER-MAJOR) module: runtime deprecate trailing slash patterns (Guy Bedford) #40117
  • [707dd77d86] - (SEMVER-MAJOR) readline: validate AbortSignals and remove unused event listeners (Antoine du Hamel) #37947
  • [8122d243ae] - (SEMVER-MAJOR) readline: introduce promise-based API (Antoine du Hamel) #37947
  • [592d1c3d44] - (SEMVER-MAJOR) readline: refactor Interface to ES2015 class (Antoine du Hamel) #37947
  • [3f619407fe] - (SEMVER-MAJOR) src: allow CAP_NET_BIND_SERVICE in SafeGetenv (Daniel Bevenius) #37727
  • [0a7f850123] - (SEMVER-MAJOR) src: return Maybe from a couple of functions (Darshan Sen) #39603
  • [bdaf51bae7] - (SEMVER-MAJOR) src: allow custom PageAllocator in NodePlatform (Shelley Vohr) #38362
  • [0c6f345cda] - (SEMVER-MAJOR) stream: fix highwatermark threshold and add the missing error (Rongjian Zhang) #38700
  • [0e841b45c2] - (SEMVER-MAJOR) stream: don't emit 'data' after 'error' or 'close' (Robert Nagy) #39639
  • [ef992f6de9] - (SEMVER-MAJOR) stream: do not emit end on readable error (Szymon Marczak) #39607
  • [efd40eadab] - (SEMVER-MAJOR) stream: forward errored to callback (Robert Nagy) #39364
  • [09d8c0c8d2] - (SEMVER-MAJOR) stream: destroy readable on read error (Robert Nagy) #39342
  • [a5dec3a470] - (SEMVER-MAJOR) stream: validate abort signal (Robert Nagy) #39346
  • [bb275ef2a4] - (SEMVER-MAJOR) stream: unify stream utils (Robert Nagy) #39294
  • [b2ae12d422] - (SEMVER-MAJOR) stream: throw on premature close in Readable[AsyncIterator] (Darshan Sen) #39117
  • [0738a2b7bd] - (SEMVER-MAJOR) stream: finished should error on errored stream (Robert Nagy) #39235
  • [954217adda] - (SEMVER-MAJOR) stream: error Duplex write/read if not writable/readable (Robert Nagy) #34385
  • [f4609bdf3f] - (SEMVER-MAJOR) stream: bypass legacy destroy for pipeline and async iteration (Robert Nagy) #38505
  • [e1e669b109] - (SEMVER-MAJOR) url: throw invalid this on detached accessors (James M Snell) #39752
  • [70157b9cb7] - (SEMVER-MAJOR) url: forbid certain confusable changes from being introduced by toASCII (Timothy Gu) #38631

Semver-Minor Commits

  • [6cd12be347] - (SEMVER-MINOR) fs: add FileHandle.prototype.readableWebStream() (James M Snell) #39331
  • [341312d78a] - (SEMVER-MINOR) readline: add autoCommit option (Antoine du Hamel) #37947
  • [1d2f37d970] - (SEMVER-MINOR) src: add --openssl-legacy-provider option (Daniel Bevenius) #40478
  • [3b72788afb] - (SEMVER-MINOR) src: add flags for controlling process behavior (Cheng Zhao) #40339
  • [8306051001] - (SEMVER-MINOR) stream: add readableDidRead (Robert Nagy) #36820
  • [08ffbd115e] - (SEMVER-MINOR) vm: add support for import assertions in dynamic imports (Antoine du Hamel) #40249

Semver-Patch Commits

Windows 32-bit Installer: https://nodejs.org/dist/v17.0.0/node-v17.0.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v17.0.0/node-v17.0.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v17.0.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v17.0.0/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v17.0.0/node-v17.0.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-aix-ppc64.tar.gz
ARMv7 32-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v17.0.0/node-v17.0.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v17.0.0/node-v17.0.0.tar.gz
Other release files: https://nodejs.org/dist/v17.0.0/
Documentation: https://nodejs.org/docs/v17.0.0/api/

SHASUMS

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

ab2a9b508665f88d6516a6322971bbb988dddf311cd26edcaea374ff06ee8f14  node-v17.0.0-aix-ppc64.tar.gz
bba3a1d2638ee194f82a6173296bebabf1b28897a5cd41bbc146629ac05e0751  node-v17.0.0-darwin-arm64.tar.gz
ec178ba85607bde1ead414230c1fb5ad57768dcc224d7a100f13be6f8a0bec3e  node-v17.0.0-darwin-arm64.tar.xz
091f29119bfb2a9004171f4626e0e76021f7f8db07148bd45caa6a61eb2a4e3d  node-v17.0.0-darwin-x64.tar.gz
05a5308c28711ab5593cfbabadf5c62c5063a182bff413bd1336a824ce4c6f20  node-v17.0.0-darwin-x64.tar.xz
8021132e37f0b7dc85c00ad32fb5176d2933ec4a4056a96bd6c3cf632147ec2f  node-v17.0.0-headers.tar.gz
2573e4c4913d38a5d6631ade68fb41ee5ec1e4408024fa4dda3aa4453cefea62  node-v17.0.0-headers.tar.xz
d00e801d49b7419cbb07be4c8f026b43560c4e53579abce9d764edf7ebbc6554  node-v17.0.0-linux-arm64.tar.gz
6573675a97fa63870d5adf4969152e27fb49cdc9a6664bd6364dcc899659d559  node-v17.0.0-linux-arm64.tar.xz
90e0447f4867f624e416fb39373e94734860c7fb158976335673f94607182a43  node-v17.0.0-linux-armv7l.tar.gz
2f260508471f558fa8efa0e1f0be3e3c43c6c6f053db5bfcc8998bd338617fe9  node-v17.0.0-linux-armv7l.tar.xz
9e3f1c7fc59dadb0f9303a11c50247d62688be85c3e70e90c040655b49f93a54  node-v17.0.0-linux-ppc64le.tar.gz
ed5ee6161759cd8db351593a055d279bbf53f28ec45c58236cb275f2f7bc6433  node-v17.0.0-linux-ppc64le.tar.xz
6ae1826a06c974e059b8f6d37d97cce340bcdfc3c6746e1e73139f606de4d6a1  node-v17.0.0-linux-s390x.tar.gz
1b09ea0916cfcfba12b4912cb0671d5331e572b5e14f067433e599ee11ca267c  node-v17.0.0-linux-s390x.tar.xz
252505ade312c6c346c6b8d00e2be9e383446d81430ee4c1e5a04972e0817da4  node-v17.0.0-linux-x64.tar.gz
e3b8c76134a4f693607e679b407bc0783cec7b1fdcab9f13ca7df1ae6acee440  node-v17.0.0-linux-x64.tar.xz
481bf9e955f8d613e1513d10c853c7cc4cda4389929ce3a232024fdf093ed98e  node-v17.0.0.pkg
bcac24b990be48e6d1fead0726cd395b48b0dd05d030396ddac94b628aa03f2f  node-v17.0.0.tar.gz
c352ac4d8e8de429a3f940e202fdffc31dd6809d0e92a5b23ddca9a9a62e35ff  node-v17.0.0.tar.xz
053a6e7e34ae791b25a691fded34bcd3259adb519cea8873b74c93eb6f57c667  node-v17.0.0-win-x64.7z
34fdcaff4f930504b08bf9083f2d6e42f874e1bc93e453d592387f1cc5bb4a2b  node-v17.0.0-win-x64.zip
cf5ca9d60f2b39518f4503675a4f259b67f81a6148bb6307e04be60f91c5e071  node-v17.0.0-win-x86.7z
bf4d9cef6c5ec93b4c482cf5ff856cedcc8383b888a2e7fdcf2cf43c6e9ad5a2  node-v17.0.0-win-x86.zip
746042b936fbd3c67988fcce2b4bfaa0516765b26a02500376427e907ee929f2  node-v17.0.0-x64.msi
c0a3b338ed0519db2bb14890f27f443dcf620ab6d11ef3ce17b2242074bee5c6  node-v17.0.0-x86.msi
b9745ba9b54e7b9f0cc38d66d4783a7224212e4d8630eed0793430b4d0b756e4  win-x64/node.exe
95d44c197ebbc042dbed838ecde8f78c8902dc6d266605859f93c28d2051b3e0  win-x64/node.lib
b3add83b027a8ddfb92a42b7314f3b8b89bfec4c22c2105cff1ecc4a3e3c9c3c  win-x64/node_pdb.7z
da556d50d1a397698aa09b9f6204afd593bae42354384ddc7c6714336bec3152  win-x64/node_pdb.zip
59d4dc681b38776df9baf8b044111b50e29cefb7ec2238d2de8a2df40241f1b3  win-x86/node.exe
708622a96033ea289f09421906e51a32d0cbfde560fb82a78498f3f5a7617152  win-x86/node.lib
7b3108e0a6dd8e068156d009f7aec5b4ee058fd2ece5fd659f421ebda7477f78  win-x86/node_pdb.7z
b23e990313961f397066fb5c729bb4170f80f9dcf40dbac03c482352385a2db9  win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEETtd49TnjY0x3nIfG1wYoSKGrAFwFAmFu5zoACgkQ1wYoSKGr
AFxaDggAlg1cJMRp5xWV6b3ysIVk685j/3Uf5o/qpdaG5EujLzeCZTr4mP2Xr9J4
rzXZIaafOli9ULGulicmbySKyN3OVOBlIutGDtmFPs3HXj7xjx4M/FWnL3BJ2615
iOYsFQzlaI+9uc83IKAk2Mg/SGNytJhjeikTU0pCaev+SPSXg15a8Z7jl4vLr52K
zPxbb6Oldpc5e0ang9kL0TuJIcVQq97a4jDfm6rEx6h3WCjspDZZPaWOGiCNB1Id
Vce1ptCJOeUzNdpqRhnz4P4mkcSwlDc9Cq6Lq7EeLSfG36djrINgkTGGe/og2YhG
GRHvPoEFIdf+mOxzaJSmJMbhhRWWdQ==
=D37b
-----END PGP SIGNATURE-----