Node v18.20.0 (LTS)
Richard Lau
2024-03-26, Version 18.20.0 'Hydrogen' (LTS), @richardlau
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 todirent.path
(Antoine du Hamel) #50976 - [
0f09267dc6
] - (SEMVER-MINOR) doc: deprecatedirent.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: introducedirent.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: fixinternet/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
Windows 32-bit Installer: https://nodejs.org/dist/v18.20.0/node-v18.20.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v18.20.0/node-v18.20.0-x64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v18.20.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v18.20.0/win-x64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v18.20.0/node-v18.20.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-aix-ppc64.tar.gz
ARMv7 32-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v18.20.0/node-v18.20.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v18.20.0/node-v18.20.0.tar.gz
Other release files: https://nodejs.org/dist/v18.20.0/
Documentation: https://nodejs.org/docs/v18.20.0/api/
SHASUMS
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
e1203ef936317ca9dc3d5a8b4957014b6f00f334b741139df44e5eed6e81660e node-v18.20.0-aix-ppc64.tar.gz
10066ad4dd9e03ea5c4c45ef8775420ff37b860de09bbdf87b97e0c07b1ea036 node-v18.20.0-darwin-arm64.tar.gz
1f12fbcd5c8b9a80669e3cdf7037f864260610962fb69752130641276c82c47a node-v18.20.0-darwin-arm64.tar.xz
062ba71618e88e06321de5caa038843c350aababa2d315f3ca7b8551f8e66c1c node-v18.20.0-darwin-x64.tar.gz
c8afd1aac8759e69e35dd4aea8a19c6c3ab23d76fe5bccd0d3dc821354ef8043 node-v18.20.0-darwin-x64.tar.xz
b3c58422afab272e35c2eb8a79534cbb2571da0cc8b662972be93edbac567eaf node-v18.20.0-headers.tar.gz
3c554e939b14afddb7695a3c560eb95cc313f8ff22fc6cba29cf9d879f5e08bf node-v18.20.0-headers.tar.xz
93ff82497bf2ff7c0b2549637dd5098039439aa7805b08412cc71a98d437d9dd node-v18.20.0-linux-arm64.tar.gz
afe51da9ffb38ac1e3a20d9a06efd403ced4bf8831ab554a02a088dd8392fd79 node-v18.20.0-linux-arm64.tar.xz
2b63df8b0e6f57efd41b9e0d55a1da302283884aa06e2f54d303f6c9b3d74614 node-v18.20.0-linux-armv7l.tar.gz
076d62655154f5af14a3a7c690aaea9d2a6fe0d0d1cbfcbaa4bac51416b2c2c3 node-v18.20.0-linux-armv7l.tar.xz
9e652bbf53a3e37285b11dfb9d6a9bb8b02010c3b50e5c8229d4cc10e72681da node-v18.20.0-linux-ppc64le.tar.gz
433e5abf116a39b89b86637dde064d5d987628cd963513bdd9fe4757314821a3 node-v18.20.0-linux-ppc64le.tar.xz
172de3836c23634e965b7b48e193389e3869b2e822f7577b1f595181dd3526a6 node-v18.20.0-linux-s390x.tar.gz
a6c2a5796b9d9e9bf21da62ec89ff30b41a8108880b9eaa3c912f1ce795a7743 node-v18.20.0-linux-s390x.tar.xz
80620426d177141aa99376de2ad1cb5ed461104cc53c0a5334df91467c60cac3 node-v18.20.0-linux-x64.tar.gz
03eea148e56785babb27930b05ed6bf311aaa3bc573c0399dd63cad2fe5713c7 node-v18.20.0-linux-x64.tar.xz
e09a80c95d1c6fa705542e3cd7e9215531f2bf90d0542526e578002294c46469 node-v18.20.0.pkg
6961be205e1f88272fbcfced2d07febf2a708fc1f2aa8fac5f383448d900da92 node-v18.20.0.tar.gz
04c86779a2cc7eefdfcf379a9d85883aa1d3b1dc8909b6221b163684817856a4 node-v18.20.0.tar.xz
ba9dfcc964e81e75561167b0b091160ceb597b19708bb8241e78691900d93e7a node-v18.20.0-win-x64.7z
1c0aab05cc6836a8f5148cca345b92ebc948a4a2013f18d117b7ade6ff05aca6 node-v18.20.0-win-x64.zip
ad51c028ff4dc4f6c7db894c754aed68efda69356ffc1bc9de590ff223cbd278 node-v18.20.0-win-x86.7z
c2f7a0e7a72f129a7a0873967d146a4076e313535b28f89af86f28581d801929 node-v18.20.0-win-x86.zip
bd0c8b9395d3d557100dce101b4389e287d6d738d2631cb05f1977c9544c561b node-v18.20.0-x64.msi
43b21eae9afb028c8063e75ea813367b1882f9a89dd0e3689b4dbc782b4c3b6e node-v18.20.0-x86.msi
fc346b6005bc3e499c785b666b6eaa12f5472fdc1f8974ec06e420cc9e24084d win-x64/node.exe
64d93225aaece04e3cd45177d6dea2b22df49e127281fefa3ade43ac46a36cc6 win-x64/node.lib
0578c4eafc0fe3ffac13939040d15a1e0e139ea03a2cdae9139541a1f7c656e9 win-x64/node_pdb.7z
33e7f2df6ffa215818f8c5b312792f56d673166b36e289cb8457aa838ba217b6 win-x64/node_pdb.zip
e43c9c39ff9901946ece51078e15c54abe95a46f0eace502edc4fe562aed0e53 win-x86/node.exe
df34047e8ae646e6f43d76ecbec9709a185f29e01f49b377c4c46070cacc2859 win-x86/node.lib
cbc76028e2d28cd95ca8d1c8cac7bf5b524bebcc6ad9421a2dbfb4f4dc1e1164 win-x86/node_pdb.7z
2fc78e5e09afdbbed40fe39fc4b12bf139af67c00226da82d204b567dfb43fe2 win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEyC+jrhy+3Gvka5NgxDzsRcF6uTwFAmYDChEACgkQxDzsRcF6
uTz8jw//UcblZ55SqS9lJdJsPN7tVSH05QwBmBKvOUxd3jr83Ljgu3wKxXQj5S/c
Pnvlhm4LK8FtoAT/US+fhe+RCtYtic+M0dzhq7Boe55rDvsxeUGlA8qKcQY7+snj
hS6tQYMYvW+4HZrmdZ1HcC5bs86kAgmj29I3XCOrAKVNkf/VZ/JSH/1oBky2b6PK
QKFKUM5Z5SG/hnSedrpnoNf1udYd4BJalwic9txLLXU2Xu1JcuIU9Sukw9Vb5H+9
MNlOvYJpk8vlimvwa71+bwCBIYnksvABpYilm55XZ8c0Hfu4slJl+adDp8O7pEj3
TcX4j4QT0z+z6XiRIAPA0JIWYNVVPqtNKyx6uAReEwCNgjKrlwNe6JiTcg0shbnr
rTVtwuOOB+PFNl0DZ63HIaPp+368T2cbLlVLb8wb6tSeA9qgI2qAOk9MiWLHUFCu
M/6IlZUoB2MBKjtmvs+y7mCCqcUN++L3+2j9A1qTv6omvV+xroUo74JgrMim4LN4
fTGesVB3hPwNOHTSdQTT8Kwxc6N+WKhPJk1rbEVMYemTPrZX2+zOwr9lm7XeLUPI
ZhyjbP1ihJ4rVaES4FCUdcDURXS3fyi+lkrt474SJs6Cb1tJB+WlQv0a4GYKh/o0
A21oK7PXHqanzKvUAlDjs5cR+p5OMrXUCCVO3VaSmfmnpsFHAbI=
=UXp/
-----END PGP SIGNATURE-----