Node.js v24.9.0 (Current)
Michaël Zasso
2025-09-25, Version 24.9.0 (Current), @targos
Notable Changes
- [9b043a9096] - (SEMVER-MINOR) http: add shouldUpgradeCallback to let servers control HTTP upgrades (Tim Perry) #59824
- [a6456ab90a] - (SEMVER-MINOR) sqlite: cleanup ERM support and export Session class (James M Snell) #58378
- [5563361d22] - (SEMVER-MINOR) sqlite: add tagged template (0hm☘️) #58748
- [04013ee933] - (SEMVER-MINOR) worker: add heap profile API (theanarkh) #59846
Commits
- [cbec4fd6de] - benchmark: calibrate config dgram multi-buffer (Bruno Rodrigues) #59696
- [9a4bbdc3c5] - benchmark: calibrate config cluster/echo.js (Nam Yooseong) #59836
- [0b284d86e8] - build: add the missing macro definitions for OpenHarmony (hqzing) #59804
- [43e6e54d66] - build: do not include custom ESLint rules testing in tarball (Antoine du Hamel) #59809
- [039ac19154] - crypto: expose signatureAlgorithm on X509Certificate (Patrick Costa) #59235
- [647c332704] - crypto: usereturn awaitwhen returning Promises from async functions (Renegade334) #59841
- [8ed4587cf0] - crypto: use async functions for non-stub Promise-returning functions (Renegade334) #59841
- [bb051c56ef] - crypto: avoid calls topromise.catch()(Renegade334) #59841
- [05e560dd25] - deps: update googletest to 50b8600 (Node.js GitHub Bot) #59955
- [fa40d3a785] - deps: update archs files for openssl-3.5.3 (Node.js GitHub Bot) #59901
- [8c85570d18] - deps: upgrade openssl sources to openssl-3.5.3 (Node.js GitHub Bot) #59901
- [b71125664e] - deps: update undici to 7.16.0 (Node.js GitHub Bot) #59830
- [dea5dd7077] - dgram: restore buffer optimization in fixBufferList (Yoo) #59934
- [b0c1e67532] - diagnostics_channel: fix race condition with diagnostics_channel and GC (Ugaitz Urien) #59910
- [0b37b594c3] - doc: use "WebAssembly" instead of "Web Assembly" (Tobias Nießen) #59954
- [1e723f9c6b] - doc: fix typo in section on microtask order (Tobias Nießen) #59932
- [a28962a85c] - doc: update V8 fast API guidance (René) #58999
- [bd767c5d1b] - doc: add security escalation policy (Ulises Gascón) #59806
- [9df91e59e1] - doc: type improvement of filehttp.md(yusheng chen) #58189
- [e4f571680b] - doc: deprecate closingfs.Diron garbage collection (Livia Medeiros) #59839
- [e9cb986fa5] - doc: rephrase dynamic import() description (Nam Yooseong) #59224
- [026d4e33f7] - doc,crypto: update subtle.generateKey and subtle.importKey (Filip Skokan) #59851
- [2b2591db52] - esm: make hasAsyncGraph non-enumerable (Joyee Cheung) #59905
- [993f05d323] - fs,win: do not add a second trailing slash in readdir (Gerhard Stöbich) #59847
- [7aec53b607] - (SEMVER-MINOR) http: add shouldUpgradeCallback to let servers control HTTP upgrades (Tim Perry) #59824
- [83ae6102e7] - http: optimize checkIsHttpToken for short strings (방진혁) #59832
- [6695067636] - http,https: handle IPv6 with proxies (Joyee Cheung) #59894
- [c5d910a0a9] - http2: fix allowHttp1+Upgrade, broken by shouldUpgradeCallback (Tim Perry) #59924
- [acada1fb82] - inspector: ensure adequate memory allocation forBinary::toBase64(René) #59870
- [396cc8ec65] - lib: update inspect output format for subclasses (Miguel Marcondes Filho) #59687
- [fed1dac8de] - lib: update isDeepStrictEqual to support options (Miguel Marcondes Filho) #59762
- [d785929fd7] - lib: add source map support for assert messages (Chengzhong Wu) #59751
- [ff13d1d61e] - lib,src: cache ModuleWrap.hasAsyncGraph (Chengzhong Wu) #59703
- [b200cd8470] - lib,src: refactor assert to load error source from memory (Chengzhong Wu) #59751
- [e94c57301b] - meta: add .npmrc with ignore-scripts=true (Joyee Cheung) #59914
- [728472a57b] - module: only put directly require-d ESM into require.cache (Joyee Cheung) #59874
- [be48760b93] - node-api: added SharedArrayBuffer api (Mert Can Altin) #59071
- [f006a14522] - node-api: make napi_delete_reference use node_api_basic_env (Jeetu Suthar) #59684
- [0f46c1c3b0] - repl: fix cpu overhead pasting big strings to the REPL (Ruben Bridgewater) #59857
- [3eeb7b47ea] - sqlite: fix crash session extension callbacks with workers (Bart Louwers) #59848
- [0fe53375ec] - (SEMVER-MINOR) sqlite: cleanup ERM support and export Session class (James M Snell) #58378
- [9a3e58a007] - (SEMVER-MINOR) sqlite: add tagged template (0hm☘️) #58748
- [f14ed5ab7b] - src: simplify watchdog instantiations viastd::optional(Anna Henningsen) #59960
- [e330f03f84] - src: update crypto objects to use DictionaryTemplate (James M Snell) #59942
- [69b5607cf4] - src: simplify is_callable by making it a concept (Tobias Nießen) #58169
- [86150f3401] - src: rename private fields to follow naming convention (Moonki Choi) #59923
- [d17f299539] - src: use DictionaryTemplate more in URLPattern (James M Snell) #59892
- [ac784912ac] - src: reduce the nearest parent package JSON cache size (Michael Smith) #59888
- [abecdcb536] - src: replace FIXED_ONE_BYTE_STRING with Environment-cached strings (Moonki Choi) #59891
- [2bb152500b] - src: create strings inFIXED_ONE_BYTE_STRINGas internalized (Anna Henningsen) #59826
- [03116a7cd8] - src: removestd::arrayoverload ofFIXED_ONE_BYTE_STRING(Anna Henningsen) #59826
- [8a5325d6e3] - src: ensurev8::Eternalis empty before setting it (Anna Henningsen) #59825
- [f0c20ccd81] - src: remove unnecessaryEnvironment::GetCurrent()calls (Moonki Choi) #59814
- [213188e491] - stream: use new AsyncResource instead of bind (Matteo Collina) #59867
- [ce8435b003] - test: testcase demonstrating issue 59541 (Eric Rannaud) #59801
- [8f32746142] - test: guard write to proxy client if proxy connection is ended (Joyee Cheung) #59742
- [6790093fcb] - tls: load bundled and extra certificates off-thread (Joyee Cheung) #59856
- [f5d3f919d8] - tls: only do off-thread certificate loading on loading tls (Joyee Cheung) #59856
- [87bbaa23a0] - tools: fixtools/make-v8.shfor clang (Richard Lau) #59893
- [0d23fd525b] - tools: skip test-internet workflow for draft PRs (Michaël Zasso) #59817
- [e17c73731a] - tools: copyeditbuild-tarball.yml(Antoine du Hamel) #59808
- [97c4e1bac9] - typings: remove unused imports (Nam Yooseong) #59880
- [8b29bbca76] - url: replaced slice with at (Mikhail) #59181
- [6458867a6b] - url: add type checking to urlToHttpOptions() (simon-id) #59753
- [3c62b3886f] - util: inspect objects with throwing Symbol.toStringTag (Ruben Bridgewater) #59860
- [6133a82875] - util: fix debuglog.enabled not being present with callback logger (Ruben Bridgewater) #59858
- [9347ddddf4] - vm: explain how to share promises between contexts w/ afterEvaluate (Eric Rannaud) #59801
- [44ce971619] - vm: "afterEvaluate", evaluate() return a promise from the outer context (Eric Rannaud) #59801
- [6e586a1409] - vm: expose hasTopLevelAwait on SourceTextModule (Chengzhong Wu) #59865
- [49747a58a3] - (SEMVER-MINOR) worker: add heap profile API (theanarkh) #59846
- [b970c0bbc2] - zlib: reduce code duplication (jhofstee) #57810
- [9782ca2b1b] - zlib: implement fast path for crc32 (Gürgün Dayıoğlu) #59813
Windows 64-bit Installer: https://nodejs.org/dist/v24.9.0/node-v24.9.0-x64.msi 
Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.9.0/node-v24.9.0-arm64.msi 
Windows 64-bit Binary: https://nodejs.org/dist/v24.9.0/win-x64/node.exe 
Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.9.0/win-arm64/node.exe 
macOS 64-bit Installer: https://nodejs.org/dist/v24.9.0/node-v24.9.0.pkg 
macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.9.0/node-v24.9.0-darwin-arm64.tar.gz 
macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.9.0/node-v24.9.0-darwin-x64.tar.gz 
Linux 64-bit Binary: https://nodejs.org/dist/v24.9.0/node-v24.9.0-linux-x64.tar.xz 
Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.9.0/node-v24.9.0-linux-ppc64le.tar.xz 
Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.9.0/node-v24.9.0-linux-s390x.tar.xz 
AIX 64-bit Binary: https://nodejs.org/dist/v24.9.0/node-v24.9.0-aix-ppc64.tar.gz 
ARMv8 64-bit Binary: https://nodejs.org/dist/v24.9.0/node-v24.9.0-linux-arm64.tar.xz 
Source Code: https://nodejs.org/dist/v24.9.0/node-v24.9.0.tar.gz 
Other release files: https://nodejs.org/dist/v24.9.0/ 
Documentation: https://nodejs.org/docs/v24.9.0/api/
SHASUMS
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256
f9d608ca04a37b9bf94d77d29d4b14359fcb02d49d6d0d09fabfb3b3c86c9859  node-v24.9.0-aix-ppc64.tar.gz
a77b91ff7b3d3caa27d63f88b6c3192bb77de638c581ec08f944daf86d60f25c  node-v24.9.0-arm64.msi
961024296c2a8e60daed0784f8b61e0fab5c51d197502a92eff052c72b53209b  node-v24.9.0-darwin-arm64.tar.gz
a61297e99bb9beb1b46a0b45e7664d35f0897cf6c6ff30942317ef64ea27993a  node-v24.9.0-darwin-arm64.tar.xz
6c9ac12d3160538d96d456dc59a8fec1479e3f8b20bfc0d61bc809eb9ec11417  node-v24.9.0-darwin-x64.tar.gz
0ce1a51658a507b59fb7283c65c1474a28580dc19e3310c25e41bd8e6de8829c  node-v24.9.0-darwin-x64.tar.xz
3b83e03dbdfa1700073659724a77718c603b2836265f69da85ab8e0cadad99c5  node-v24.9.0-headers.tar.gz
4db1e4f2bc0a1787810a24a54e351e3e49889a13cbf987041a5d462c157fbf48  node-v24.9.0-headers.tar.xz
dab232a90169737a48149149dd6707e7fdcbaefbaa94b4871047a38e93db947f  node-v24.9.0-linux-arm64.tar.gz
5a5b1dc4906e891a655d2f0689db664879724f2d9e63309486fd588172a052bc  node-v24.9.0-linux-arm64.tar.xz
557d4e3f779f5af4fc29944647e6afd76901c5be7bc0c2bd8785a199a1bc0271  node-v24.9.0-linux-ppc64le.tar.gz
84acd1058a44634b7908165032a17af45fd7db1ad29faa7f7faf571d2d3e1a48  node-v24.9.0-linux-ppc64le.tar.xz
9baab2eb6b8d9efd2e3533ac79b572e697510f6582fdb572ba636c4d7b01d2b1  node-v24.9.0-linux-s390x.tar.gz
96849c844cb76145ac401cd36382ab02524b3bd1b5c494943bbf1fb4cdbd1b41  node-v24.9.0-linux-s390x.tar.xz
d57d6c28a35785f58f33899a0aa0bfc83f7a8ef4448b6cf3f7d0961efc7b9189  node-v24.9.0-linux-x64.tar.gz
f52ec50e959d72d5c680d9731420b2661cd2a8070e94c7369b6ddfcd8b7278be  node-v24.9.0-linux-x64.tar.xz
eeab837ca6cad49e4ac1b7ef765a69acd60240b546b2754de6771fa73507ad66  node-v24.9.0.pkg
3c868d88377cb05ed87674a6af6add3e04733dd429c3370620a5a6c547fe6460  node-v24.9.0.tar.gz
f17bc4cb01f59098c34a288c1bb109a778867c14eeb0ebbd608d0617b1193bbf  node-v24.9.0.tar.xz
e4da0650ae534cb905755e027c7e34bcb6732d7df54e5d9f5b0dd130532fe9ff  node-v24.9.0-win-arm64.7z
ead06448c62743d2b872574450c6b3cf1328d87f16e8057d7cea9a797170b160  node-v24.9.0-win-arm64.zip
9bc5b9d5b6263087f620f2d6b00b99f9f799e0f4d690b47ad49f34764f05331e  node-v24.9.0-win-x64.7z
6873514c3e6a012917cc6f95ce48a6289253370d025f1b69db290d70feebfa6e  node-v24.9.0-win-x64.zip
0fbae803c054807758f91463dea94b9301cc44b7d3545e7af5b58f5ca6396cf0  node-v24.9.0-x64.msi
15e5fab233dddb6035959c6efcbd73167f5a991a1f82cc20c0be65dcd08df54f  win-arm64/node.exe
fb036d418573ea032176a432dd14bc7d929c2a7d9f7a2d0d5239c2d9448a608e  win-arm64/node.lib
d5f0d0fe7d94e45d16ca628952871378772255f1246b8051ce6da4e3891794f8  win-arm64/node_pdb.7z
fe309b6cfdf2e6a781d8b2174503b74fa3525883c523620b044dfcc4097effab  win-arm64/node_pdb.zip
5f364598aa3017130b22908ff7c3db0fd05bd42d39fd65b79fd6bd3f73c73da6  win-x64/node.exe
05f6163d27cfc385e7d39fdf2e4d0950e6e56b5f85da5df9f201ecd7e3d2b69a  win-x64/node.lib
3023d466f3448db25c7de8d008699401b2ceb4ed751157435d3e3a925eaecf1c  win-x64/node_pdb.7z
e5216056aa08cfe87a45ab9c32f36a96168ec5a12ef514f9de4a2898807ba19e  win-x64/node_pdb.zip
-----BEGIN PGP SIGNATURE-----
iQIzBAEBCAAdFiEEj8yhP+8dDC6RAI4Jdw96mlrhVgAFAmjVnJAACgkQdw96mlrh
VgDHVBAAixARYiEdhjYV9Qu47Xw5gOEq60K+xDty1ukAjHsHCSNw1EVrwWse4z6j
1lY3ZH00e0bd5aDiLAxBtcEp3r2QcSYSga7iY7gBJ8uM+ygfxAVlGV/Ucy2lG8RO
7zCiOZ8Dx3bNEEFVeaGnFkpFlFGbjZS08zgksW8a1Oe9OQoZr8TggNIgjnpRgS09
bqAnNiiNAFD8mkUz7q7OLxkQzMRuFRF7Bv9BCrxBjLAPjo9bha2TTul2h5AhvNuq
izE3lBtXoclJdWtloSC2ONc7QEoKDUfE99a/eXh6BukPBYhA7zdJX+Nby5dCuAp9
zD+P6plZVA0uF7bCHcu3Cr3HhTyDWCmGa3yGpiPMlW0rS3UvhWy2bLEr1WJkz5rA
R2YIZ8GN9Y3JCA/dMk1Ph68bZZhpRmfMG2uDNDNS5BeATxfmCJXFqtimwt0uVknA
Xp+fvIkme3+MDa3FNuz+wwGlu2al/HQFpKFdIgaiOxqZpD7uBlMhumf1zny5jtrX
NSCa8ZlbhQUlGYgXmJFj6FFhxpYfKotw1eQzl4E+PrnolTzoR55a63EvvC0q7OHL
7eMM7e8+T6msuj6Nt4aTgC2/OESorIarDZXkA08k+V6mzCYaZTLo6J2PHAX9NNuV
N+NVrx4ssbCEdqDh7RiZJKx4iPARICqjd5LGlV21HUfxZEJnD8g=
=pxdo
-----END PGP SIGNATURE-----