Skip to content

2024-03-26, Version 18.20.0 'Hydrogen' (LTS), @richardlau

Compare
Choose a tag to compare
@richardlau richardlau released this 26 Mar 18:00
· 6900 commits to main since this release
v18.20.0
f75dc41

Notable Changes

Added support for import attributes

Support has been added for import attributes, to replace the old import
assertions syntax. This will aid migration by making the new syntax available
across all currently supported Node.js release lines.

This adds the with keyword which should be used in place of the previous
assert keyword, which will be removed in a future semver-major Node.js
release.

For example,

import "foo" assert { ... }

should be replaced with

import "foo" with { ... }

For more details, see

Contributed by Nicolò Ribaudo in #51136
and Antoine du Hamel in #50140.

Doc deprecation for dirent.path

Please use newly added dirent.parentPath instead.

Contributed by Antoine du Hamel in #50976
and #51020.

Experimental node-api feature flags

Introduces an experimental feature to segregate finalizers that affect GC state.
A new type called node_api_nogc_env has been introduced as the const version
of napi_env and node_api_nogc_finalize as a variant of napi_finalize that
accepts a node_api_nogc_env as its first argument.

This feature can be turned off by defining
NODE_API_EXPERIMENTAL_NOGC_ENV_OPT_OUT.

Contributed by Gabriel Schulhof in #50060.

Root certificates updated to NSS 3.98

Certificates added:

  • Telekom Security TLS ECC Root 2020
  • Telekom Security TLS RSA Root 2023

Certificates removed:

  • Security Communication Root CA

Updated dependencies

  • ada updated to 2.7.6.
  • base64 updated to 0.5.2.
  • c-ares updated to 1.27.0.
  • corepack updated to 0.25.2.
  • ICU updated to 74.2. Includes CLDR 44.1 and Unicode 15.1.
  • npm updated to 10.5.0. Fixes a regression in signals not being passed onto child processes.
  • simdutf8 updated to 4.0.8.
  • Timezone updated to 2024a.
  • zlib updated to 1.3.0.1-motley-40e35a7.

vm: fix V8 compilation cache support for vm.Script

Previously repeated compilation of the same source code using vm.Script
stopped hitting the V8 compilation cache after v16.x when support for
importModuleDynamically was added to vm.Script, resulting in a performance
regression that blocked users (in particular Jest users) from upgrading from
v16.x.

The recent fixes allow the compilation cache to be hit again
for vm.Script when --experimental-vm-modules is not used even in the
presence of the importModuleDynamically option, so that users affected by the
performance regression can now upgrade. Ongoing work is also being done to
enable compilation cache support for vm.CompileFunction.

Contributed by Joyee Cheung in #49950
and #50137.

Commits

  • [c70383b8d4] - build: support Python 3.12 (Shi Pujin) #50209
  • [4b960c3a4a] - build: fix incorrect g++ warning message (Richard Lau) #51695
  • [8fdea67694] - crypto: update root certificates to NSS 3.98 (Node.js GitHub Bot) #51794
  • [812b126dd9] - deps: V8: cherry-pick d90d4533b053 (Michaël Zasso) #50077
  • [9ab8c3db87] - deps: update c-ares to 1.27.0 (Node.js GitHub Bot) #51846
  • [c688680387] - deps: update c-ares to 1.26.0 (Node.js GitHub Bot) #51582
  • [9498ac8a47] - deps: compile c-ares with C11 support (Michaël Zasso) #51410
  • [8fb743642f] - deps: update c-ares to 1.25.0 (Node.js GitHub Bot) #51385
  • [7bea2d7c12] - deps: update zlib to 1.3.0.1-motley-40e35a7 (Node.js GitHub Bot) #51274
  • [57a38c8f75] - deps: update zlib to 1.3.0.1-motley-dd5fc13 (Node.js GitHub Bot) #51105
  • [b0ca084a6b] - deps: update zlib to 1.3-22124f5 (Node.js GitHub Bot) #50910
  • [4b43823f37] - deps: update zlib to 1.2.13.1-motley-5daffc7 (Node.js GitHub Bot) #50803
  • [f0da591812] - deps: update zlib to 1.2.13.1-motley-dfc48fc (Node.js GitHub Bot) #50456
  • [16d28a883a] - deps: update base64 to 0.5.2 (Node.js GitHub Bot) #51455
  • [13a9e81cb6] - deps: update base64 to 0.5.1 (Node.js GitHub Bot) #50629
  • [b4502d3ac5] - deps: update simdutf to 4.0.8 (Node.js GitHub Bot) #51000
  • [183cf8a74a] - deps: update simdutf to 4.0.4 (Node.js GitHub Bot) #50772
  • [11ba8593ea] - deps: update ada to 2.7.6 (Node.js GitHub Bot) #51542
  • [73a946d55c] - deps: update ada to 2.7.5 (Node.js GitHub Bot) #51542
  • [cc434c1a39] - deps: update ada to 2.7.4 (Node.js GitHub Bot) #50815
  • [3a3808a6ae] - deps: upgrade npm to 10.5.0 (npm team) #51913
  • [c8876d765c] - deps: upgrade npm to 10.3.0 (npm team) #51431
  • [5aec3af460] - deps: update corepack to 0.25.2 (Node.js GitHub Bot) #51810
  • [a593985326] - deps: update corepack to 0.24.1 (Node.js GitHub Bot) #51459
  • [d1a9237bf5] - deps: update corepack to 0.24.0 (Node.js GitHub Bot) #51318
  • [adac0c7a63] - deps: update corepack to 0.23.0 (Node.js GitHub Bot) #50563
  • [4a6f83e32a] - deps: escape Python strings correctly (Michaël Zasso) #50695
  • [c13969e52a] - deps: V8: cherry-pick ea996ad04a68 (Nicolò Ribaudo) #51136
  • [6fbf0ba5c3] - deps: V8: cherry-pick a0fd3209dda8 (Nicolò Ribaudo) #51136
  • [68fd7516e1] - deps: update timezone to 2024a (Michaël Zasso) #51723
  • [f9b229ebe1] - deps: update icu to 74.2 (Michaël Zasso) #51723
  • [90c73d2eb4] - deps: update timezone to 2023d (Node.js GitHub Bot) #51461
  • [2a2bf57028] - deps: update icu to 74.1 (Node.js GitHub Bot) #50515
  • [425e011e52] - deps: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) #49874
  • [58c70344a2] - deps: V8: cherry-pick 705e374124ae (Joyee Cheung) #51004
  • [b0e88899e1] - deps: V8: cherry-pick 1fada6b36f8d (Joyee Cheung) #51004
  • [d87a810b81] - deps: V8: cherry-pick 3dd9576ce336 (Joyee Cheung) #51004
  • [6d50966876] - deps: V8: cherry-pick 94e8282325a1 (Joyee Cheung) #51004
  • [fafbacdfec] - deps: V8: cherry-pick 9a98f96b6d68 (Joyee Cheung) #51004
  • [d4a530ed8d] - deps: V8: cherry-pick 7f5daed62d47 (Joyee Cheung) #51004
  • [1ce901b164] - deps: V8: cherry-pick c400af48b5ef (Joyee Cheung) #51004
  • [f232064f35] - doc: fix historical experimental fetch flag (Kenrick) #51506
  • [194ff6a40f] - (SEMVER-MINOR) doc: add deprecation notice to dirent.path (Antoine du Hamel) #50976
  • [0f09267dc6] - (SEMVER-MINOR) doc: deprecate dirent.path (Antoine du Hamel) #50976
  • [8bfb8f5b2f] - doc,crypto: further clarify RSA_PKCS1_PADDING support (Tobias Nießen) #51799
  • [c7baf7b274] - doc,crypto: add changelog and note about disabled RSA_PKCS1_PADDING (Filip Skokan) #51782
  • [a193be3dc2] - esm: use import attributes instead of import assertions (Antoine du Hamel) #50140
  • [26e8f7793e] - (SEMVER-MINOR) fs: introduce dirent.parentPath (Antoine du Hamel) #50976
  • [5b5e5192f7] - lib: fix compileFunction throws range error for negative numbers (Jithil P Ponnan) #49855
  • [7552de6806] - module: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) #48510
  • [2e05cf1c60] - module: fix leak of vm.SyntheticModule (Joyee Cheung) #48510
  • [a86a2e14a3] - module: use symbol in WeakMap to manage host defined options (Joyee Cheung) #48510
  • [32906ddcac] - node-api: segregate nogc APIs from rest via type system (Gabriel Schulhof) #50060
  • [1aa71c26ff] - node-api: factor out common code into macros (Gabriel Schulhof) #50664
  • [3d0b233f52] - node-api: introduce experimental feature flags (Gabriel Schulhof) #50991
  • [96514a8b9f] - src: iterate on import attributes array correctly (Michaël Zasso) #50703
  • [2c2892bf88] - src: set ModuleWrap internal fields only once (Joyee Cheung) #49391
  • [ff334cb774] - src: cast v8::Object::GetInternalField() return value to v8::Value (Joyee Cheung) #48943
  • [270b519971] - stream: do not defer construction by one microtick (Matteo Collina) #52005
  • [95d7a75084] - test: fix dns test case failures after c-ares update to 1.21.0+ (Brad House) #50743
  • [cd613e5167] - test: handle relative https redirect (Richard Lau) #51121
  • [40f10eafcf] - test: fix internet/test-inspector-help-page (Richard Lau) #51693
  • [5e426511b1] - test: deflake test-vm-contextified-script-leak (Joyee Cheung) #49710
  • [0b156c6d28] - test: use checkIfCollectable in vm leak tests (Joyee Cheung) #49671
  • [1586c11b3c] - test: add checkIfCollectable to test/common/gc.js (Joyee Cheung) #49671
  • [902d8b3d4b] - test: fix flaky http-chunk-extensions-limit test (Ethan Arrowood) #51943
  • [1743d2bdc1] - test: test surrogate pair filenames on windows (Mert Can Altın) #51800
  • [1c1a7ec22d] - test: increase platform timeout zlib-brotli-16gb (Rafael Gonzaga) #51792
  • [931d02fe3e] - test, v8: fix wrong import attributes test (Nicolò Ribaudo) #52184
  • [d9ea6c1f8d] - tls: fix order of setting cipher before setting cert and key (Kumar Rishav) #50186
  • [3184befa2e] - tools: fix update-icu.sh (Michaël Zasso) #51723
  • [06646e11be] - (SEMVER-MINOR) vm: use import attributes instead of import assertions (Antoine du Hamel) #50141
  • [fe66e9d06e] - vm: reject in importModuleDynamically without --experimental-vm-modules (Joyee Cheung) #50137
  • [052e095c6b] - vm: use internal versions of compileFunction and Script (Joyee Cheung) #50137
  • [9f7899ed0a] - vm: unify host-defined option generation in vm.compileFunction (Joyee Cheung) #50137
  • [6291c107d0] - vm: use default HDO when importModuleDynamically is not set (Joyee Cheung) #49950