Node.js v20.8.0 (Current)
Ruy Adorno
Notable Changes
Stream performance improvements
Performance improvements to writable and readable streams, improving the creation and destruction by ±15% and reducing the memory overhead each stream takes in Node.js
Contributed by Benjamin Gruenbaum in #49745 and Raz Luvaton in #49834.
Performance improvements for readable webstream, improving readable stream async iterator consumption by ±140% and improving readable stream pipeTo consumption by ±60%
Contributed by Raz Luvaton in #49662 and #49690.
Rework of memory management in vm APIs with the importModuleDynamically option
This rework addressed a series of long-standing memory leaks and use-after-free issues in the following APIs that support importModuleDynamically:
- vm.Script
- vm.compileFunction
- vm.SyntheticModule
- vm.SourceTextModule
This should enable affected users to upgrade from older versions of Node.js.
Contributed by Joyee Cheung in #48510.
Other notable changes
- [32d4d29d02] - deps: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) #49874
- [0e686d096b] - doc: deprecatefs.F_OK,fs.R_OK,fs.W_OK,fs.X_OK(Livia Medeiros) #49683
- [a5dd057540] - doc: deprecateutil.toUSVString(Yagiz Nizipli) #49725
- [7b6a73172f] - doc: deprecate callingpromisifyon a function that returns a promise (Antoine du Hamel) #49647
- [1beefd5f16] - esm: set all hooks as release candidate (Geoffrey Booth) #49597
- [b0ce78a75b] - module: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) #48510
- [4e578f8ab1] - module: fix leak of vm.SyntheticModule (Joyee Cheung) #48510
- [69e4218772] - module: use symbol in WeakMap to manage host defined options (Joyee Cheung) #48510
- [14ece0aa76] - (SEMVER-MINOR) src: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) #49279
- [9fd67fbff0] - stream: use bitmap in writable state (Raz Luvaton) #49834
- [0ccd4638ac] - stream: use bitmap in readable state (Benjamin Gruenbaum) #49745
- [7c5e322346] - stream: improve webstream readable async iterator performance (Raz Luvaton) #49662
- [80b342cc38] - (SEMVER-MINOR) test_runner: accepttestOnlyinrun(Moshe Atlow) #49753
- [17a05b141d] - (SEMVER-MINOR) test_runner: add junit reporter (Moshe Atlow) #49614
Commits
- [4879e3fbbe] - benchmark: add a benchmark for read() of ReadableStreams (Debadree Chatterjee) #49622
- [78a6c73157] - benchmark: shorten pipe-to by reducing number of chunks (Raz Luvaton) #49577
- [4126a6e4c9] - benchmark: fix webstream pipe-to (Raz Luvaton) #49552
- [6010a91825] - bootstrap: do not expand argv1 for snapshots (Joyee Cheung) #49506
- [8480280c4b] - bootstrap: only use the isolate snapshot when compiling code cache (Joyee Cheung) #49288
- [b30754aa87] - build: run embedtest using node executable (Joyee Cheung) #49506
- [31db0b8e2b] - build: add --write-snapshot-as-array-literals to configure.py (Joyee Cheung) #49312
- [6fcb51d3ba] - debugger: useinternal/url.URLinstead ofurl.parse(LiviaMedeiros) #49590
- [32d4d29d02] - deps: add v8::Object::SetInternalFieldForNodeCore() (Joyee Cheung) #49874
- [ad37cadc3f] - deps: V8: backport de9a5de2274f (Joyee Cheung) #49703
- [cdd1c66222] - deps: V8: cherry-pick b33bf2dfd261 (Joyee Cheung) #49703
- [61d18d6473] - deps: update undici to 5.24.0 (Node.js GitHub Bot) #49559
- [b8a4fef393] - deps: remove pthread-fixes.c from uv.gyp (Ben Noordhuis) #49744
- [6c86c0683c] - deps: update googletest to d1467f5 (Node.js GitHub Bot) #49676
- [1424404742] - deps: update nghttp2 to 1.56.0 (Node.js GitHub Bot) #49582
- [15b54ff95d] - deps: update googletest to 8a6feab (Node.js GitHub Bot) #49463
- [2ceab877c2] - deps: update corepack to 0.20.0 (Node.js GitHub Bot) #49464
- [4814872ddc] - doc: fixDEP0176number (LiviaMedeiros) #49858
- [0e686d096b] - doc: deprecatefs.F_OK,fs.R_OK,fs.W_OK,fs.X_OK(Livia Medeiros) #49683
- [5877c403a2] - doc: add mertcanaltin as a triager (mert.altin) #49826
- [864fe56432] - doc: addgit node backportway to the backporting guide (Raz Luvaton) #49760
- [e0f93492d5] - doc: improve documentation about ICU data fallback (Joyee Cheung) #49666
- [a5dd057540] - doc: deprecateutil.toUSVString(Yagiz Nizipli) #49725
- [774c1cfd52] - doc: add missing function call to example forutil.promisify(Jungku Lee) #49719
- [fe78a34845] - doc: update output of example inmimeParams.set()(Deokjin Kim) #49718
- [4175ea33bd] - doc: add missedinspectwith numericSeparator to example (Deokjin Kim) #49717
- [3a88571972] - doc: fix history comments (Antoine du Hamel) #49701
- [db4ab1ccbb] - doc: add missing history info forimport.meta.resolve(Antoine du Hamel) #49700
- [a304d1ee19] - doc: link maintaining deps to pull-request.md (Marco Ippolito) #49716
- [35294486ad] - doc: fix print results inevents(Jungku Lee) #49548
- [9f0b0e15c9] - doc: alphabetize cli.md sections (Geoffrey Booth) #49668
- [7b6a73172f] - doc: deprecate callingpromisifyon a function that returns a promise (Antoine du Hamel) #49647
- [d316b32fff] - doc: updatecorepack.mdto account for 0.20.0 changes (Antoine du Hamel) #49486
- [c2eac7dc7c] - doc: remove@anonrigfrom performance initiative (Yagiz Nizipli) #49641
- [3d839fbf87] - doc: mark Node.js 16 as End-of-Life (Richard Lau) #49651
- [53fb5aead8] - doc: save user preference for JS flavor (Vidar Eldøy) #49526
- [e3594d5658] - doc: update documentation for node:process warning (Shubham Pandey) #49517
- [8e033c3963] - doc: rename possibly confusing variable and CSS class (Antoine du Hamel) #49536
- [d0e0eb4bb3] - doc: update outdated history info (Antoine du Hamel) #49530
- [b4724e2e3a] - doc: close a parenthesis (Sébastien Règne) #49525
- [0471c5798e] - doc: cast GetInternalField() return type to v8::Value in addons.md (Joyee Cheung) #49439
- [9f8bea3dda] - doc: fix documentation for input option in child_process (Ariel Weiss) #49481
- [f3fea92f8a] - doc: fix missing imports intest.runcode examples (Oshri Asulin) #49489
- [e426b77b67] - doc: fix documentation for fs.createWriteStream highWaterMark option (Mert Can Altın) #49456
- [2b119108ff] - doc: updated releasers instructions for node.js website (Claudio W) #49427
- [b9d4a80183] - doc: editimport.meta.resolvedocumentation (Antoine du Hamel) #49247
- [f67433f666] - doc,tools: switch to@node-core/utils(Michaël Zasso) #49851
- [142e256fc5] - errors: improve classRegExp in errors.js (Uzlopak) #49643
- [6377f1bce2] - errors: usedetermineSpecificTypein more error messages (Antoine du Hamel) #49580
- [05f0fcb4c4] - esm: identify parent importing a url with invalid host (Jacob Smith) #49736
- [8a6f5fb8f3] - esm: fix return type ofimport.meta.resolve(Antoine du Hamel) #49698
- [a6140f1b8c] - esm: update loaders warning (Geoffrey Booth) #49633
- [521a9327e0] - esm: fix support forURLinstances inregister(Antoine du Hamel) #49655
- [3a9ea0925a] - esm: clarify ERR_REQUIRE_ESM errors (Daniel Compton) #49521
- [1beefd5f16] - esm: set all hooks as release candidate (Geoffrey Booth) #49597
- [be48267888] - esm: remove return value forModule.register(Antoine du Hamel) #49529
- [e74a075124] - esm: refactor test-esm-loader-resolve-type (Geoffrey Booth) #49493
- [17823b3533] - esm: refactor test-esm-named-exports (Geoffrey Booth) #49493
- [f34bd15ac1] - esm: refactor mocking test (Geoffrey Booth) #49465
- [ec323bbd99] - fs: replaceSetMethodNoSideEffectin node_file (CanadaHonk) #49857
- [6acf800123] - fs: improve error performance forunlinkSync(CanadaHonk) #49856
- [31702c9403] - fs: improvereadFileSyncwith file descriptors (Yagiz Nizipli) #49691
- [835f9fe7b9] - fs: fix file descriptor validator (Yagiz Nizipli) #49752
- [b618fe262f] - fs: improve error performance ofopendirSync(Yagiz Nizipli) #49705
- [938471ef55] - fs: improve error performance of sync methods (Yagiz Nizipli) #49593
- [db3fc6d087] - fs: fix readdir and opendir recursive with unknown file types (William Marlow) #49603
- [0f020ed22d] - gyp: put cctest filenames in variables (Cheng Zhao) #49178
- [0ce1e94d12] - lib: update encoding sets inWHATWG API(Jungku Lee) #49610
- [efd6815a7a] - lib: fixinternalBindingtypings (Yagiz Nizipli) #49742
- [1287d5b74e] - lib: allow byob reader for 'blob.stream()' (Debadree Chatterjee) #49713
- [bbc710522d] - lib: reset the cwd cache before execution (Maël Nison) #49684
- [f62d649e4d] - lib: use internalfileURLToPath(Deokjin Kim) #49558
- [e515046941] - lib: use internalpathToFileURL(Livia Medeiros) #49553
- [00608e8070] - lib: check SharedArrayBuffer availability in freeze_intrinsics.js (Milan Burda) #49482
- [8bfbe7079c] - meta: fix linter error (Antoine du Hamel) #49755
- [58f7a9e096] - meta: add primordials strategic initiative (Benjamin Gruenbaum) #49706
- [5366027756] - meta: bump github/codeql-action from 2.21.2 to 2.21.5 (dependabot[bot]) #49438
- [fe26b74082] - meta: bump rtCamp/action-slack-notify from 2.2.0 to 2.2.1 (dependabot[bot]) #49437
- [b0ce78a75b] - module: fix the leak in SourceTextModule and ContextifySript (Joyee Cheung) #48510
- [4e578f8ab1] - module: fix leak of vm.SyntheticModule (Joyee Cheung) #48510
- [69e4218772] - module: use symbol in WeakMap to manage host defined options (Joyee Cheung) #48510
- [96874e8fbc] - node-api: enable uncaught exceptions policy by default (Chengzhong Wu) #49313
- [b931aeadfd] - perf_hooks: reduce overhead of new performance_entries (Vinicius Lourenço) #49803
- [ad043bac31] - process: add custom dir support for heapsnapshot-signal (Jithil P Ponnan) #47854
- [8a7c10194c] - repl: don't accumulate excess indentation in .load (Daniel X Moore) #49461
- [10a2adeed5] - src: improve error message when ICU data cannot be initialized (Joyee Cheung) #49666
- [ce37688bac] - src: remove unnecessary todo (Rafael Gonzaga) #49227
- [f611583b71] - src: use SNAPSHOT_SERDES to log snapshot ser/deserialization (Joyee Cheung) #49637
- [a597cb8457] - src: port Pipe to uv_pipe_bind2, uv_pipe_connect2 (Geoff Goodman) #49667
- [fb21062338] - src: set --rehash-snapshot explicitly (Joyee Cheung) #49556
- [14ece0aa76] - (SEMVER-MINOR) src: allow embedders to override NODE_MODULE_VERSION (Cheng Zhao) #49279
- [4b5e23c71b] - src: set ModuleWrap internal fields only once (Joyee Cheung) #49391
- [2d3f5c7cab] - src: fix fs_type_to_name default value (Mustafa Ateş Uzun) #49239
- [cfbcb1059c] - src: fix comment on StreamResource (rogertyang) #49193
- [39fb83ad16] - src: do not rely on the internal field being default to undefined (Joyee Cheung) #49413
- [9fd67fbff0] - stream: use bitmap in writable state (Raz Luvaton) #49834
- [0ccd4638ac] - stream: use bitmap in readable state (Benjamin Gruenbaum) #49745
- [b29d927010] - stream: improve readable webstreampipeTo(Raz Luvaton) #49690
- [7c5e322346] - stream: improve webstream readable async iterator performance (Raz Luvaton) #49662
- [be211ef818] - test: deflake test-vm-contextified-script-leak (Joyee Cheung) #49710
- [355f10dab2] - test: use checkIfCollectable in vm leak tests (Joyee Cheung) #49671
- [17cfc531aa] - test: add checkIfCollectable to test/common/gc.js (Joyee Cheung) #49671
- [e49a573752] - test: add os setPriority, getPriority test coverage (Wael) #38771
- [5f02711522] - test: deflake test-runner-output (Moshe Atlow) #49878
- [cd9754d6a7] - test: mark test-runner-output as flaky (Joyee Cheung) #49854
- [5ad00424dd] - test: use mustSucceed instead of mustCall (SiddharthDevulapalli) #49788
- [3db9b40081] - test: refactor test-readline-async-iterators into a benchmark (Shubham Pandey) #49237
- [2cc5ad7859] - Revert "test: mark test-http-regr-gh-2928 as flaky" (Luigi Pinca) #49708
- [e5185b053c] - test: usefs.constantsforfs.accessconstants (Livia Medeiros) #49685
- [b9e5b43462] - test: deflake test-http-regr-gh-2928 (Luigi Pinca) #49574
- [1fffda504e] - test: fix argument computation in embedtest (Joyee Cheung) #49506
- [6e56f2db52] - test: skip test-child-process-stdio-reuse-readable-stdio on Windows (Joyee Cheung) #49621
- [ab3afb330d] - test: mark test-runner-watch-mode as flaky (Joyee Cheung) #49627
- [185d9b50db] - test: deflake test-tls-socket-close (Luigi Pinca) #49575
- [c70c74a9e6] - test: show more info on failure in test-cli-syntax-require.js (Joyee Cheung) #49561
- [ed7c6d1114] - test: mark test-http-regr-gh-2928 as flaky (Joyee Cheung) #49565
- [3599eebab9] - test: use spawnSyncAndExitWithoutError in sea tests (Joyee Cheung) #49543
- [f79b153e89] - test: use spawnSyncAndExitWithoutError in test/common/sea.js (Joyee Cheung) #49543
- [c079c73769] - test: use setImmediate() in test-heapdump-shadowrealm.js (Joyee Cheung) #49573
- [667a92493c] - test: skip test-child-process-pipe-dataflow.js on Windows (Joyee Cheung) #49563
- [91af0a9a3c] - Revert "test: ignore the copied entry_point.c" (Chengzhong Wu) #49515
- [567afc71b8] - test: avoid copying test source files (Chengzhong Wu) #49515
- [ced25a976d] - test: increase coverage ofModule.registerandinitializehook (Antoine du Hamel) #49532
- [be02fbdb8a] - test: isolateglobalPreloadtests (Geoffrey Booth) #49545
- [f214428845] - test: split test-crypto-dh to avoid timeout on slow machines in the CI (Joyee Cheung) #49492
- [3987094569] - test: maketest-dotenv-node-optionslocale-independent (Livia Medeiros) #49470
- [34c1741792] - test: add test for urlstrings usage innode:fs(Livia Medeiros) #49471
- [c3c6c4f007] - test: make test-worker-prof more robust (Joyee Cheung) #49274
- [843df1a4da] - test,crypto: update WebCryptoAPI WPT (Filip Skokan) #49714
- [80b342cc38] - (SEMVER-MINOR) test_runner: accepttestOnlyinrun(Moshe Atlow) #49753
- [76865515b9] - test_runner: fix test runner watch mode when no positional arguments (Moshe Atlow) #49578
- [17a05b141d] - (SEMVER-MINOR) test_runner: add junit reporter (Moshe Atlow) #49614
- [5672e38457] - test_runner: add jsdocs to mock.js (Caio Borghi) #49555
- [b4d42a8f2b] - test_runner: fix invalid timer call (Erick Wendel) #49477
- [f755e6786b] - test_runner: add jsdocs to MockTimers (Erick Wendel) #49476
- [e7285d4bf0] - test_runner: fix typescript coverage (Moshe Atlow) #49406
- [07a2e29bf3] - tools: support updating @reporters/github manually (Moshe Atlow) #49871
- [5ac6722031] - tools: skip ruff on tools/node_modules (Moshe Atlow) #49838
- [462228bd24] - tools: fix uvwasi updater (Michael Dawson) #49682
- [ff81bfb958] - tools: update lint-md-dependencies to rollup@3.29.2 (Node.js GitHub Bot) #49679
- [08ffc6344c] - tools: restrict internal code from using publicurlmodule (LiviaMedeiros) #49590
- [728ebf6c97] - tools: update eslint to 8.49.0 (Node.js GitHub Bot) #49586
- [20d038ffb1] - tools: update lint-md-dependencies to rollup@3.29.0 unified@11.0.3 (Node.js GitHub Bot) #49584
- [210c15bd12] - tools: allow passing absolute path of config.gypi in js2c (Cheng Zhao) #49162
- [e341efe173] - tools: configure never-stale label correctly (Michaël Zasso) #49498
- [a8a8a498ce] - tools: update doc dependencies (Node.js GitHub Bot) #49467
- [ac06607f9e] - typings: fix missing property inExportedHooks(Antoine du Hamel) #49567
- [097b59807a] - url: improve invalid url performance (Yagiz Nizipli) #49692
- [7c2060cfac] - util: addgetCwdSafeinternal util fn (João Lenon) #48434
- [c23c60f545] - zlib: disable CRC32 SIMD optimization (Luigi Pinca) #49511
Windows 32-bit Installer: https://nodejs.org/dist/v20.8.0/node-v20.8.0-x86.msi 
Windows 64-bit Installer: https://nodejs.org/dist/v20.8.0/node-v20.8.0-x64.msi 
Windows ARM 64-bit Installer: https://nodejs.org/dist/v20.8.0/node-v20.8.0-arm64.msi 
Windows 32-bit Binary: https://nodejs.org/dist/v20.8.0/win-x86/node.exe 
Windows 64-bit Binary: https://nodejs.org/dist/v20.8.0/win-x64/node.exe 
Windows ARM 64-bit Binary: https://nodejs.org/dist/v20.8.0/win-arm64/node.exe 
macOS 64-bit Installer: https://nodejs.org/dist/v20.8.0/node-v20.8.0.pkg 
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-darwin-arm64.tar.gz 
macOS Intel 64-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-darwin-x64.tar.gz 
Linux 64-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-linux-x64.tar.xz 
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-linux-ppc64le.tar.xz 
Linux s390x 64-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-linux-s390x.tar.xz 
AIX 64-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-aix-ppc64.tar.gz 
ARMv7 32-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-linux-armv7l.tar.xz 
ARMv8 64-bit Binary: https://nodejs.org/dist/v20.8.0/node-v20.8.0-linux-arm64.tar.xz 
Source Code: https://nodejs.org/dist/v20.8.0/node-v20.8.0.tar.gz 
Other release files: https://nodejs.org/dist/v20.8.0/ 
Documentation: https://nodejs.org/docs/v20.8.0/api/
SHASUMS
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
f8f5888d82c428136fd3a9b1951ebc06b759533eda5abf94a5676904417d7dd2  node-v20.8.0-aix-ppc64.tar.gz
7614f7b8464378a4077aedcb378a0b220c366bab722472ff3e07aa3d1512f6e0  node-v20.8.0-arm64.msi
cbcb7fdbcd9341662256df5e4488a0045242f87382879242093e0f0699511abc  node-v20.8.0-darwin-arm64.tar.gz
ea1362cdb1c062ab5bc134219b1467d39272b2ce6b30a6743d8e7a798185f3f2  node-v20.8.0-darwin-arm64.tar.xz
a6f6b573ea656c149956f69f35e04ebb242b945d59972bea2e96a944bbf50ad1  node-v20.8.0-darwin-x64.tar.gz
598538764639b67750e9002f2d3b6dca2a5f7576f9714d24816f060ada7b92ea  node-v20.8.0-darwin-x64.tar.xz
400a9ae60e48816943f0016a9ec10fdc0c09ea8e6db97de203806431807ac49b  node-v20.8.0-headers.tar.gz
3016b71eb7879c52ed19395f352b121250bf917e35497a87b937731f76e3438d  node-v20.8.0-headers.tar.xz
cec9be5a060f63bfda7ef5b5a368cba5cfa0ce673b117bae8c146ec5df767cbe  node-v20.8.0-linux-arm64.tar.gz
ec2d98894d58d07260e61e6a70b88cabea98292f0b2801cbeebd864d242e1087  node-v20.8.0-linux-arm64.tar.xz
1922c4ff0c710b18bc6946e4efcc592b832e8c22853066b70a74181ac6d92a36  node-v20.8.0-linux-armv7l.tar.gz
6df86705df9f63cda322b5570efa26a7509bfe4fbf2721d0d1acc81e0e3c9105  node-v20.8.0-linux-armv7l.tar.xz
44beb7fb1ebacedf5a4c08cc4cd5d346820058a3f3316d9f34bc2fa16a29fd8c  node-v20.8.0-linux-ppc64le.tar.gz
ae8130354dbf2526ddffa92c406864d97c08044ddb66b8aaaccb54be03085a27  node-v20.8.0-linux-ppc64le.tar.xz
7f1c1f515eb4a93ef00ef8630de6f1e308c21969ce4b3ff482269cedb7929595  node-v20.8.0-linux-s390x.tar.gz
a529f569b6783bd3cb948b7cb5cfee2270a720db1b347e1e168f46ad9123394d  node-v20.8.0-linux-s390x.tar.xz
ae6f288a21a3bc7a82b79d3f00c52216df6de09c45eac0ea754243a9c7fb5e69  node-v20.8.0-linux-x64.tar.gz
66056a2acc368db142b8a9258d0539e18538ae832b3ccb316671b0d35cb7c72c  node-v20.8.0-linux-x64.tar.xz
6a98a466aaf7d4180365e7fe17a168fc305923d8bc64048daddd706428142e07  node-v20.8.0.pkg
daa1f39d262b8e07a06c272f2671337f1bfce54000db9662de0dfce3c18fff3c  node-v20.8.0.tar.gz
412be847ae6df61010ba9da3cc3e6be5b67aa002e354e919f59ec8360371704c  node-v20.8.0.tar.xz
e5872b8a701033b57e91a6feead96a8468165cc40698885689478aebe4aea0f9  node-v20.8.0-win-arm64.7z
7426fbd791871f07a3672750b938dd3d9d82bcdb6c0a75cc5b588bbfba30e90b  node-v20.8.0-win-arm64.zip
fe703df746cb22f970b85134096a5097c8585fa377a394df1f68ab687ae39d65  node-v20.8.0-win-x64.7z
6afd5a7aa126f4e255f041de66c4a608f594190d34dcaba72f7b348d2410ca66  node-v20.8.0-win-x64.zip
93b1e13ed8ffce4214e2549daed15ab5a0cae1559164700ac9d90ab2626cfd35  node-v20.8.0-win-x86.7z
6b3d1d5ed4b1c6220fa1c55943d923977a8cda90808af0d16d7956727f0cd275  node-v20.8.0-win-x86.zip
83e4bad748d667799d8bb0a8cb8068c4c7ce702825d27d464cbdf746b8ae5682  node-v20.8.0-x64.msi
34143ccf8409fd219590d54f4c6c016153699721d15299f76cbe18a0e8652795  node-v20.8.0-x86.msi
701c5023d9a63b49d5e6a09793c5d80521252eb1ce088a8634b3e91b08271737  win-arm64/node.exe
eab9876602b7187761bbbef60be4d67194d51fc5be949e076a10e357573451f6  win-arm64/node.lib
9e6227bb37aee49f48478b42ad82c4777643d438c25503f4ff6640212d556c3d  win-arm64/node_pdb.7z
1def19747c1c7b8ae98b2bb15b10ea2c6d8d649a221473ca3bf3daef3ccf433e  win-arm64/node_pdb.zip
5f259ef0e934281c92e493555eff65595e679a0ca1697b0e220805b41422f2cd  win-x64/node.exe
45d2519b3be3655e7b52ffcee613a484c38e768a59e9b9d4f08a3580d76a768a  win-x64/node.lib
7cfb8db4f2dea0a90b725e03d308363d2a161fbaf7ddfa583b248d0f95653043  win-x64/node_pdb.7z
d8e13fcded6542515d4796ac4f1d90cbdaaf484003a5e4338a766f543c9412ef  win-x64/node_pdb.zip
7cddd80bfd283aa9b89af122ff32c4d0f046cb5680482369a988490601e11716  win-x86/node.exe
62fe4a233ba54cf69bb528cde835997a84c0d5def5f41d283e02c1e538b4ec5f  win-x86/node.lib
dcf457f5849dbb50e798631f1bd3827dc884e3ec9ecb1fa8d5523d89b7f44025  win-x86/node_pdb.7z
0ed977e711297e9c0ab60aeacf932d23877c651a30db7fda9c4a5909d4e18c79  win-x86/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEEI9StI21e7DMQ5spl7AUGb2S+AoFAmUWQokACgkQl7AUGb2S
+Ap+lw//bzOcd/GZo30jnxxtVRcKphUfWppk1/54X5/OQBu6J+Zyp1dNgm6muuzR
lKPU2e+ebIJ98VyD3oJ1eF8CzHcMSS/2rexjaX7Us7GKVLus4Ral+kS5JVTdPpCY
XRIIQxsqNhaYr50SwkZTqT9ixPplf137hHhqL8lBVCFWcbQejLfXHwIH9IYhUUyR
eJzaHaNTyDHV9aPwpv4ZVcVYN+UyGDFUEtDOVb8kelQ5KyuXrpWDlgmy5n6Jl6+m
cEM/SylfR8AiHJF1eCRAtyqkCQtToYaCiakQL/TC0u4z9OZOn5YSHXCMXRK+19o0
wJ9UrXHSXxNSjSKqi3AqLhhAx9xPsvVzUblkhMmBWx7iqgdJDVWr9Njfe4cGBT+d
0nclAhR3Mkln3i86mqDzmvdkOXEfTHNlWPKlUjhMTiXUcCn35lsjbxya+IvMlUVH
CxSKhFmKgTGMnV/oYmsj6V01fPbJrMeMlkfp3E9ITMrvp1U0jHsxyZ4xQlgCx9bt
XEn+d/ZQJ/dymcIcWDqSBjpsJ+ikl4TRfGcMj9G38arYKNVGmT+hLBvFvfQjcIIw
4/2f7EKkIFFiahdMcDVp+heGb0ZDq9H3rbRukZni+Y1RLSDm5hRMbNaduI8XuUp5
TmEAlJ1K9hmFaU6UIHb2EzIe2mySN33cNDe0b7NELu1LF+A6cVg=
=yfpT
-----END PGP SIGNATURE-----