Node v21.1.0 (Current)
2023-10-24, Version 21.1.0 (Current), @targos
Notable Changes
Automatically detect and run ESM syntax
The new flag --experimental-detect-module
can be used to automatically run
ES modules when their syntax can be detected. For “ambiguous” files, which are
.js
or extensionless files with no package.json
with a type
field, Node.js
will parse the file to detect ES module syntax; if found, it will run the file
as an ES module, otherwise it will run the file as a CommonJS module.
The same applies to string input via --eval
or STDIN
.
We hope to make detection enabled by default in a future version of Node.js.
Detection increases startup time, so we encourage everyone — especially package
authors — to add a type
field to package.json
, even for the default
"type": "commonjs"
. The presence of a type
field, or explicit extensions
such as .mjs
or .cjs
, will opt out of detection.
Contributed by Geoffrey Booth in #50096.
Other Notable Changes
- [
3729e33358
] - doc: add H4ad to collaborators (Vinícius Lourenço) #50217 - [
18862e4d5d
] - (SEMVER-MINOR) fs: addflush
option toappendFile()
functions (Colin Ihrig) #50095 - [
5a52c518ef
] - (SEMVER-MINOR) lib: addnavigator.userAgent
(Yagiz Nizipli) #50200 - [
789372a072
] - (SEMVER-MINOR) stream: allow pass stream class tostream.compose
(Alex Yang) #50187 - [
f3a9ea0bc4
] - stream: improve performance of readable stream reads (Raz Luvaton) #50173 - [
dda33c2bf1
] - vm: reject in importModuleDynamically without --experimental-vm-modules (Joyee Cheung) #50137 - [
3999362c59
] - vm: use internal versions of compileFunction and Script (Joyee Cheung) #50137 - [
a54179f0e0
] - vm: unify host-defined option generation in vm.compileFunction (Joyee Cheung) #50137
Commits
- [
9cd68b9083
] - buffer: remove unnecessary assignment in fromString (Tobias Nießen) #50199 - [
a362c276ec
] - crypto: ensure valid point on elliptic curve in SubtleCrypto.importKey (Filip Skokan) #50234 - [
f4da308f8d
] - deps: V8: cherry-pick f7d000a7ae7b (Luke Albao) #50302 - [
269e268c38
] - deps: update ada to 2.7.2 (Node.js GitHub Bot) #50338 - [
03a31ce41e
] - deps: update corepack to 0.22.0 (Node.js GitHub Bot) #50325 - [
000531781b
] - deps: update undici to 5.26.4 (Node.js GitHub Bot) #50274 - [
f050668c14
] - deps: update c-ares to 1.20.1 (Node.js GitHub Bot) #50082 - [
ba258b682b
] - deps: update c-ares to 1.20.0 (Node.js GitHub Bot) #50082 - [
571f7ef1fa
] - deps: patch V8 to 11.8.172.15 (Michaël Zasso) #50114 - [
943047e800
] - deps: V8: cherry-pick 25902244ad1a (Joyee Cheung) #50156 - [
db2a1cf1cb
] - doc: fixnavigator.hardwareConcurrency
example (Tobias Nießen) #50278 - [
6e537aeb44
] - doc: explain how to disable navigator (Geoffrey Booth) #50310 - [
c40de82d62
] - doc: add loong64 info into platform list (Shi Pujin) #50086 - [
1c21a1880b
] - doc: update release process LTS step (Richard Lau) #50299 - [
2473aa3672
] - doc: fix release process table of contents (Richard Lau) #50216 - [
ce9d84eae3
] - doc: update apistream.compose
(Alex Yang) #50206 - [
dacee4d9b5
] - doc: add ReflectConstruct to known perf issues (Vinicius Lourenço) #50111 - [
82363be2ac
] - doc: fix typo in dgram docs (Peter Johnson) #50211 - [
8c1a46c751
] - doc: fix H4ad collaborator sort (Vinicius Lourenço) #50218 - [
3729e33358
] - doc: add H4ad to collaborators (Vinícius Lourenço) #50217 - [
bac872cbd0
] - doc: update release-stewards with last sec-release (Rafael Gonzaga) #50179 - [
06b7724f14
] - doc: add command to keep major branch sync (Rafael Gonzaga) #50102 - [
47633ab086
] - doc: add loong64 to list of architectures (Shi Pujin) #50172 - [
1f40ca1b91
] - doc: update security release process (Michael Dawson) #50166 - [
998feda118
] - esm: do not give wrong hints when detecting file format (Antoine du Hamel) #50314 - [
e375063e01
] - (SEMVER-MINOR) esm: detect ESM syntax in ambiguous JavaScript (Geoffrey Booth) #50096 - [
c76eb27971
] - esm: improve check for ESM syntax (Geoffrey Booth) #50127 - [
7740bf820c
] - esm: rename error code related to import attributes (Antoine du Hamel) #50181 - [
0cc176ef25
] - fs: improve error performance forreadSync
(Jungku Lee) #50033 - [
5942edb774
] - fs: improve error performance forfsyncSync
(Jungku Lee) #49880 - [
6ec5abadc0
] - fs: improve error performance formkdirSync
(CanadaHonk) #49847 - [
c5ff000cb1
] - fs: improve error performance ofrealpathSync
(Yagiz Nizipli) #49962 - [
6eeaa02f5c
] - fs: improve error performance oflchownSync
(Yagiz Nizipli) #49962 - [
dc9ac8d41c
] - fs: improve error performance ofsymlinkSync
(Yagiz Nizipli) #49962 - [
bc6f279261
] - fs: improve error performance ofreadlinkSync
(Yagiz Nizipli) #49962 - [
275987841e
] - fs: improve error performance ofmkdtempSync
(Yagiz Nizipli) #49962 - [
81f15274e2
] - fs: improve error performance oflinkSync
(Yagiz Nizipli) #49962 - [
f766c04856
] - fs: improve error performance ofchownSync
(Yagiz Nizipli) #49962 - [
610036c67d
] - fs: improve error performance ofrenameSync
(Yagiz Nizipli) #49962 - [
18862e4d5d
] - (SEMVER-MINOR) fs: add flush option to appendFile() functions (Colin Ihrig) #50095 - [
3f8cbb15cb
] - http2: allow streams to complete gracefully after goaway (Michael Lumish) #50202 - [
1464eba1a0
] - lib: improve performance of validateStringArray and validateBooleanArray (Aras Abbasi) #49756 - [
5a52c518ef
] - (SEMVER-MINOR) lib: addnavigator.userAgent
(Yagiz Nizipli) #50200 - [
b6021ab8f6
] - lib: reduce overhead of blob clone (Vinicius Lourenço) #50110 - [
be19d9baa1
] - meta: move Trott to TSC regular member (Rich Trott) #50297 - [
91e373f8e9
] - node-api: return napi_exception_pending on proxy handlers (Chengzhong Wu) #48607 - [
531a3ae4b5
] - stream: simplify prefinish (Robert Nagy) #50204 - [
514ac86579
] - stream: reduce scope of readable bitmap details (Robert Nagy) #49963 - [
789372a072
] - (SEMVER-MINOR) stream: allow pass stream class tostream.compose
(Alex Yang) #50187 - [
f3a9ea0bc4
] - stream: call helper function from push and unshift (Raz Luvaton) #50173 - [
a9ca7b32e7
] - test: improve watch mode test (Moshe Atlow) #50319 - [
63b7059efd
] - test: settest-watch-mode-inspect
as flaky (Yagiz Nizipli) #50259 - [
7f87084b05
] - Revert "test: settest-esm-loader-resolve-type
as flaky" (Antoine du Hamel) #50315 - [
4d390e2de4
] - test: replace forEach with for..of in test-http-perf_hooks.js (Niya Shiyas) #49818 - [
67c599ec39
] - test: replace forEach with for..of in test-net-isipv4.js (Niya Shiyas) #49822 - [
19d3ce2494
] - test: deflaketest-esm-loader-resolve-type
(Antoine du Hamel) #50273 - [
2d8d6c5701
] - test: replace forEach with for..of in test-http2-server (Niya Shiyas) #49819 - [
af31d51e5a
] - test: replace forEach with for..of in test-http2-client-destroy.js (Niya Shiyas) #49820 - [
465ad2a5ce
] - test: updateurl
web platform tests (Yagiz Nizipli) #50264 - [
3b80a6894c
] - test: settest-emit-after-on-destroyed
as flaky (Yagiz Nizipli) #50246 - [
57adbdd156
] - test: set inspector async stack test as flaky (Yagiz Nizipli) #50244 - [
6507f66404
] - test: set test-worker-nearheaplimit-deadlock flaky (StefanStojanovic) #50277 - [
21a6ba548d
] - test: settest-cli-node-options
as flaky (Yagiz Nizipli) #50296 - [
c55f8f30cb
] - test: reduce the number of requests and parsers (Luigi Pinca) #50240 - [
5129bedfa2
] - test: set crypto-timing test as flaky (Yagiz Nizipli) #50232 - [
9bc5ab5e07
] - test: settest-structuredclone-*
as flaky (Yagiz Nizipli) #50261 - [
317e447ddc
] - test: deflaketest-loaders-workers-spawned
(Antoine du Hamel) #50251 - [
0c710daae2
] - test: improve code coverage of diagnostics_channel (Jithil P Ponnan) #50053 - [
7c6e4d7ec3
] - test: settest-esm-loader-resolve-type
as flaky (Yagiz Nizipli) #50226 - [
c8744909b0
] - test: set inspector async hook test as flaky (Yagiz Nizipli) #50252 - [
3e38001739
] - test: skip test-benchmark-os.js on IBM i (Abdirahim Musse) #50208 - [
dd66fdfb7b
] - test: set parallel http server test as flaky (Yagiz Nizipli) #50227 - [
a38d1311bf
] - test: set test-worker-nearheaplimit-deadlock flaky (Stefan Stojanovic) #50238 - [
8efb75fd80
] - test: settest-runner-watch-mode
as flaky (Yagiz Nizipli) #50221 - [
143ddded74
] - test: set sea snapshot tests as flaky (Yagiz Nizipli) #50223 - [
ae905a8f35
] - test: fix defect path traversal tests (Tobias Nießen) #50124 - [
ce27ee701b
] - tls: reduce TLS 'close' event listener warnings (Tim Perry) #50136 - [
ab4bae8e1f
] - tools: drop support for osx notarization with gon (Ulises Gascón) #50291 - [
5df3d5abcc
] - tools: update comment inupdate-uncidi.sh
andacorn_version.h
(Jungku Lee) #50175 - [
bf7b94f0b3
] - tools: refactor checkimports.py (Mohammed Keyvanzadeh) #50011 - [
5dc454a837
] - util: remove internal mime fns from benchmarks (Aras Abbasi) #50201 - [
8f7eb15603
] - vm: use import attributes instead of import assertions (Antoine du Hamel) #50141 - [
dda33c2bf1
] - vm: reject in importModuleDynamically without --experimental-vm-modules (Joyee Cheung) #50137 - [
3999362c59
] - vm: use internal versions of compileFunction and Script (Joyee Cheung) #50137 - [
a54179f0e0
] - vm: unify host-defined option generation in vm.compileFunction (Joyee Cheung) #50137 - [
87be790fa9
] - worker: handle detachedMessagePort
from a different context (Juan José) #49150
Windows 32-bit Installer: https://nodejs.org/dist/v21.1.0/node-v21.1.0-x86.msi
Windows 64-bit Installer: https://nodejs.org/dist/v21.1.0/node-v21.1.0-x64.msi
Windows ARM 64-bit Installer: https://nodejs.org/dist/v21.1.0/node-v21.1.0-arm64.msi
Windows 32-bit Binary: https://nodejs.org/dist/v21.1.0/win-x86/node.exe
Windows 64-bit Binary: https://nodejs.org/dist/v21.1.0/win-x64/node.exe
Windows ARM 64-bit Binary: https://nodejs.org/dist/v21.1.0/win-arm64/node.exe
macOS 64-bit Installer: https://nodejs.org/dist/v21.1.0/node-v21.1.0.pkg
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-darwin-arm64.tar.gz
macOS Intel 64-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-darwin-x64.tar.gz
Linux 64-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-linux-x64.tar.xz
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-linux-ppc64le.tar.xz
Linux s390x 64-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-linux-s390x.tar.xz
AIX 64-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-aix-ppc64.tar.gz
ARMv7 32-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-linux-armv7l.tar.xz
ARMv8 64-bit Binary: https://nodejs.org/dist/v21.1.0/node-v21.1.0-linux-arm64.tar.xz
Source Code: https://nodejs.org/dist/v21.1.0/node-v21.1.0.tar.gz
Other release files: https://nodejs.org/dist/v21.1.0/
Documentation: https://nodejs.org/docs/v21.1.0/api/
SHASUMS
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
691672195af440401e4957d9d5e148d361e686aa26c9e529505edf89bab4b089 node-v21.1.0-aix-ppc64.tar.gz
75f28378c09fba7c5ecd6add07ac64f4983f23a847987e0a2097d753b0dcb30c node-v21.1.0-arm64.msi
4872463830381785b91d13a7fbb9b6f4a9c7658e10d964f6c421951cec8833ad node-v21.1.0-darwin-arm64.tar.gz
ecd3f51874892a8a56abf4b96424236647f26f64da6139a930557c044c48f73b node-v21.1.0-darwin-arm64.tar.xz
6b526c08320fcf41ced0ceee7588828ea2cb07ba826af4ff82b0ec53958fd8a4 node-v21.1.0-darwin-x64.tar.gz
f33382175ab49d0c9bd176401e746a041db1c7c31c85b7b91344e188945c3ba1 node-v21.1.0-darwin-x64.tar.xz
ceb2ecd7ed6049778403c0baa49844ba9495c1218b55bb73dea42a87e6a57253 node-v21.1.0-headers.tar.gz
c1ab3d18209f1331b9f14cdea0aeb2f7fdce4583aceee001856a42e44cfe1b35 node-v21.1.0-headers.tar.xz
5480f438703049f55f19fc3247f6aa1e8059b2f47cf08e9adfdcb7ce7aedff70 node-v21.1.0-linux-arm64.tar.gz
ff487ad68d898a6eebbf02e15fe5c5a885991828732163501fdf21af7a7bef36 node-v21.1.0-linux-arm64.tar.xz
0d51fe055599c17b2e3389d15868d4fd5ca07b408f8c15c325874595310a9382 node-v21.1.0-linux-armv7l.tar.gz
a8de516f50e6f4a7325d115a7cf398ac15440d495672f5d0118296b5d593fee9 node-v21.1.0-linux-armv7l.tar.xz
ed90f74545cd44474bbb947544679d3dfb44403200f7d2faa49402bebf26e52f node-v21.1.0-linux-ppc64le.tar.gz
8c932a1259291e8db9874981886d17993ab82ecf1ecaeda2c102b5f44ef94593 node-v21.1.0-linux-ppc64le.tar.xz
b45b87d21dada54999ef8d80957a6e700d0d29dd1b7f23502223c4a67d9d0a10 node-v21.1.0-linux-s390x.tar.gz
a8d04ae7a2b401e469a2c7e1e579d985126d3ec1a024bcc5220a059fcf861c17 node-v21.1.0-linux-s390x.tar.xz
b919cad4e8a5abbd7e6a4433c4f8a7cdc1a78c1e526c6c1aa4a5fcf74011ad2b node-v21.1.0-linux-x64.tar.gz
6a1020b5605ba4b4a89b08147e5fd124bd9d1fd5bfe5301fe0567af67bf0e335 node-v21.1.0-linux-x64.tar.xz
5fcb23725fa760ebe059cc5d957e9214f22ba623b20ee20301089a89d33bc06f node-v21.1.0.pkg
86e2fbfa8a9977656a82bb1a15208e7d45bd7a05dec331d0abf6fcf938a97cc3 node-v21.1.0.tar.gz
91ac72e4444c5e5ab4b448030a61ffa95acd35d34a9d31d2d220ee2bed01b925 node-v21.1.0.tar.xz
8a0f2c3abea32eb1706772d741ed8ea05de8f0b170561b37088cb2412de5cb2b node-v21.1.0-win-arm64.7z
fe660ef5ff0a1cf09207a1d83dbac5cfa0495870717aa397b584ce0c3e5cfcfb node-v21.1.0-win-arm64.zip
20ad766d8576e0c651dcbd6cbafaf803a51110613304224820c38936858af774 node-v21.1.0-win-x64.7z
6ee3e74ecceb27f388d75a94d6782df670bad37a4d10ff2d28a7c7bcb75bdb49 node-v21.1.0-win-x64.zip
3247272d574287ea798a34bd5a393671d44d0f608434f06eb97696754ee0257f node-v21.1.0-win-x86.7z
d4c3834a00cf0d74ca80d5e9992acb98f7d703293a18eb1716d596148ff855a8 node-v21.1.0-win-x86.zip
9890aaf7b9387a6d15890735b8facfe9eb072aebfd30e38cbeaf3426a1eabdc0 node-v21.1.0-x64.msi
53f8248e82282552f9fe5709a771801c4adb174f6dc35e2610077edc758d2bcf node-v21.1.0-x86.msi
69d61ca95c2a81f2a8f535446a2bfdd8b905d1b1783d18ae82b92017a637ab61 win-arm64/node.exe
aa149ab68ccab472beea201d39283390547c8e0a12b099797a0cfb6d9ffefb7b win-arm64/node.lib
085701532872fa03f7c29148b6b880245a765ee5f2c51593fc97a848730f9a57 win-arm64/node_pdb.7z
97580ce603887840a19f314a7eeaede4e18b72de0dfda060ea5ac4e747fc6465 win-arm64/node_pdb.zip
1cbbd083f79c51c6ca4d3ccffc944895d4e04e182849fd49855d93b66c0bb411 win-x64/node.exe
2f88106acb54a105e7beda077ab9eda04d98c202db9c1477ea48d7dd9e58151a win-x64/node.lib
f100227a3a7351c7340ef440a6b7dc2a4c2ab9786d0d3f8f603fb5658c423946 win-x64/node_pdb.7z
7b29f3242e0eaffb8990d8cd375a6a9d48079708e3dbc676c7a30d67895e052f win-x64/node_pdb.zip
2374196fac3d6b3611a411a6c413f1a78f47e47f7d5a86e861e774bf8203bc10 win-x86/node.exe
6825637ae988424a72f049ba92264be2956881875ee264cb71441bfbff5bcd85 win-x86/node.lib
842afb550c8821b82a1136dc29a3d0a0c862a045bea2c9940148569305a867c3 win-x86/node_pdb.7z
3e5357d128e79924866b1ed039458f43af377676c2d3b0fbba751986be14a833 win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEj8yhP+8dDC6RAI4Jdw96mlrhVgAFAmU3ydgACgkQdw96mlrh
VgDz7g//R9ykv7dH9NgA9l5ej0uHKkhaLeP9cy6Njx5iymNl7UuSCNOBLdVmRJQT
bQrF+FRFflUdjiZoo0BEYC9cZuLABUj0peBLM5OTkx942L0V+16845WOrcWxkjZw
cD0FXzl+63IIy+7SutA9E7R7B4LT3S8wci9sLiqN4seciQG3eECfLy4/V2+sXYar
0N9MpHwegwuiw7xtP61voXybiuoNmuLmaVp2x9TQJBK+Y/xMMyL7L4MuNjQfGepy
fGukAAFeLPdA+Z1GtbG8+sv/QSpsTjgdIyGyE2BTbiI51kh7133PoY7Tj2+hIqYI
DKVh3vcNz7X4nz5tn/47M5fp931vuHi71MhWkoRmn/YE/DoQp8Aj2cRSqI/N3/vl
JY02CyrBYFO6XOGJjNrKj/Njw0q0IM0FNVdvT8bG/gRetMJMtJqj7begZdSvx5Ou
IIluWZH+EfCWu8RT7wrHOu4x9RWYori1xQbKzVChcS4xY9eq/Atet8yjinTR+cd1
In+b2wwImm2sQIntnwqMmAPu6OFINS666zAw1d1yXdcFxaL8W8xMYAq9t+fJwiSc
kcexT26IKxxBmgsSH6YOBOwlwY4h2n89gkigwm4vxoPIMfGPdxewLz9E8p0f9eix
LFgaO2Hmt1enQbNXk281Sd/9WghyRq/DlAC1cX8txYisRA1wVjQ=
=EaCJ
-----END PGP SIGNATURE-----