Node v16.0.0 (Current)

By Bethany Nicolle Griggs,

Notable Changes

Deprecations and Removals

  • (SEMVER-MAJOR) fs: remove permissive rmdir recursive (Antoine du Hamel) #37216
  • (SEMVER-MAJOR) fs: runtime deprecate rmdir recursive option (Antoine du Hamel) #37302
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('http_parser') (James M Snell) #37813
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('url') (James M Snell) #37799
  • (SEMVER-MAJOR) lib: make process.binding('util') return only type checkers (Anna Henningsen) #37819
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('crypto') (James M Snell) #37790
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('signal_wrap') (James M Snell) #37800
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('v8') (James M Snell) #37789
  • (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('async_wrap') (James M Snell) #37576
  • (SEMVER-MAJOR) module: remove module.createRequireFromPath (Antoine du Hamel) #37201
  • (SEMVER-MAJOR) module: runtime deprecate subpath folder mappings (Antoine du Hamel) #37215
  • (SEMVER-MAJOR) module: runtime deprecate "main" index and extension lookups (Antoine du Hamel) #37206
  • (SEMVER-MAJOR) module: runtime deprecate invalid package.json main entries (Antoine du Hamel) #37204
  • (SEMVER-MAJOR) process: runtime deprecate changing process.config (James M Snell) #36902

Stable Timers Promises API

The Timers Promises API provides an alternative set of timer functions that return Promise objects. Added in Node.js v15.0.0, in this release they graduate from experimental status to stable.

Contributed by James Snell - #38112

Toolchain and Compiler Upgrades

Node.js v16.0.0 will be the first release where we ship prebuilt binaries for Apple Silicon. While we’ll be providing separate tarballs for the Intel (darwin-x64) and ARM (darwin-arm64) architectures the macOS installer (.pkg) will be shipped as a ‘fat’ (multi-architecture) binary.

  • (SEMVER-MAJOR) build: remove support for Python 2 (Christian Clauss) #36691
  • (SEMVER-MAJOR) build: default PYTHON to python3 in Makefile (Michaël Zasso) #37764
  • build: update Makefile to support fat binary (Ash Cripps) #37861
  • (SEMVER-MAJOR) build: enable ASLR (PIE) on OS X (woodfairy) #35704
  • build: warn for gcc versions earlier than 8.3.0 (Richard Lau) #37935
  • (SEMVER-MAJOR) doc: update minimum supported Xcode to 11 (Michaël Zasso) #37872
  • (SEMVER-MAJOR) doc: update minimum supported GCC to 8.3 (Michaël Zasso) #37871
  • (SEMVER-MAJOR) doc: update AIX to GCC8 for v16.x (Ash Cripps) #37677
  • tools: set arch in Distribution.xml (Ash Cripps) #38261

V8 9.0

The V8 JavaScript engine is updated to V8 9.0, including performance tweaks and improvements.

This update also brings the ECMAScript RegExp Match Indices, which provide the start and end indices of the captured string. The indices array is available via the .indices property on match objects when the regular expression has the /d flag.

Contributed by Michaël Zasso - #37587

Other Notable Changes

  • (SEMVER-MINOR) assert: graduate assert.match and assert.doesNotMatch (James M Snell) #38111
  • (SEMVER-MAJOR) buffer: expose btoa and atob as globals (James M Snell) #37786
  • (SEMVER-MAJOR) deps: bump minimum ICU version to 68 (Michaël Zasso) #37330
  • deps: update ICU to 69.1 (Michaël Zasso) #38178
  • deps: update llhttp to 6.0.0 (Fedor Indutny) #38277
  • deps: upgrade npm to 7.10.0 (Ruy Adorno) #38254
  • (SEMVER-MINOR) http: add http.ClientRequest.getRawHeaderNames() (simov) #37660
  • (SEMVER-MAJOR) lib,src: update cluster to use Parent (Michael Dawson) #36478
  • (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #37246
  • (SEMVER-MINOR) perf_hooks: add histogram option to timerify (James M Snell) #37475
  • (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #37246
  • (SEMVER-MINOR) util: add getSystemErrorMap() impl (eladkeyshawn) #38101

Semver-Major Commits

  • [324a6c235a] - (SEMVER-MAJOR) async_hooks: add thisArg to AsyncResource.bind (James M Snell) #36782
  • [d1e2184c8e] - (SEMVER-MAJOR) buffer: expose btoa and atob as globals (James M Snell) #37786
  • [4268fae04a] - (SEMVER-MAJOR) build: remove support for Python 2 (Christian Clauss) #36691
  • [c3a5e15ebe] - (SEMVER-MAJOR) build: default PYTHON to python3 in Makefile (Michaël Zasso) #37764
  • [1d8c022544] - (SEMVER-MAJOR) build: update Makefile to support fat binary (Ash Cripps) #37861
  • [38f32386c1] - (SEMVER-MAJOR) build: include minimal V8 headers in distribution (Michaël Zasso) #37570
  • [a19af5ee71] - (SEMVER-MAJOR) build: use C++11 ABI with libstdc++ (Anna Henningsen) #36634
  • [8d6b74d347] - (SEMVER-MAJOR) build: enable ASLR (PIE) on OS X (woodfairy) #35704
  • [732ad99e47] - (SEMVER-MAJOR) deps: update V8 to 9.0.257.11 (Michaël Zasso) #37587
  • [43cc8e4b2e] - (SEMVER-MAJOR) deps: bump minimum ICU version to 68 (Michaël Zasso) #37330
  • [c5ff019a4e] - (SEMVER-MAJOR) deps: update V8 to 8.9.255.19 (Michaël Zasso) #37330
  • [c7b3292251] - (SEMVER-MAJOR) deps: update V8 to 8.8.278.17 (Michaël Zasso) #36139
  • [48db20f6f5] - (SEMVER-MAJOR) deps: update V8 to 8.7.220 (Michaël Zasso) #35700
  • [d85e1f0703] - (SEMVER-MAJOR) dns: use url module instead of punycode for IDNA (Antoine du Hamel) #35091
  • [290c158018] - (SEMVER-MAJOR) doc: update minimum supported Xcode to 11 (Michaël Zasso) #37872
  • [1ff2918d80] - (SEMVER-MAJOR) doc: update minimum supported GCC to 8.3 (Michaël Zasso) #37871
  • [2706e67116] - (SEMVER-MAJOR) doc: update AIX to GCC8 for v16.x (Ash Cripps) #37677
  • [5ae5ca90ef] - (SEMVER-MAJOR) doc: add http.IncomingMessage#connection (Pranshu Srivastava) #33768
  • [83d6e63aee] - (SEMVER-MAJOR) events: change EventTarget handler exception behavior (Nitzan Uziely) #37237
  • [9948036ee0] - (SEMVER-MAJOR) fs: remove permissive rmdir recursive (Antoine du Hamel) #37216
  • [d4693ff430] - (SEMVER-MAJOR) fs: add validation for fd and path (Dylan Elliott) #35187
  • [0ddd75bcd8] - (SEMVER-MAJOR) fs: runtime deprecate rmdir recursive option (Antoine du Hamel) #37302
  • [da217d0773] - (SEMVER-MAJOR) fs: fix flag and mode validation (James M Snell) #37480
  • [2ef9a76ece] - (SEMVER-MAJOR) http: use objects with null prototype in Agent (Michaël Zasso) #36409
  • [25e30005b8] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('http_parser') (James M Snell) #37813
  • [8bb4e048af] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('url') (James M Snell) #37799
  • [fe73e4d578] - (SEMVER-MAJOR) lib: make process.binding('util') return only type checkers (Anna Henningsen) #37819
  • [3bee6d8aad] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('crypto') (James M Snell) #37790
  • [ac00df112e] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('signal_wrap') (James M Snell) #37800
  • [ae595d76e3] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('v8') (James M Snell) #37789
  • [104dac79cc] - (SEMVER-MAJOR) lib: aggregate errors to avoid error swallowing (Antoine du Hamel) #37460
  • [1468c9ff7c] - (SEMVER-MAJOR) lib: runtime deprecate access to process.binding('async_wrap') (James M Snell) #37576
  • [295e766c27] - (SEMVER-MAJOR) lib: remove usage of url.parse (raisinten) #36853
  • [cb3020d824] - (SEMVER-MAJOR) lib: add error handling for input stream (rexagod) #31603
  • [15164cebce] - (SEMVER-MAJOR) lib,src: update cluster to use Parent (Michael Dawson) #36478
  • [3cc9aec988] - (SEMVER-MAJOR) module: runtime deprecate subpath folder mappings (Antoine du Hamel) #37215
  • [9fab73c73b] - (SEMVER-MAJOR) module: runtime deprecate "main" index and extension lookups (Antoine du Hamel) #37206
  • [76a073b67e] - (SEMVER-MAJOR) module: runtime deprecate invalid package.json main entries (Antoine du Hamel) #37204
  • [674614b3f5] - (SEMVER-MAJOR) module: remove module.createRequireFromPath (Antoine du Hamel) #37201
  • [aecd5ebf49] - (SEMVER-MAJOR) module: only set cache when finding module succeeds (Yongsheng Zhang) #36642
  • [f0bf373176] - (SEMVER-MAJOR) perf_hooks: make performance a global (James M Snell) #37970
  • [f3eb224c83] - (SEMVER-MAJOR) perf_hooks: complete overhaul of the implementation (James M Snell) #37136
  • [f1753d4c76] - (SEMVER-MAJOR) process: disallow adding options to process.allowedNodeEnvironmentFlags (Antoine du Hamel) #36660
  • [96f3977ded] - (SEMVER-MAJOR) process: runtime deprecate changing process.config (James M Snell) #36902
  • [45dbcbef90] - (SEMVER-MAJOR) readline: cursorTo throw error on NaN (Zijian Liu) #36379
  • [bf79987433] - (SEMVER-MAJOR) src: mark internally exported functions as explicitly internal (Tyler Ang-Wanek) #37000
  • [1fe571aa0c] - (SEMVER-MAJOR) src: inline AsyncCleanupHookHandle in headers (Tyler Ang-Wanek) #37000
  • [dfc288e7fd] - (SEMVER-MAJOR) src: clean up embedder API (Anna Henningsen) #35897
  • [65e8864fa3] - (SEMVER-MAJOR) worker: send correct error status for worker init (Yash Ladha) #36242

Semver-Minor Commits

  • [944a956087] - (SEMVER-MINOR) assert: graduate assert.match and assert.doesNotMatch (James M Snell) #38111
  • [6a1986d50a] - (SEMVER-MINOR) deps: update llhttp to 5.1.0 (Fedor Indutny) #38146
  • [069b5df4f6] - (SEMVER-MINOR) module: add support for node:‑prefixed require(…) calls (ExE Boss) #37246
  • [b803bca4fa] - (SEMVER-MINOR) perf_hooks: add histogram option to timerify (James M Snell) #37475
  • [95391fe689] - (SEMVER-MINOR) repl: add auto‑completion for node:‑prefixed require(…) calls (ExE Boss) #37246
  • [15b8e6b1c4] - (SEMVER-MINOR) timers: graduate awaitable timers and improve docs (James M Snell) #38112
  • [802171057f] - (SEMVER-MINOR) util: add getSystemErrorMap() impl (eladkeyshawn) #38101

Semver-Patch Commits

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

SHASUMS

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

a6aee31e1fd8f55dc78007de2e4ac0d8e0dadd36beacfbabbaf9ab27a5f1f2f4  node-v16.0.0-aix-ppc64.tar.gz
2d6d412abcf7c9375f19fde14086a6423e5bb9415eeca1ccad49638ffc476ea3  node-v16.0.0-darwin-arm64.tar.gz
f8710a83738b4408da82fe81b7934373e4d2f84d40c8c1217676119fd3c77c7e  node-v16.0.0-darwin-arm64.tar.xz
b00457dd7da6cc00d0248dc57b4ddd01a71eed6009ddadd8c854678232091dfb  node-v16.0.0-darwin-x64.tar.gz
66ecffa48b98cf1ca4d038b42b74f05bfc4d31681e2aa43a1ba50919ea23823b  node-v16.0.0-darwin-x64.tar.xz
a4d665582e492bf013ce67b1fadb7db9cb8fd46e7d02a30f5e473373d452e377  node-v16.0.0-headers.tar.gz
f5f178e75d78bd050d1a85ea56189bae6038d9d21d032e7889dbb22fa54da71d  node-v16.0.0-headers.tar.xz
22e7d326b21195c4a0df92a7af7cfdf1743cd46fcc50e335e4086a1c1f2a9a13  node-v16.0.0-linux-arm64.tar.gz
c6dc688de6373049f21cb1ca4f2ceefe80a5d711e301b8d54fd0a7c36a406b03  node-v16.0.0-linux-arm64.tar.xz
d4e2965224ca0667732836be249ec32ad899f7f01d932121daca76cbf38e75f1  node-v16.0.0-linux-armv7l.tar.gz
1cb4bf1bac74f492f9182e44422e245cc2a971889e34f4e554b7c45eb080304c  node-v16.0.0-linux-armv7l.tar.xz
bc28902e8e1453531bb38001cf705dff2456cdf5b856a37dac2f2d3d771b02c1  node-v16.0.0-linux-ppc64le.tar.gz
10bc1b3c18a05811a4497aa77b7951d963baecf033aa436358e28ba3cde28090  node-v16.0.0-linux-ppc64le.tar.xz
3cdfafc6425aace2ab24a31dcac26564a494094c7521b50dc41f3c538b3700ec  node-v16.0.0-linux-s390x.tar.gz
27a5a70178cd765c8b37aa49d18d05e7338c9b043b3195d4cbf28955ca3c9aa2  node-v16.0.0-linux-s390x.tar.xz
9268cdb3c71cec4f3dc3bef98994f310c3bef259fae8c68e3f1c605c5dfcbc58  node-v16.0.0-linux-x64.tar.gz
1736446bb102e19942addce29f6a12b157ca71f38b9159d0446f51ba69618b8d  node-v16.0.0-linux-x64.tar.xz
fe1d4f458a8b3e85c7c927c5a342d09407915b77ade5303fc98b0deeec89a3db  node-v16.0.0.pkg
ef4928ed381dcb8f5eca9c521b3ffa4a384c75cc76656999e16f5d1c171d8e7b  node-v16.0.0.tar.gz
47cb90111e8c3dc42dc538464789415354f0d933587fc89fff71f9bd816aaa02  node-v16.0.0.tar.xz
8b78d362582746c5157b9e703bdd16c3da54c51efa12bed8fdf0e30e2bfdbce6  node-v16.0.0-win-x64.7z
99c2b01afb8d966fc876ec30ac7dfdbd9da9b17a3daeda92c19ce657ab9bea61  node-v16.0.0-win-x64.zip
04859c6d5a1d5054e57d1c1eb8f58a13d9d6e0ea079fe83d9b79d3a9aa401cc5  node-v16.0.0-win-x86.7z
0600dffb5331b6f49e6ff4fa97770811746e0e2ecaf53de6deaafff277a644b4  node-v16.0.0-win-x86.zip
9309bda5a68c353145acc2fa9fbe3ec98a0234b3946a9861997f60b4b89b83a7  node-v16.0.0-x64.msi
6d7404b6e6f0c2a9cd396ce56eb68d2e0d2e5df434554345e075707bff7bc384  node-v16.0.0-x86.msi
f5d19a86afc817068ab7120919a4f96b43e60a7abe3282c3797a50f1cc723930  win-x64/node.exe
32063b59c6df338e1d367eea513dc04abcc1768f4af5ba2bb764dfd1af41e6cc  win-x64/node.lib
f369ce51bda686c451740c1805fa692554568dbc55992026bb17346f5ada6f7e  win-x64/node_pdb.7z
aa12acfbc081eea9a5d625471ce93ebd711c9c6785a76d940b442b672a1d2025  win-x64/node_pdb.zip
eab4525927aadf29b0e257a96a0c7afab1d42a52680622b6bf366690a6fc4d38  win-x86/node.exe
3130ffd2b70c7b3b227f62d97090d3204bb64a319a7257821ff61eb86b645d61  win-x86/node.lib
2d7feeb1a4bb7b2a7e0fe45dc39550d5913d96ff34f10f48d747f2e90b143745  win-x86/node_pdb.7z
47a135fcf66526de3fae114a554ff810567fd837d9f764527e307acc076f1384  win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEETtd49TnjY0x3nIfG1wYoSKGrAFwFAmB++dEACgkQ1wYoSKGr
AFzs1Af/T7bep8whLJueuaJzRhh7BGX/nzPEHU7GP215nNqbN7Simg1Xj+5QCANb
AQYjNe86Fff8JaIp6sQV40qeSEC2PNGx6mp0Rjq8SogqT5NXmRs74VVLZ+H1YERf
0Zy19USOlpSMsK4LJdhU5paShzl9xsw1Lpk7e3XDhANmL2Fd+OWiV546z/dIoKN4
v7e2cbdiYrCYEjQbY6EFyPi/As+r9MjnX7ggXQ8ZD7hRshv7dxYFSRSaIkcUNBZn
J6qRFwbVyAdFzmbUNJREt8ky2ZpwU1p2Cdl/jkWGCjxl1fUSN4/V+9bMSzRaQW/+
t/e5lo+lKhleYXFEK7B5h1Ss6F2MpA==
=v9uW
-----END PGP SIGNATURE-----