diff --git a/apps/site/pages/en/blog/release/v24.14.0.md b/apps/site/pages/en/blog/release/v24.14.0.md new file mode 100644 index 0000000000000..a517d3f1051e1 --- /dev/null +++ b/apps/site/pages/en/blog/release/v24.14.0.md @@ -0,0 +1,222 @@ +--- +date: '2026-02-24T15:38:19.656Z' +category: release +title: Node.js 24.14.0 (LTS) +layout: blog-post +author: Ruy Adorno +--- + +## 2026-02-24, Version 24.14.0 'Krypton' (LTS), @ruyadorno prepared by @aduh95 + +### Notable Changes + +- \[[`8b6d31d379`](https://github.com/nodejs/node/commit/8b6d31d379)] - **(SEMVER-MINOR)** **async_hooks**: add `trackPromises` option to `createHook()` (Joyee Cheung) [#61415](https://github.com/nodejs/node/pull/61415) +- \[[`68da144b4e`](https://github.com/nodejs/node/commit/68da144b4e)] - **build,deps**: replace cjs-module-lexer with merve (Yagiz Nizipli) [#61456](https://github.com/nodejs/node/pull/61456) +- \[[`f3a24c76e4`](https://github.com/nodejs/node/commit/f3a24c76e4)] - **(SEMVER-MINOR)** **deps**: add LIEF as a dependency (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167) +- \[[`1948861d23`](https://github.com/nodejs/node/commit/1948861d23)] - **(SEMVER-MINOR)** **events**: repurpose `events.listenerCount()` to accept EventTargets (René) [#60214](https://github.com/nodejs/node/pull/60214) +- \[[`d6f7c8d06f`](https://github.com/nodejs/node/commit/d6f7c8d06f)] - **(SEMVER-MINOR)** **fs**: add `ignore` option to `fs.watch` (Matteo Collina) [#61433](https://github.com/nodejs/node/pull/61433) +- \[[`cb54b3ca6e`](https://github.com/nodejs/node/commit/cb54b3ca6e)] - **(SEMVER-MINOR)** **http**: add `http.setGlobalProxyFromEnv()` (Joyee Cheung) [#60953](https://github.com/nodejs/node/pull/60953) +- \[[`35b1759d06`](https://github.com/nodejs/node/commit/35b1759d06)] - **(SEMVER-MINOR)** **module**: allow subpath imports that start with `#/` (Jan Martin) [#60864](https://github.com/nodejs/node/pull/60864) +- \[[`2d72ea66f2`](https://github.com/nodejs/node/commit/2d72ea66f2)] - **(SEMVER-MINOR)** **process**: preserve `AsyncLocalStorage` in `queueMicrotask` only when needed (Gürgün Dayıoğlu) [#60913](https://github.com/nodejs/node/pull/60913) +- \[[`6f4a4f6c8e`](https://github.com/nodejs/node/commit/6f4a4f6c8e)] - **(SEMVER-MINOR)** **sea**: split sea binary manipulation code (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167) +- \[[`c0ceb9b065`](https://github.com/nodejs/node/commit/c0ceb9b065)] - **(SEMVER-MINOR)** **sqlite**: enable defensive mode by default (Bart Louwers) [#61266](https://github.com/nodejs/node/pull/61266) +- \[[`33d8e8303b`](https://github.com/nodejs/node/commit/33d8e8303b)] - **(SEMVER-MINOR)** **sqlite**: add sqlite prepare options args (Guilherme Araújo) [#61311](https://github.com/nodejs/node/pull/61311) +- \[[`563ab699eb`](https://github.com/nodejs/node/commit/563ab699eb)] - **(SEMVER-MINOR)** **src**: add initial support for ESM in embedder API (Joyee Cheung) [#61548](https://github.com/nodejs/node/pull/61548) +- \[[`4c80031000`](https://github.com/nodejs/node/commit/4c80031000)] - **(SEMVER-MINOR)** **stream**: add `bytes()` method to `node:stream/consumers` (wantaek) [#60426](https://github.com/nodejs/node/pull/60426) +- \[[`f5233df4ff`](https://github.com/nodejs/node/commit/f5233df4ff)] - **(SEMVER-MINOR)** **stream**: do not pass `readable.compose()` output via `Readable.from()` (René) [#60907](https://github.com/nodejs/node/pull/60907) +- \[[`345a40fda3`](https://github.com/nodejs/node/commit/345a40fda3)] - **(SEMVER-MINOR)** **test**: use fixture directories for sea tests (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167) +- \[[`972f82411d`](https://github.com/nodejs/node/commit/972f82411d)] - **(SEMVER-MINOR)** **test_runner**: add `env` option to `run` function (Ethan Arrowood) [#61367](https://github.com/nodejs/node/pull/61367) +- \[[`d77f98c4b6`](https://github.com/nodejs/node/commit/d77f98c4b6)] - **(SEMVER-MINOR)** **test_runner**: support expecting a test-case to fail (Jacob Smith) [#60669](https://github.com/nodejs/node/pull/60669) +- \[[`8e900af6ba`](https://github.com/nodejs/node/commit/8e900af6ba)] - **(SEMVER-MINOR)** **util**: add `convertProcessSignalToExitCode` utility (Erick Wendel) [#60963](https://github.com/nodejs/node/pull/60963) + +### Commits + +- \[[`180778fb9a`](https://github.com/nodejs/node/commit/180778fb9a)] - **assert**: fix loose deepEqual arrays with undefined and null failing (Ruben Bridgewater) [#61587](https://github.com/nodejs/node/pull/61587) +- \[[`8b6d31d379`](https://github.com/nodejs/node/commit/8b6d31d379)] - **(SEMVER-MINOR)** **async_hooks**: add trackPromises option to createHook() (Joyee Cheung) [#61415](https://github.com/nodejs/node/pull/61415) +- \[[`83bcd38d35`](https://github.com/nodejs/node/commit/83bcd38d35)] - **benchmark**: add streaming TextDecoder benchmark (Сковорода Никита Андреевич) [#61549](https://github.com/nodejs/node/pull/61549) +- \[[`4c105844c5`](https://github.com/nodejs/node/commit/4c105844c5)] - **build**: add support for Visual Studio 2026 (Michaël Zasso) [#60727](https://github.com/nodejs/node/pull/60727) +- \[[`1f84fd91d9`](https://github.com/nodejs/node/commit/1f84fd91d9)] - **build**: skip sscache action on non-main branches (Joyee Cheung) [#61790](https://github.com/nodejs/node/pull/61790) +- \[[`30601b680f`](https://github.com/nodejs/node/commit/30601b680f)] - **build**: add `--shared-nbytes` configure flag (Antoine du Hamel) [#61341](https://github.com/nodejs/node/pull/61341) +- \[[`c6253eda49`](https://github.com/nodejs/node/commit/c6253eda49)] - **build**: add `--shared-hdr-histogram` configure flag (Antoine du Hamel) [#61280](https://github.com/nodejs/node/pull/61280) +- \[[`584c189037`](https://github.com/nodejs/node/commit/584c189037)] - **build**: add `--shared-gtest` configure flag (Antoine du Hamel) [#61279](https://github.com/nodejs/node/pull/61279) +- \[[`5998987881`](https://github.com/nodejs/node/commit/5998987881)] - **build**: aix: deoptimize implementation-visitor.cc with --shared (Stewart X Addison) [#61550](https://github.com/nodejs/node/pull/61550) +- \[[`68da144b4e`](https://github.com/nodejs/node/commit/68da144b4e)] - **build,deps**: replace cjs-module-lexer with merve (Yagiz Nizipli) [#61456](https://github.com/nodejs/node/pull/61456) +- \[[`6a4511bafb`](https://github.com/nodejs/node/commit/6a4511bafb)] - **build,win**: fix vs2022 compilation (Stefan Stojanovic) [#61530](https://github.com/nodejs/node/pull/61530) +- \[[`2d6735db8a`](https://github.com/nodejs/node/commit/2d6735db8a)] - **deps**: upgrade npm to 11.9.0 (npm team) [#61685](https://github.com/nodejs/node/pull/61685) +- \[[`699e2f8f81`](https://github.com/nodejs/node/commit/699e2f8f81)] - **deps**: update amaro to 1.1.7 (Node.js GitHub Bot) [#61730](https://github.com/nodejs/node/pull/61730) +- \[[`7be76316d6`](https://github.com/nodejs/node/commit/7be76316d6)] - **deps**: update minimatch to 10.1.2 (Node.js GitHub Bot) [#61732](https://github.com/nodejs/node/pull/61732) +- \[[`97e5a65013`](https://github.com/nodejs/node/commit/97e5a65013)] - **deps**: update undici to 7.21.0 (Node.js GitHub Bot) [#61683](https://github.com/nodejs/node/pull/61683) +- \[[`74e4710ee7`](https://github.com/nodejs/node/commit/74e4710ee7)] - **deps**: update googletest to 56efe3983185e3f37e43415d1afa97e3860f187f (Node.js GitHub Bot) [#61605](https://github.com/nodejs/node/pull/61605) +- \[[`b5113e2a2a`](https://github.com/nodejs/node/commit/b5113e2a2a)] - **deps**: update amaro to 1.1.6 (Node.js GitHub Bot) [#61603](https://github.com/nodejs/node/pull/61603) +- \[[`f3a24c76e4`](https://github.com/nodejs/node/commit/f3a24c76e4)] - **(SEMVER-MINOR)** **deps**: add LIEF as a dependency (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167) +- \[[`c370c3dc06`](https://github.com/nodejs/node/commit/c370c3dc06)] - **(SEMVER-MINOR)** **deps**: add tools and scripts to pull LIEF as a dependency (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167) +- \[[`e54975e17d`](https://github.com/nodejs/node/commit/e54975e17d)] - **deps**: V8: cherry-pick highway\@dcc0ca1cd42 (Richard Lau) [#61008](https://github.com/nodejs/node/pull/61008) +- \[[`625b90b76b`](https://github.com/nodejs/node/commit/625b90b76b)] - **deps**: update undici to 7.19.2 (Node.js GitHub Bot) [#61566](https://github.com/nodejs/node/pull/61566) +- \[[`05e9a9fb5e`](https://github.com/nodejs/node/commit/05e9a9fb5e)] - **deps**: update undici to 7.19.1 (Node.js GitHub Bot) [#61514](https://github.com/nodejs/node/pull/61514) +- \[[`3d41643e38`](https://github.com/nodejs/node/commit/3d41643e38)] - **deps**: update undici to 7.19.0 (Node.js GitHub Bot) [#61470](https://github.com/nodejs/node/pull/61470) +- \[[`17b363a66c`](https://github.com/nodejs/node/commit/17b363a66c)] - **dns**: fix Windows SRV ECONNREFUSED by adjusting c-ares fallback detection (notvivek12) [#61453](https://github.com/nodejs/node/pull/61453) +- \[[`33d0a8c22d`](https://github.com/nodejs/node/commit/33d0a8c22d)] - **doc**: clarify EventEmitter error handling in threat model (Matteo Collina) [#61701](https://github.com/nodejs/node/pull/61701) +- \[[`5b8e72cf85`](https://github.com/nodejs/node/commit/5b8e72cf85)] - **doc**: mention default option for test runner env (Steven) [#61659](https://github.com/nodejs/node/pull/61659) +- \[[`f44e67fac2`](https://github.com/nodejs/node/commit/f44e67fac2)] - **doc**: fix --inspect security warning section (Tim Perry) [#61675](https://github.com/nodejs/node/pull/61675) +- \[[`a0e09c9043`](https://github.com/nodejs/node/commit/a0e09c9043)] - **doc**: document `url.format(urlString)` as deprecated under DEP0169 (René) [#61644](https://github.com/nodejs/node/pull/61644) +- \[[`5e719248fe`](https://github.com/nodejs/node/commit/5e719248fe)] - **doc**: deprecation add more codemod (Augustin Mauroy) [#61642](https://github.com/nodejs/node/pull/61642) +- \[[`8f5a3e5df4`](https://github.com/nodejs/node/commit/8f5a3e5df4)] - **doc**: fix grammatical error in README.md (ayj8201) [#61653](https://github.com/nodejs/node/pull/61653) +- \[[`d52b535163`](https://github.com/nodejs/node/commit/d52b535163)] - **doc**: correct tools README Boxstarter link (Mike McCready) [#61638](https://github.com/nodejs/node/pull/61638) +- \[[`4889dc4f59`](https://github.com/nodejs/node/commit/4889dc4f59)] - **doc**: update `server.dropMaxConnection` link (YuSheng Chen) [#61584](https://github.com/nodejs/node/pull/61584) +- \[[`8e48e72f2a`](https://github.com/nodejs/node/commit/8e48e72f2a)] - **doc**: clean up writing-and-running-benchmarks.md (Hardanish Singh) [#61345](https://github.com/nodejs/node/pull/61345) +- \[[`1948861d23`](https://github.com/nodejs/node/commit/1948861d23)] - **(SEMVER-MINOR)** **events**: repurpose `events.listenerCount()` to accept EventTargets (René) [#60214](https://github.com/nodejs/node/pull/60214) +- \[[`d6f7c8d06f`](https://github.com/nodejs/node/commit/d6f7c8d06f)] - **(SEMVER-MINOR)** **fs**: add ignore option to fs.watch (Matteo Collina) [#61433](https://github.com/nodejs/node/pull/61433) +- \[[`2d7e5f9581`](https://github.com/nodejs/node/commit/2d7e5f9581)] - **http**: implement slab allocation for HTTP header parsing (Mert Can Altin) [#61375](https://github.com/nodejs/node/pull/61375) +- \[[`cb54b3ca6e`](https://github.com/nodejs/node/commit/cb54b3ca6e)] - **(SEMVER-MINOR)** **http**: add http.setGlobalProxyFromEnv() (Joyee Cheung) [#60953](https://github.com/nodejs/node/pull/60953) +- \[[`6df8be48ce`](https://github.com/nodejs/node/commit/6df8be48ce)] - **lib**: use utf8 fast path for streaming TextDecoder (Сковорода Никита Андреевич) [#61549](https://github.com/nodejs/node/pull/61549) +- \[[`830fff0aca`](https://github.com/nodejs/node/commit/830fff0aca)] - **lib**: recycle queues (Robert Nagy) [#61461](https://github.com/nodejs/node/pull/61461) +- \[[`069874bdbd`](https://github.com/nodejs/node/commit/069874bdbd)] - **lib**: use StringPrototypeStartsWith from primordials in locks (Taejin Kim) [#61492](https://github.com/nodejs/node/pull/61492) +- \[[`7824c7589e`](https://github.com/nodejs/node/commit/7824c7589e)] - **lib**: unify ICU and no-ICU TextDecoder (Сковорода Никита Андреевич) [#61409](https://github.com/nodejs/node/pull/61409) +- \[[`f81430702a`](https://github.com/nodejs/node/commit/f81430702a)] - **lib**: prefer `call()` over `apply()` if argument list is not array (Livia Medeiros) [#60796](https://github.com/nodejs/node/pull/60796) +- \[[`a723f72e1e`](https://github.com/nodejs/node/commit/a723f72e1e)] - **lib**: add support for readable byte streams to .toWeb() (Hans Klunder) [#58664](https://github.com/nodejs/node/pull/58664) +- \[[`b78d814b3d`](https://github.com/nodejs/node/commit/b78d814b3d)] - **meta**: persist sccache daemon until end of build workflows (René) [#61639](https://github.com/nodejs/node/pull/61639) +- \[[`40a872a4b9`](https://github.com/nodejs/node/commit/40a872a4b9)] - **meta**: bump github/codeql-action from 4.31.9 to 4.32.0 (dependabot\[bot]) [#61622](https://github.com/nodejs/node/pull/61622) +- \[[`0637bdb3be`](https://github.com/nodejs/node/commit/0637bdb3be)] - **meta**: bump step-security/harden-runner from 2.14.0 to 2.14.1 (dependabot\[bot]) [#61621](https://github.com/nodejs/node/pull/61621) +- \[[`e8d9bd9fc5`](https://github.com/nodejs/node/commit/e8d9bd9fc5)] - **meta**: bump actions/setup-python from 6.1.0 to 6.2.0 (dependabot\[bot]) [#61627](https://github.com/nodejs/node/pull/61627) +- \[[`c517df2b65`](https://github.com/nodejs/node/commit/c517df2b65)] - **meta**: bump actions/setup-node from 6.1.0 to 6.2.0 (dependabot\[bot]) [#61625](https://github.com/nodejs/node/pull/61625) +- \[[`9a64f2f25d`](https://github.com/nodejs/node/commit/9a64f2f25d)] - **meta**: bump actions/cache from 5.0.1 to 5.0.3 (dependabot\[bot]) [#61624](https://github.com/nodejs/node/pull/61624) +- \[[`0e5922e95e`](https://github.com/nodejs/node/commit/0e5922e95e)] - **meta**: bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 (dependabot\[bot]) [#61623](https://github.com/nodejs/node/pull/61623) +- \[[`5da7b51091`](https://github.com/nodejs/node/commit/5da7b51091)] - **meta**: bump actions/stale from 10.1.0 to 10.1.1 (dependabot\[bot]) [#61620](https://github.com/nodejs/node/pull/61620) +- \[[`c085c8a43f`](https://github.com/nodejs/node/commit/c085c8a43f)] - **meta**: bump actions/checkout from 6.0.1 to 6.0.2 (dependabot\[bot]) [#61619](https://github.com/nodejs/node/pull/61619) +- \[[`ce2acf0275`](https://github.com/nodejs/node/commit/ce2acf0275)] - **meta**: bump actions/download-artifact from 6.0.0 to 7.0.0 (dependabot\[bot]) [#61242](https://github.com/nodejs/node/pull/61242) +- \[[`629f0eaac5`](https://github.com/nodejs/node/commit/629f0eaac5)] - **meta**: bump actions/checkout from 6.0.0 to 6.0.1 (dependabot\[bot]) [#61239](https://github.com/nodejs/node/pull/61239) +- \[[`cd80d369c9`](https://github.com/nodejs/node/commit/cd80d369c9)] - **meta**: bump actions/upload-artifact from 5.0.0 to 6.0.0 (dependabot\[bot]) [#61238](https://github.com/nodejs/node/pull/61238) +- \[[`8c75e4e1fa`](https://github.com/nodejs/node/commit/8c75e4e1fa)] - **meta**: bump actions/checkout from 5.0.1 to 6.0.0 (dependabot\[bot]) [#60925](https://github.com/nodejs/node/pull/60925) +- \[[`5a9e9f4127`](https://github.com/nodejs/node/commit/5a9e9f4127)] - **meta**: bump actions/checkout from 5.0.0 to 5.0.1 (dependabot\[bot]) [#60767](https://github.com/nodejs/node/pull/60767) +- \[[`1519251dd1`](https://github.com/nodejs/node/commit/1519251dd1)] - **module**: do not invoke resolve hooks twice for imported cjs (Joyee Cheung) [#61529](https://github.com/nodejs/node/pull/61529) +- \[[`8d7190b3fe`](https://github.com/nodejs/node/commit/8d7190b3fe)] - **module**: do not wrap module.\_load when tracing is not enabled (Joyee Cheung) [#61479](https://github.com/nodejs/node/pull/61479) +- \[[`35b1759d06`](https://github.com/nodejs/node/commit/35b1759d06)] - **(SEMVER-MINOR)** **module**: allow subpath imports that start with `#/` (Jan Martin) [#60864](https://github.com/nodejs/node/pull/60864) +- \[[`7a83b38921`](https://github.com/nodejs/node/commit/7a83b38921)] - **net**: defer synchronous destroy calls in internalConnect (RajeshKumar11) [#61658](https://github.com/nodejs/node/pull/61658) +- \[[`16bab79421`](https://github.com/nodejs/node/commit/16bab79421)] - **process**: do not truncate long strings in `--print` (Mohamed Akram) [#61497](https://github.com/nodejs/node/pull/61497) +- \[[`2d72ea66f2`](https://github.com/nodejs/node/commit/2d72ea66f2)] - **(SEMVER-MINOR)** **process**: preserve AsyncLocalStorage in queueMicrotask only when needed (Gürgün Dayıoğlu) [#60913](https://github.com/nodejs/node/pull/60913) +- \[[`9cc1c4604f`](https://github.com/nodejs/node/commit/9cc1c4604f)] - **repl**: fix getters triggering side effects during completion (Dario Piotrowicz) [#61043](https://github.com/nodejs/node/pull/61043) +- \[[`93703306a1`](https://github.com/nodejs/node/commit/93703306a1)] - **repl**: tab completion targets `` instead of `new ` (Đỗ Trọng Hải) [#60319](https://github.com/nodejs/node/pull/60319) +- \[[`6f4a4f6c8e`](https://github.com/nodejs/node/commit/6f4a4f6c8e)] - **(SEMVER-MINOR)** **sea**: split sea binary manipulation code (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167) +- \[[`46a2dad4db`](https://github.com/nodejs/node/commit/46a2dad4db)] - **sqlite**: avoid extra copy for large text binds (Ali Hassan) [#61580](https://github.com/nodejs/node/pull/61580) +- \[[`f91a377f7e`](https://github.com/nodejs/node/commit/f91a377f7e)] - **sqlite**: use DictionaryTemplate for run() result (Mert Can Altin) [#61432](https://github.com/nodejs/node/pull/61432) +- \[[`0e7571ae3e`](https://github.com/nodejs/node/commit/0e7571ae3e)] - **sqlite**: change approach to fix segfault SQLTagStore (Bart Louwers) [#60462](https://github.com/nodejs/node/pull/60462) +- \[[`8e8f70524a`](https://github.com/nodejs/node/commit/8e8f70524a)] - **sqlite**: reserve vectors space (Guilherme Araújo) [#61540](https://github.com/nodejs/node/pull/61540) +- \[[`c0ceb9b065`](https://github.com/nodejs/node/commit/c0ceb9b065)] - **(SEMVER-MINOR)** **sqlite**: enable defensive mode by default (Bart Louwers) [#61266](https://github.com/nodejs/node/pull/61266) +- \[[`33d8e8303b`](https://github.com/nodejs/node/commit/33d8e8303b)] - **(SEMVER-MINOR)** **sqlite**: add sqlite prepare options args (Guilherme Araújo) [#61311](https://github.com/nodejs/node/pull/61311) +- \[[`f0d8f37002`](https://github.com/nodejs/node/commit/f0d8f37002)] - **src**: elide heap allocation in structured clone implementation (Anna Henningsen) [#61703](https://github.com/nodejs/node/pull/61703) +- \[[`db478c4336`](https://github.com/nodejs/node/commit/db478c4336)] - **src**: use simdutf for one-byte string UTF-8 write in stringBytes (Mert Can Altin) [#61696](https://github.com/nodejs/node/pull/61696) +- \[[`563ab699eb`](https://github.com/nodejs/node/commit/563ab699eb)] - **(SEMVER-MINOR)** **src**: add initial support for ESM in embedder API (Joyee Cheung) [#61548](https://github.com/nodejs/node/pull/61548) +- \[[`da13186a15`](https://github.com/nodejs/node/commit/da13186a15)] - **src**: throw RangeError on failed ArrayBuffer BackingStore allocation (Chengzhong Wu) [#61480](https://github.com/nodejs/node/pull/61480) +- \[[`4c80031000`](https://github.com/nodejs/node/commit/4c80031000)] - **(SEMVER-MINOR)** **stream**: add bytes() method to stream/consumers (wantaek) [#60426](https://github.com/nodejs/node/pull/60426) +- \[[`f5233df4ff`](https://github.com/nodejs/node/commit/f5233df4ff)] - **(SEMVER-MINOR)** **stream**: do not pass `readable.compose()` output via `Readable.from()` (René) [#60907](https://github.com/nodejs/node/pull/60907) +- \[[`ad04a469c8`](https://github.com/nodejs/node/commit/ad04a469c8)] - **test**: restraint version replacement pattern in snapshots (Chengzhong Wu) [#61748](https://github.com/nodejs/node/pull/61748) +- \[[`2d3b4a8d65`](https://github.com/nodejs/node/commit/2d3b4a8d65)] - **test**: print stack immediately avoiding GC interleaving (Chengzhong Wu) [#61699](https://github.com/nodejs/node/pull/61699) +- \[[`38f43a6d4e`](https://github.com/nodejs/node/commit/38f43a6d4e)] - **test**: fix case-insensitive path matching on Windows (Matteo Collina) [#61682](https://github.com/nodejs/node/pull/61682) +- \[[`06513f5ff2`](https://github.com/nodejs/node/commit/06513f5ff2)] - **test**: fix flaky test-performance-eventloopdelay (Matteo Collina) [#61629](https://github.com/nodejs/node/pull/61629) +- \[[`9d79c66c61`](https://github.com/nodejs/node/commit/9d79c66c61)] - **test**: remove duplicate wpt tests (Filip Skokan) [#61617](https://github.com/nodejs/node/pull/61617) +- \[[`eac9f4f401`](https://github.com/nodejs/node/commit/eac9f4f401)] - **test**: fix race condition in watch mode tests (Matteo Collina) [#61615](https://github.com/nodejs/node/pull/61615) +- \[[`ecf5947575`](https://github.com/nodejs/node/commit/ecf5947575)] - **test**: update WPT for url to e3c46fdf55 (Node.js GitHub Bot) [#61602](https://github.com/nodejs/node/pull/61602) +- \[[`356ff5fece`](https://github.com/nodejs/node/commit/356ff5fece)] - **test**: use the skipIfNoWatch() utility function (Luigi Pinca) [#61531](https://github.com/nodejs/node/pull/61531) +- \[[`4b2187aea2`](https://github.com/nodejs/node/commit/4b2187aea2)] - **test**: unify assertSnapshot common patterns (Chengzhong Wu) [#61590](https://github.com/nodejs/node/pull/61590) +- \[[`8c25489d63`](https://github.com/nodejs/node/commit/8c25489d63)] - **test**: split test-fs-watch-ignore-\* (Luigi Pinca) [#61494](https://github.com/nodejs/node/pull/61494) +- \[[`43b8a2b7e7`](https://github.com/nodejs/node/commit/43b8a2b7e7)] - **test**: add some validation for JSON doc output (Antoine du Hamel) [#61413](https://github.com/nodejs/node/pull/61413) +- \[[`345a40fda3`](https://github.com/nodejs/node/commit/345a40fda3)] - **(SEMVER-MINOR)** **test**: use fixture directories for sea tests (Joyee Cheung) [#61167](https://github.com/nodejs/node/pull/61167) +- \[[`24cf6b8326`](https://github.com/nodejs/node/commit/24cf6b8326)] - **test**: reveal wpt evaluation errors in status files (Chengzhong Wu) [#61358](https://github.com/nodejs/node/pull/61358) +- \[[`d4034dfb62`](https://github.com/nodejs/node/commit/d4034dfb62)] - **test**: forbid use of named imports for fixtures (Antoine du Hamel) [#61228](https://github.com/nodejs/node/pull/61228) +- \[[`4f871ee897`](https://github.com/nodejs/node/commit/4f871ee897)] - **test**: enforce better never-settling-promise detection (Antoine du Hamel) [#60976](https://github.com/nodejs/node/pull/60976) +- \[[`8e9adedf02`](https://github.com/nodejs/node/commit/8e9adedf02)] - **test**: ensure assertions are reached on all tests (Antoine du Hamel) [#60845](https://github.com/nodejs/node/pull/60845) +- \[[`273832802e`](https://github.com/nodejs/node/commit/273832802e)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#60763](https://github.com/nodejs/node/pull/60763) +- \[[`e06adcb52f`](https://github.com/nodejs/node/commit/e06adcb52f)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#60760](https://github.com/nodejs/node/pull/60760) +- \[[`aeed0ccc02`](https://github.com/nodejs/node/commit/aeed0ccc02)] - **test**: use `RegExp.escape` to improve test reliability (Antoine du Hamel) [#60803](https://github.com/nodejs/node/pull/60803) +- \[[`74bcd0adab`](https://github.com/nodejs/node/commit/74bcd0adab)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#60728](https://github.com/nodejs/node/pull/60728) +- \[[`407807b08e`](https://github.com/nodejs/node/commit/407807b08e)] - **test**: skip tests not passing without `NODE_OPTIONS` support (Antoine du Hamel) [#60912](https://github.com/nodejs/node/pull/60912) +- \[[`a9e70cefb0`](https://github.com/nodejs/node/commit/a9e70cefb0)] - **test**: ensure assertions are reached on more tests (Antoine du Hamel) [#60634](https://github.com/nodejs/node/pull/60634) +- \[[`21b23cd0d0`](https://github.com/nodejs/node/commit/21b23cd0d0)] - **test_runner**: fix test enqueue when test file has syntax error (Edy Silva) [#61573](https://github.com/nodejs/node/pull/61573) +- \[[`6a4de694b2`](https://github.com/nodejs/node/commit/6a4de694b2)] - **test_runner**: fix passing `expectFailure` (Moshe Atlow) [#61568](https://github.com/nodejs/node/pull/61568) +- \[[`6640de2b0f`](https://github.com/nodejs/node/commit/6640de2b0f)] - **test_runner**: differentiate todo and failure styles (Moshe Atlow) [#61564](https://github.com/nodejs/node/pull/61564) +- \[[`972f82411d`](https://github.com/nodejs/node/commit/972f82411d)] - **(SEMVER-MINOR)** **test_runner**: add env option to run function (Ethan Arrowood) [#61367](https://github.com/nodejs/node/pull/61367) +- \[[`d77f98c4b6`](https://github.com/nodejs/node/commit/d77f98c4b6)] - **(SEMVER-MINOR)** **test_runner**: support expecting a test-case to fail (Jacob Smith) [#60669](https://github.com/nodejs/node/pull/60669) +- \[[`f98986cbb9`](https://github.com/nodejs/node/commit/f98986cbb9)] - **tools**: switch to ARM runners on GHA jobs (Antoine du Hamel) [#61903](https://github.com/nodejs/node/pull/61903) +- \[[`034589dd93`](https://github.com/nodejs/node/commit/034589dd93)] - **tools**: avoid building twice in coverage jobs (Antoine du Hamel) [#61899](https://github.com/nodejs/node/pull/61899) +- \[[`e50e2f00bb`](https://github.com/nodejs/node/commit/e50e2f00bb)] - **tools**: use ubuntu-slim runner in GHA (Antoine du Hamel) [#61759](https://github.com/nodejs/node/pull/61759) +- \[[`f658f48ccb`](https://github.com/nodejs/node/commit/f658f48ccb)] - **tools**: use ubuntu-slim runner in GHA (Antoine du Hamel) [#61734](https://github.com/nodejs/node/pull/61734) +- \[[`65c77d74ff`](https://github.com/nodejs/node/commit/65c77d74ff)] - **tools**: use ubuntu-latest runner in `notify-on-push` workflow (Antoine du Hamel) [#61742](https://github.com/nodejs/node/pull/61742) +- \[[`605905556a`](https://github.com/nodejs/node/commit/605905556a)] - **tools**: enforce removal of `lts-watch-*` labels on release proposals (Antoine du Hamel) [#61672](https://github.com/nodejs/node/pull/61672) +- \[[`f0f98d4c03`](https://github.com/nodejs/node/commit/f0f98d4c03)] - **tools**: use ubuntu-slim runner in meta GitHub Actions (Tierney Cyren) [#61663](https://github.com/nodejs/node/pull/61663) +- \[[`ab63ddf354`](https://github.com/nodejs/node/commit/ab63ddf354)] - **tools**: add LIEF to license builder (Chengzhong Wu) [#61523](https://github.com/nodejs/node/pull/61523) +- \[[`8a0f6192c9`](https://github.com/nodejs/node/commit/8a0f6192c9)] - **tools**: enforce trailing commas in `test/es-module` (Antoine du Hamel) [#60891](https://github.com/nodejs/node/pull/60891) +- \[[`4afbbcf39e`](https://github.com/nodejs/node/commit/4afbbcf39e)] - **tools**: enforce trailing commas in `test/sequential` (Antoine du Hamel) [#60892](https://github.com/nodejs/node/pull/60892) +- \[[`4c1abf752c`](https://github.com/nodejs/node/commit/4c1abf752c)] - **tools,win**: upgrade install additional tools to Visual Studio 2026 (Mike McCready) [#61562](https://github.com/nodejs/node/pull/61562) +- \[[`8e900af6ba`](https://github.com/nodejs/node/commit/8e900af6ba)] - **(SEMVER-MINOR)** **util**: add convertProcessSignalToExitCode utility (Erick Wendel) [#60963](https://github.com/nodejs/node/pull/60963) + +Windows 64-bit Installer: https://nodejs.org/dist/v24.14.0/node-v24.14.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v24.14.0/node-v24.14.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v24.14.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v24.14.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v24.14.0/node-v24.14.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v24.14.0/node-v24.14.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v24.14.0/node-v24.14.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v24.14.0/node-v24.14.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v24.14.0/node-v24.14.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v24.14.0/node-v24.14.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v24.14.0/node-v24.14.0-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v24.14.0/node-v24.14.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v24.14.0/node-v24.14.0.tar.gz \ +Other release files: https://nodejs.org/dist/v24.14.0/ \ +Documentation: https://nodejs.org/docs/v24.14.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +27ac48f94c7e88f4b0c5d9077f0fec10256289c7dca21e0d9f82cbaad13d6e3d node-v24.14.0-aix-ppc64.tar.gz +63d07136eead197b66c58f4ee6c4343e0b4027cc3a1f852ada45b081250e21b7 node-v24.14.0-arm64.msi +a1a54f46a750d2523d628d924aab61758a51c9dad3e0238beb14141be9615dd3 node-v24.14.0-darwin-arm64.tar.gz +448f01d4dfa5a21d280cfbacf00abc22b51aad52f38db0f4886e0e5d00df541d node-v24.14.0-darwin-arm64.tar.xz +f2879eb810e25993a0578e5d878930266fd2eafcffe9f2839b3d8db354d4879e node-v24.14.0-darwin-x64.tar.gz +c17b234c4db75eeb03c3a86664428ec25ee849e1ebbe8cb05c4a70f282187866 node-v24.14.0-darwin-x64.tar.xz +bc1505c8e2b2b1f7b7cf3808bf53691e5d110c816d1bc1a48075195c5dcafe05 node-v24.14.0-headers.tar.gz +87d1a7d80599ce330de0f0832f6b85c7d93c5be7b6a203725afa016405227988 node-v24.14.0-headers.tar.xz +f44740cd218de8127f1c44c41510a3a740fa5c9c8d1cdce1c3bedada79f3cde7 node-v24.14.0-linux-arm64.tar.gz +e7adfca03d9173276114a6f2219df1a7d25e1bfd6bbd771d3f839118a2053094 node-v24.14.0-linux-arm64.tar.xz +83b263f9c2ea946c0c4a15c3caea6470dc49fe0beb6f33dfd29aa9128250637a node-v24.14.0-linux-ppc64le.tar.gz +33beedaf3ff82ee511cfc5ca0cc7076161a54a982321d061409299e27bc5f41e node-v24.14.0-linux-ppc64le.tar.xz +8fa220a1f7b7769605c2e929fdbf736822997bf4cf88a3db05188eabd7712328 node-v24.14.0-linux-s390x.tar.gz +d133f1aac2d6dbaa4de9fe183184e57adbc9f45d62e37f55a864c8af92d4cb5a node-v24.14.0-linux-s390x.tar.xz +dbf5b8665dec15e59e6359a517fefb47b23fdb9152d8def975b9bca3dfc6d355 node-v24.14.0-linux-x64.tar.gz +41cd79bb7877c81605a9e68ec4c91547774f46a40c67a17e34d7179ef11729df node-v24.14.0-linux-x64.tar.xz +5514f833980f172088ce22883000d1aea9db9eea41cb1a306154eb4f333ec1c0 node-v24.14.0.pkg +852c73dd5b6ba15b231d036da6312dbcdabd6295adc3940586f3187b77731cf3 node-v24.14.0.tar.gz +9fe025ef4028aba95d16e7810518bf4a5e8abfb0bdc07d8a3fdbb0afd538d77f node-v24.14.0.tar.xz +6cd8d95799dc70e89585522e5cfe5d576b6ac44f6ff5afc0a4b0318c9f7aa8cd node-v24.14.0-win-arm64.7z +88d36e8109736a2fa9bdc596f2cf507a3c52c69cdf96e54f8acd473ec14be853 node-v24.14.0-win-arm64.zip +90f18586ef8ca13dd94e7f571d27b8a5120116fea218bcc41e3ef6697dcbc777 node-v24.14.0-win-x64.7z +313fa40c0d7b18575821de8cb17483031fe07d95de5994f6f435f3b345f85c66 node-v24.14.0-win-x64.zip +e75802e82be6875b03b63377a9e12e4416799d0fb6dd460f0605d29144d386a6 node-v24.14.0-x64.msi +8c5fd45a4a1fd3cc4a6f07da8803b05194108906cb6fb7d962448a12582a5922 win-arm64/node.exe +59f1c42e5962e9333bb1673c21125b7a7ce9a6908299aee8f7673803c2e24212 win-arm64/node.lib +5a7c7261b40fd4e39bc4410e23d31e48857d737d830434ea2dc215fec892a8dd win-arm64/node_pdb.7z +3bf09a2b133893208ad48b3c439dad570aa4cc2a5fe842bc137f795aa4e72944 win-arm64/node_pdb.zip +63c259c81e5d472b5f11c8d506070130cb04a1ecf84b80377a34ed6ec9048088 win-x64/node.exe +35fcdd35d3d22e283c0e2e095cc43ef676301bb85f950c344a73d59231bd7e61 win-x64/node.lib +802553494ca6c8049aa542ddcc54e2616a0a1819ae23f894767a4110a1ec0b5a win-x64/node_pdb.7z +b8e1aee14390b2828ede1f4b89ed8a8b0c5da40e43fbfe14dc4b42dc14ed3710 win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEEI9StI21e7DMQ5spl7AUGb2S+AoFAmmdxM8ACgkQl7AUGb2S ++AqtGg//VNRQePlUD0cVBO0AnCnV4LlkmkIdxYDmD1Myk2blqC1rvLsGDj1kwfp0 +cOrDI1PvnYrasK9N5Q1cF+g9ZJDgv59v8lLkPYng8hYPiVgyYE4e00QSPMebDzwu +jwIZtNdR0sdD6nAq3WLQQFqkvytj2y4OhL1w4+OiXomBXYRC7CU3/ZwzEsrJ/od6 +QeO10KezF3luDGiMXVoJzn1pxm6Itvcdyqu0DZkBsbX6IrzR+Kbb2wv/dWUafas+ +PM9J89QhV4UTgRSHo6O5FnG6ZStcOpa/o4yCWmO9EA1GBv/n3Jnr/uk8zNE2ODwe +TV0OiJnbUrCx0dQQTx42wVQL+Ust/PLu5m5csnO0R5E/QCVBxwwF6+CnPyNP6HgF +fA+2PoKuv5pSCbfupfJg0KLSxToX6p3wO02sRzQnpzY8usdEel071n6246TjYRqM +o4nS5FgLlBLd1djKjOna62QYsKtOvldZ1+R96rQBOW7oYeAG9vggGcbuWN2y2zvu +ctcVpC3+cj2wEQ/N2NQOz/Zd//m8j19XgIoNxHuU6w0xGXxHnyTpJhrd5bI3L3R4 +QMK+v67uM9qVLPPZdEFbRpwVv/UhtM2jewcQtwnplo2dseWO3n+CXgRs8DOK5JKX +RN7ozy+bCPm3ayU6O01MmUiUaD9PQA/lIE2M4jZ9qfmhWuTlk20= +=i+aM +-----END PGP SIGNATURE----- +```