diff --git a/apps/site/pages/en/blog/release/v26.12.0.md b/apps/site/pages/en/blog/release/v26.12.0.md new file mode 100644 index 0000000000000..7da89f1f5852a --- /dev/null +++ b/apps/site/pages/en/blog/release/v26.12.0.md @@ -0,0 +1,196 @@ +--- +date: '2026-10-14T15:23:06.239Z' +category: release +title: Node.js 26.12.0 (Current) +layout: blog-post +author: Richard Lau +--- + +## 2026-10-14, Version 26.12.0 (Current), @richardlau + +### Notable Changes + +- \[[`1ebd6d3677`](https://github.com/nodejs/node/commit/1ebd6d3677)] - **(SEMVER-MINOR)** **doc,lib,src**: throw on missing WebAssembly or RX support (Paolo Insogna) [#66533](https://github.com/nodejs/node/pull/66533) +- \[[`7f1937d2b9`](https://github.com/nodejs/node/commit/7f1937d2b9)] - **(SEMVER-MINOR)** **http**: add websocketMask() and websocketUnmask() (James M Snell) [#66335](https://github.com/nodejs/node/pull/66335) + +### Commits + +- \[[`30e76bb16a`](https://github.com/nodejs/node/commit/30e76bb16a)] - **benchmark**: fix input passed to subtle.digest in webcrypto-digest (Rafael Gonzaga) [#66608](https://github.com/nodejs/node/pull/66608) +- \[[`adef72223a`](https://github.com/nodejs/node/commit/adef72223a)] - **benchmark**: fix buffer option in buffer read/write benchmarks (Rafael Gonzaga) [#66604](https://github.com/nodejs/node/pull/66604) +- \[[`2f498f08fe`](https://github.com/nodejs/node/commit/2f498f08fe)] - **benchmark**: add util.parseArgs benchmark (Rafael Gonzaga) [#66599](https://github.com/nodejs/node/pull/66599) +- \[[`4ce8412e18`](https://github.com/nodejs/node/commit/4ce8412e18)] - **benchmark**: fix url-searchparams-sort to sort a fresh list (RafaelGSS) [#66535](https://github.com/nodejs/node/pull/66535) +- \[[`493bd6c66e`](https://github.com/nodejs/node/commit/493bd6c66e)] - **benchmark,tools**: fix napi benchmarks on GHA (Nigro Simone) [#66423](https://github.com/nodejs/node/pull/66423) +- \[[`e4515552d6`](https://github.com/nodejs/node/commit/e4515552d6)] - **build**: run QUIC CI for V8 changes (Yuya Inoue) [#66602](https://github.com/nodejs/node/pull/66602) +- \[[`a888e51062`](https://github.com/nodejs/node/commit/a888e51062)] - **build**: support Python 3.15 (Mike McCready) [#65750](https://github.com/nodejs/node/pull/65750) +- \[[`2afab9a63b`](https://github.com/nodejs/node/commit/2afab9a63b)] - **build**: do not include shared gtest in `node` link path (Antoine du Hamel) [#66626](https://github.com/nodejs/node/pull/66626) +- \[[`f88c2f8ec6`](https://github.com/nodejs/node/commit/f88c2f8ec6)] - **build,test**: enable temporal support on no-ICU and system-ICU builds (Antoine du Hamel) [#66697](https://github.com/nodejs/node/pull/66697) +- \[[`5fd03e6fdf`](https://github.com/nodejs/node/commit/5fd03e6fdf)] - **child\_process**: propagate config-file permission flags to children (Rafael Gonzaga) [#66559](https://github.com/nodejs/node/pull/66559) +- \[[`f771134b07`](https://github.com/nodejs/node/commit/f771134b07)] - **crypto**: isolate provider EC PKCS8 encoding (Filip Skokan) [#66413](https://github.com/nodejs/node/pull/66413) +- \[[`4e00a293db`](https://github.com/nodejs/node/commit/4e00a293db)] - **crypto**: remove key export and metadata locks (Filip Skokan) [#66413](https://github.com/nodejs/node/pull/66413) +- \[[`bcd8018775`](https://github.com/nodejs/node/commit/bcd8018775)] - **crypto**: remove verify setup key locking (Filip Skokan) [#66413](https://github.com/nodejs/node/pull/66413) +- \[[`883250fee2`](https://github.com/nodejs/node/commit/883250fee2)] - **crypto**: remove KEM key locking (Filip Skokan) [#66413](https://github.com/nodejs/node/pull/66413) +- \[[`9d98805071`](https://github.com/nodejs/node/commit/9d98805071)] - **crypto**: remove RSA-OAEP key locking (Filip Skokan) [#66413](https://github.com/nodejs/node/pull/66413) +- \[[`d6293e7bb1`](https://github.com/nodejs/node/commit/d6293e7bb1)] - **crypto**: skip secret key mutex allocation (Filip Skokan) [#66413](https://github.com/nodejs/node/pull/66413) +- \[[`8d8af8003e`](https://github.com/nodejs/node/commit/8d8af8003e)] - **crypto**: keep the root cert store per Environment (Shelley Vohr) [#66411](https://github.com/nodejs/node/pull/66411) +- \[[`c6f0614785`](https://github.com/nodejs/node/commit/c6f0614785)] - **crypto**: remove select Web Crypto warnings (Filip Skokan) [#66312](https://github.com/nodejs/node/pull/66312) +- \[[`e5360b5a08`](https://github.com/nodejs/node/commit/e5360b5a08)] - **deps**: update googletest to 988ea2c1798de7779f656df2281dd36d6039a17a (Node.js GitHub Bot) [#66652](https://github.com/nodejs/node/pull/66652) +- \[[`7eb230a2c1`](https://github.com/nodejs/node/commit/7eb230a2c1)] - **deps**: update acorn to 8.19.0 (Node.js GitHub Bot) [#66655](https://github.com/nodejs/node/pull/66655) +- \[[`af946ba8f3`](https://github.com/nodejs/node/commit/af946ba8f3)] - **deps**: update sqlite to 3.54.0 (Node.js GitHub Bot) [#66663](https://github.com/nodejs/node/pull/66663) +- \[[`007872a85d`](https://github.com/nodejs/node/commit/007872a85d)] - **deps**: V8: cherry-pick 8d14d49c4040 (Antoine du Hamel) [#66627](https://github.com/nodejs/node/pull/66627) +- \[[`f44aec4966`](https://github.com/nodejs/node/commit/f44aec4966)] - **deps**: update simdjson to 5.0.3 (Daniel Lemire) [#66620](https://github.com/nodejs/node/pull/66620) +- \[[`1a33e914e8`](https://github.com/nodejs/node/commit/1a33e914e8)] - **deps**: V8: cherry-pick 7d5eb1df2a72 (inoway46) [#66566](https://github.com/nodejs/node/pull/66566) +- \[[`3294d51e5a`](https://github.com/nodejs/node/commit/3294d51e5a)] - **diagnostics\_channel**: fix default callback context (Matteo Collina) [#66481](https://github.com/nodejs/node/pull/66481) +- \[[`5c602a5824`](https://github.com/nodejs/node/commit/5c602a5824)] - **doc**: list futimes among fd APIs disabled by the permission model (Rafael Gonzaga) [#66649](https://github.com/nodejs/node/pull/66649) +- \[[`eaeb4736c8`](https://github.com/nodejs/node/commit/eaeb4736c8)] - **doc**: add Test Runner to list of built-in diagnostic channels (Vas Sudanagunta) [#66563](https://github.com/nodejs/node/pull/66563) +- \[[`0e1c99afae`](https://github.com/nodejs/node/commit/0e1c99afae)] - **doc**: document stream/iter behaviors and Node.js extensions (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`846236367d`](https://github.com/nodejs/node/commit/846236367d)] - **doc**: document URL and Uint8Array references in process.permission (Rafael Gonzaga) [#66557](https://github.com/nodejs/node/pull/66557) +- \[[`fc3b067be7`](https://github.com/nodejs/node/commit/fc3b067be7)] - **doc**: clarify http Agent keepSocketAlive behavior (Efe Karasakal) [#66252](https://github.com/nodejs/node/pull/66252) +- \[[`73a4e90ce2`](https://github.com/nodejs/node/commit/73a4e90ce2)] - **doc**: document keepAliveTimeoutBuffer server option (Efe Karasakal) [#66286](https://github.com/nodejs/node/pull/66286) +- \[[`bb816582af`](https://github.com/nodejs/node/commit/bb816582af)] - **doc**: fix request.reusedSocket timeout example (Efe Karasakal) [#66286](https://github.com/nodejs/node/pull/66286) +- \[[`82223ab4d9`](https://github.com/nodejs/node/commit/82223ab4d9)] - **doc**: clarify revert PR label policy (Antoine du Hamel) [#66529](https://github.com/nodejs/node/pull/66529) +- \[[`c6f59d4e8e`](https://github.com/nodejs/node/commit/c6f59d4e8e)] - **doc**: clarify node binary misuse after compromise (Rafael Gonzaga) [#66530](https://github.com/nodejs/node/pull/66530) +- \[[`8904178498`](https://github.com/nodejs/node/commit/8904178498)] - **doc**: document linux-x64-musl build toolchain (Issac) [#66523](https://github.com/nodejs/node/pull/66523) +- \[[`1e8247a74e`](https://github.com/nodejs/node/commit/1e8247a74e)] - **doc**: run license-builder (github-actions\[bot]) [#66517](https://github.com/nodejs/node/pull/66517) +- \[[`b2773d5e4c`](https://github.com/nodejs/node/commit/b2773d5e4c)] - **doc**: add missing return types in cluster.md (Daniel Pinto) [#66453](https://github.com/nodejs/node/pull/66453) +- \[[`1ebd6d3677`](https://github.com/nodejs/node/commit/1ebd6d3677)] - **(SEMVER-MINOR)** **doc,lib,src**: throw on missing WebAssembly or RX support (Paolo Insogna) [#66533](https://github.com/nodejs/node/pull/66533) +- \[[`c1073f31de`](https://github.com/nodejs/node/commit/c1073f31de)] - **ffi**: fix exportArrayBuffer type check (Trivikram Kamat) [#66455](https://github.com/nodejs/node/pull/66455) +- \[[`69148ee0ff`](https://github.com/nodejs/node/commit/69148ee0ff)] - **fs**: lock FileHandle on first read in pull() and pullSync() (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`700c60a1cd`](https://github.com/nodejs/node/commit/700c60a1cd)] - **fs**: serialize FileHandle writer() async writes (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`32833def1c`](https://github.com/nodejs/node/commit/32833def1c)] - **http**: reduce raw header name allocations (Roberto Bianchi) [#66488](https://github.com/nodejs/node/pull/66488) +- \[[`7f1937d2b9`](https://github.com/nodejs/node/commit/7f1937d2b9)] - **(SEMVER-MINOR)** **http**: add websocketMask() and websocketUnmask() (James M Snell) [#66335](https://github.com/nodejs/node/pull/66335) +- \[[`115731dda7`](https://github.com/nodejs/node/commit/115731dda7)] - **http2**: speed up response getHeaders (Roberto Bianchi) [#66592](https://github.com/nodejs/node/pull/66592) +- \[[`447c36cb45`](https://github.com/nodejs/node/commit/447c36cb45)] - **lib**: fix AbortSignal.any() nested composite leak (Darius) [#66617](https://github.com/nodejs/node/pull/66617) +- \[[`1722ced4b4`](https://github.com/nodejs/node/commit/1722ced4b4)] - **lib**: add --allow-fs-vfs to permission available flags (Rafael Gonzaga) [#66554](https://github.com/nodejs/node/pull/66554) +- \[[`062ece77fc`](https://github.com/nodejs/node/commit/062ece77fc)] - **lib**: fix benchmark record acknowledgement race (Filip Skokan) [#66430](https://github.com/nodejs/node/pull/66430) +- \[[`05d0b14438`](https://github.com/nodejs/node/commit/05d0b14438)] - **lib**: set exit code on failed node:bench run() (RafaelGSS) [#66534](https://github.com/nodejs/node/pull/66534) +- \[[`2cab299471`](https://github.com/nodejs/node/commit/2cab299471)] - **lib**: default node:bench warmup to 10 invocations (RafaelGSS) [#66536](https://github.com/nodejs/node/pull/66536) +- \[[`83f507845d`](https://github.com/nodejs/node/commit/83f507845d)] - **meta**: bump nodejs/node-pr-labeler to dfe5eb3 (Soul Lee) [#66606](https://github.com/nodejs/node/pull/66606) +- \[[`6fbffd5ee5`](https://github.com/nodejs/node/commit/6fbffd5ee5)] - **meta**: bump codecov/codecov-action from 7.1.0 to 7.1.1 (dependabot\[bot]) [#66448](https://github.com/nodejs/node/pull/66448) +- \[[`bd567f8bd6`](https://github.com/nodejs/node/commit/bd567f8bd6)] - **module**: fix require of imports with package map (Lazizbek Ergashev) [#66565](https://github.com/nodejs/node/pull/66565) +- \[[`c442f471a5`](https://github.com/nodejs/node/commit/c442f471a5)] - **module**: synchronously load most ES modules (Geoffrey Booth) [#62530](https://github.com/nodejs/node/pull/62530) +- \[[`51f66f0134`](https://github.com/nodejs/node/commit/51f66f0134)] - **permission**: keep explicit fs grants when dropping a covering directory (Rafael Gonzaga) [#66556](https://github.com/nodejs/node/pull/66556) +- \[[`1aa10d80e2`](https://github.com/nodejs/node/commit/1aa10d80e2)] - **process**: mark process.finalization as release candidate (Matteo Collina) [#66436](https://github.com/nodejs/node/pull/66436) +- \[[`dd4715a6ba`](https://github.com/nodejs/node/commit/dd4715a6ba)] - **querystring**: fix value decoding after encoded keys (Ved Chaudhari) [#66553](https://github.com/nodejs/node/pull/66553) +- \[[`9648a6ba8e`](https://github.com/nodejs/node/commit/9648a6ba8e)] - **quic**: reject closed stream writer writes with a TypeError (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`d6f566baf8`](https://github.com/nodejs/node/commit/d6f566baf8)] - **quic**: give each BindingData its own allocator state (Shelley Vohr) [#66411](https://github.com/nodejs/node/pull/66411) +- \[[`c3204c15bd`](https://github.com/nodejs/node/commit/c3204c15bd)] - **quic**: validate session close error codes (Christian Aurich Zanettini Martins) [#66302](https://github.com/nodejs/node/pull/66302) +- \[[`5b87354f5a`](https://github.com/nodejs/node/commit/5b87354f5a)] - **quic**: destroy stream on invalid promise body (Christian Aurich Zanettini Martins) [#66260](https://github.com/nodejs/node/pull/66260) +- \[[`9ef698c781`](https://github.com/nodejs/node/commit/9ef698c781)] - **sqlite**: validate aggregate() name and options (Guilherme Araújo) [#66463](https://github.com/nodejs/node/pull/66463) +- \[[`bbf41f8cfb`](https://github.com/nodejs/node/commit/bbf41f8cfb)] - **sqlite**: persist enableDefensive() across reopen (Trivikram Kamat) [#66404](https://github.com/nodejs/node/pull/66404) +- \[[`54867cd25e`](https://github.com/nodejs/node/commit/54867cd25e)] - **sqlite**: throw on oversized strings instead of aborting (Trivikram Kamat) [#66521](https://github.com/nodejs/node/pull/66521) +- \[[`4314cde48b`](https://github.com/nodejs/node/commit/4314cde48b)] - **src**: release uv\_fs\_t in permission WildcardIfDir (Rafael Gonzaga) [#66555](https://github.com/nodejs/node/pull/66555) +- \[[`0e58916f08`](https://github.com/nodejs/node/commit/0e58916f08)] - **src**: stop including simdjson.h from env.h (Daniel Lemire) [#66620](https://github.com/nodejs/node/pull/66620) +- \[[`06f56a55bb`](https://github.com/nodejs/node/commit/06f56a55bb)] - **src**: use native CopyArrayBufferBytes for webstream buffer copy (René) [#66400](https://github.com/nodejs/node/pull/66400) +- \[[`2e3dd5bb63`](https://github.com/nodejs/node/commit/2e3dd5bb63)] - **src**: fix config file handling (Marco Ippolito) [#66431](https://github.com/nodejs/node/pull/66431) +- \[[`cd86506bc2`](https://github.com/nodejs/node/commit/cd86506bc2)] - **src**: mark config file as stable (Marco Ippolito) [#66431](https://github.com/nodejs/node/pull/66431) +- \[[`15ff9884e4`](https://github.com/nodejs/node/commit/15ff9884e4)] - **stream**: skip idle webstreams start and watchers (Matteo Collina) [#66424](https://github.com/nodejs/node/pull/66424) +- \[[`3f75c89fb8`](https://github.com/nodejs/node/commit/3f75c89fb8)] - **stream**: add pipeToSync() failOnIncompleteClose option (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`6cecf140e7`](https://github.com/nodejs/node/commit/6cecf140e7)] - **stream**: do not fail the writer when pipeToSync() cannot close (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`16833534b6`](https://github.com/nodejs/node/commit/16833534b6)] - **stream**: fix fromSync() async input error messages (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`af41622ad8`](https://github.com/nodejs/node/commit/af41622ad8)] - **stream**: reject closed fromWritable() writes with a TypeError (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`4b83c6c38e`](https://github.com/nodejs/node/commit/4b83c6c38e)] - **stream**: accept explicit stream/iter budgets below 16384 (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`f302fbd04a`](https://github.com/nodejs/node/commit/f302fbd04a)] - **stream**: reduce per-chunk overhead in stream/iter consumers (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`7ba60dcdbe`](https://github.com/nodejs/node/commit/7ba60dcdbe)] - **stream**: keep the original error when writer.fail() throws (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`dcac51a7db`](https://github.com/nodejs/node/commit/dcac51a7db)] - **stream**: align pull() abort handling with the spec (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`995dee6b6b`](https://github.com/nodejs/node/commit/995dee6b6b)] - **stream**: honor stream/iter protocols on function objects (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`6eaf91353a`](https://github.com/nodejs/node/commit/6eaf91353a)] - **stream**: do not hold back nested async data in from() (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`69d44aedb4`](https://github.com/nodejs/node/commit/69d44aedb4)] - **stream**: bound pre-batched async values in from() (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`6b1e7c4cf1`](https://github.com/nodejs/node/commit/6b1e7c4cf1)] - **stream**: guard shareSync() against re-entrant source reads (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`8a47365425`](https://github.com/nodejs/node/commit/8a47365425)] - **stream**: split oversized share batches under drop-oldest (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`30cbc4e643`](https://github.com/nodejs/node/commit/30cbc4e643)] - **stream**: reject drop-newest backpressure in shareSync() (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`42ae08594e`](https://github.com/nodejs/node/commit/42ae08594e)] - **stream**: detach shareSync consumers on strict budget errors (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`fa49de9ba6`](https://github.com/nodejs/node/commit/fa49de9ba6)] - **stream**: keep share buffer when all consumers detach (James M Snell) [#66483](https://github.com/nodejs/node/pull/66483) +- \[[`e6662cb904`](https://github.com/nodejs/node/commit/e6662cb904)] - **stream**: fix Utf8Stream flush handling (James M Snell) [#66473](https://github.com/nodejs/node/pull/66473) +- \[[`93596b1a9e`](https://github.com/nodejs/node/commit/93596b1a9e)] - **stream**: add dump()/dumpSync() for stream/iter (Ethan Arrowood) [#65598](https://github.com/nodejs/node/pull/65598) +- \[[`4ba6ce1b0c`](https://github.com/nodejs/node/commit/4ba6ce1b0c)] - **stream**: port remaining SonicBoom tests for Utf8Stream (Matteo Collina) [#66275](https://github.com/nodejs/node/pull/66275) +- \[[`cd8b5fa5b0`](https://github.com/nodejs/node/commit/cd8b5fa5b0)] - **test**: tolerate async block count updates in test-fs-stat-bigint (Rafael Gonzaga) [#66576](https://github.com/nodejs/node/pull/66576) +- \[[`30814ce991`](https://github.com/nodejs/node/commit/30814ce991)] - **test**: replace discard loops with dump() (Ethan Arrowood) [#65598](https://github.com/nodejs/node/pull/65598) +- \[[`20441b8fc0`](https://github.com/nodejs/node/commit/20441b8fc0)] - **test**: run node-bench tools test sequentially (Filip Skokan) [#66338](https://github.com/nodejs/node/pull/66338) +- \[[`9618da6fe3`](https://github.com/nodejs/node/commit/9618da6fe3)] - **test**: remove duplicated cases in permission fs-read fixture (Rafael Gonzaga) [#66450](https://github.com/nodejs/node/pull/66450) +- \[[`c348a4cb46`](https://github.com/nodejs/node/commit/c348a4cb46)] - **test**: run instantiateStreaming-bad-imports WPT (Filip Skokan) [#66322](https://github.com/nodejs/node/pull/66322) +- \[[`7d4fda6ba7`](https://github.com/nodejs/node/commit/7d4fda6ba7)] - **test**: honor allowed WPT promise rejections (Filip Skokan) [#66322](https://github.com/nodejs/node/pull/66322) +- \[[`d4c87eb086`](https://github.com/nodejs/node/commit/d4c87eb086)] - **test**: scope Blob WPT failures to big-endian (Filip Skokan) [#66322](https://github.com/nodejs/node/pull/66322) +- \[[`7309ddf204`](https://github.com/nodejs/node/commit/7309ddf204)] - **test\_runner**: rerun failing todo tests in suites (Barak) [#66605](https://github.com/nodejs/node/pull/66605) +- \[[`da908b3072`](https://github.com/nodejs/node/commit/da908b3072)] - **test\_runner**: report load errors with --test-isolation=none (Lazizbek Ergashev) [#66550](https://github.com/nodejs/node/pull/66550) +- \[[`b18e121625`](https://github.com/nodejs/node/commit/b18e121625)] - **test\_runner**: add mock call assertions to t.assert (Guilherme Araújo) [#66476](https://github.com/nodejs/node/pull/66476) +- \[[`3d691ab75e`](https://github.com/nodejs/node/commit/3d691ab75e)] - **tools**: restore Python 3.14 for daily WPT (Filip Skokan) [#66699](https://github.com/nodejs/node/pull/66699) +- \[[`714aca1ef6`](https://github.com/nodejs/node/commit/714aca1ef6)] - **tools**: switch to PGP and SHA256 in ICU updater (Antoine du Hamel) [#66469](https://github.com/nodejs/node/pull/66469) +- \[[`fa9fca45e4`](https://github.com/nodejs/node/commit/fa9fca45e4)] - **tools**: lint thread\_local in src (Shelley Vohr) [#66411](https://github.com/nodejs/node/pull/66411) +- \[[`dbc3e97847`](https://github.com/nodejs/node/commit/dbc3e97847)] - **tools**: copy hdr\_histogram\_internal.h in update-histogram.sh (Filipe Oliveira (Redis)) [#66528](https://github.com/nodejs/node/pull/66528) +- \[[`4760c27904`](https://github.com/nodejs/node/commit/4760c27904)] - **tools**: bump the eslint group in /tools/eslint with 5 updates (dependabot\[bot]) [#66445](https://github.com/nodejs/node/pull/66445) +- \[[`63c20ee58e`](https://github.com/nodejs/node/commit/63c20ee58e)] - **vfs**: add ComposableProvider for layered mounts (Matteo Collina) [#66235](https://github.com/nodejs/node/pull/66235) +- \[[`ab057989af`](https://github.com/nodejs/node/commit/ab057989af)] - **watch**: strip underscore aliases of watch flags (Trivikram Kamat) [#66365](https://github.com/nodejs/node/pull/66365) + +Windows 64-bit Installer: https://nodejs.org/dist/v26.12.0/node-v26.12.0-x64.msi \ +Windows ARM 64-bit Installer: https://nodejs.org/dist/v26.12.0/node-v26.12.0-arm64.msi \ +Windows 64-bit Binary: https://nodejs.org/dist/v26.12.0/win-x64/node.exe \ +Windows ARM 64-bit Binary: https://nodejs.org/dist/v26.12.0/win-arm64/node.exe \ +macOS 64-bit Installer: https://nodejs.org/dist/v26.12.0/node-v26.12.0.pkg \ +macOS Apple Silicon 64-bit Binary: https://nodejs.org/dist/v26.12.0/node-v26.12.0-darwin-arm64.tar.gz \ +macOS Intel 64-bit Binary: https://nodejs.org/dist/v26.12.0/node-v26.12.0-darwin-x64.tar.gz \ +Linux 64-bit Binary: https://nodejs.org/dist/v26.12.0/node-v26.12.0-linux-x64.tar.xz \ +Linux PPC LE 64-bit Binary: https://nodejs.org/dist/v26.12.0/node-v26.12.0-linux-ppc64le.tar.xz \ +Linux s390x 64-bit Binary: https://nodejs.org/dist/v26.12.0/node-v26.12.0-linux-s390x.tar.xz \ +AIX 64-bit Binary: https://nodejs.org/dist/v26.12.0/node-v26.12.0-aix-ppc64.tar.gz \ +ARMv8 64-bit Binary: https://nodejs.org/dist/v26.12.0/node-v26.12.0-linux-arm64.tar.xz \ +Source Code: https://nodejs.org/dist/v26.12.0/node-v26.12.0.tar.gz \ +Other release files: https://nodejs.org/dist/v26.12.0/ \ +Documentation: https://nodejs.org/docs/v26.12.0/api/ + +### SHASUMS + +``` +-----BEGIN PGP SIGNED MESSAGE----- +Hash: SHA256 + +34d306d13e321942f6a48c5c0b8c4e781e864cbe052cf04386ace94f5448033d node-v26.12.0-aix-ppc64.tar.gz +bc13c50e9dd29645c3b5880ae8366c7c603fe97945ae32b4f846381fa15f5348 node-v26.12.0-arm64.msi +2a154d4a5458930e0a2d6a1ecf64eddf5a2b3e1c13636b609c2ecb042e8c4553 node-v26.12.0-darwin-arm64.tar.gz +a2e255e35347f727f29aa158c552a60140b17b6ba68719d5d6fc46c7d058aa75 node-v26.12.0-darwin-arm64.tar.xz +878ecede191c7abc1bff01d3fb81f7ed81aa1161040dba18776b8ff8593614b1 node-v26.12.0-darwin-x64.tar.gz +c04edbd7b8429acb26058dee20c915308b174b71612ebfcb7e5976d790ae47d4 node-v26.12.0-darwin-x64.tar.xz +6abd0ddeccf3ebec9abe99582710c594669ee9510a40a1d1d990133dec36a1fc node-v26.12.0-headers.tar.gz +c30445f95c9f6e44b4cc3d5a2b5644d5195fa11a1799b4a182006072d8cb68ec node-v26.12.0-headers.tar.xz +ec53c915c3fdd8786c5685abd25ae3fe9fba0692307f9811d7caaadea1bcaf03 node-v26.12.0-linux-arm64.tar.gz +fd6cc729fa4448c2ac27c3fca5606019ced63c65a15c152c8df03e0cbce7f4c5 node-v26.12.0-linux-arm64.tar.xz +f9350847d0732f8bcc1577417ce536f0d617f93f093c664d88f0b1e70f2cc4e4 node-v26.12.0-linux-ppc64le.tar.gz +e90a7c8a3b2e453d3be98782b0275f119334d1a780434470b5e912f1fbfdc57d node-v26.12.0-linux-ppc64le.tar.xz +7563e026ac03f95120201e37d6074960d06610536f45aac1fa5ed87cf74ac0d4 node-v26.12.0-linux-s390x.tar.gz +a62e7e0a7aa77893646fa076ff0444aa916e57ec3554d4cfc89f68e79f10c103 node-v26.12.0-linux-s390x.tar.xz +fdaa2cf6e44ca443a374b05db121827001aa167be25676368bab9bf36c0e48d1 node-v26.12.0-linux-x64-musl.tar.gz +4eec22381cc162f55273151bdf4f434d61216bb5abc3e7a23b8ad859ee5827c7 node-v26.12.0-linux-x64-musl.tar.xz +d9f88af72ad34f7ddf8e67289829f1698f54b6254f7d4f54b7453117ff1a3d2c node-v26.12.0-linux-x64.tar.gz +fd47865ecd6391ebb431fc815e01b9135bf83ded5cf373247e9331e196b7aded node-v26.12.0-linux-x64.tar.xz +4a52bdf4a236145267143ce2cc8c058def3485a5901af055572d5f15d026cf77 node-v26.12.0.pkg +435d4e5b5e12e14819f2598710f0f637f2094b25232fdf0cc304b7c4eadeadbb node-v26.12.0.tar.gz +ce59f9038dda0e637656fb1c36cf52c07c637922fd81d419dbba2ec129afbd35 node-v26.12.0.tar.xz +c6e88e5a0ff6afdb6dfd2c8b6dc690f14f2eafc75bf839397ff9c447fdded3a2 node-v26.12.0-win-arm64.7z +cc773b9829623e3d4fd13aef394f05010e0459273f27fb3255150f38a2577abf node-v26.12.0-win-arm64.zip +7a43d0d5b196dcb5990712a1ff403b2858366eeb0385fcaa7cbf27088dbb23d4 node-v26.12.0-win-x64.7z +50efaf01a08c520b4bbe499c09a8c5a5c370002c419c0d9da2c6815d3066a453 node-v26.12.0-win-x64.zip +dd72e3693abed70b7cb5c528dc6eaa46e628a25cd82319fb2c1ccb4462cce633 node-v26.12.0-x64.msi +141c9ed6c662e848aecdf2f3540ad5a9a7d97d51bca300e9e1a9c308f4e1cf93 win-arm64/node.exe +45084cbfc0170d7a30b29ab1eeeb2b0d770995ade0a13a4cc82cf31189f95c9f win-arm64/node.lib +176fc7eda8c6ae75f073200fc2d2cb2d03a4b4ed2d7822c76750c00d0c7c99eb win-arm64/node_pdb.7z +32ef09e9e7b5829bba3190b64ee603555ea91c85bab75fa8084e0fd7130eb7ab win-arm64/node_pdb.zip +1a14457b043fe82fd2fc027959595e91d138a8185c7ca6c02c15c16632b51aa4 win-x64/node.exe +caad0090dc3add94c06abd01e395e8ec0f1586c10071bda1f99480445d695f6f win-x64/node.lib +598c8b6c1ae03a3f24f4ff8d395313e25e3c386efd1c4cb00d45efd9ca57cf1a win-x64/node_pdb.7z +63043620be735731e016e35189dff6d80dc6e1b534bcbf4a79814f8b9f6b983a win-x64/node_pdb.zip +-----BEGIN PGP SIGNATURE----- + +iQIzBAEBCAAdFiEEyC+jrhy+3Gvka5NgxDzsRcF6uTwFAmrPnfwACgkQxDzsRcF6 +uTxseBAAurwha0uv70sp0lvJVcxitj+7zhb5Fa1jK1/njAlKRc2N9ZAwji2tdhZC +GwAtNmhd9Z+hwWrpi/8YEQy3kMfi3QpAVAm7nxzD7CBiFEeURP21VADpwKDtJp1R +fue5K7sGli2M07B7/8sgndj5ddGYcRqfWds0LWKbdp3Ws+mlnh9/wF5zUtYt1tne +yur2IZD+qEFqVqnJT54lu4WCGrllUgbH5t1nQP+oIRrSJDgj6VfLKpAHTBT0Qu1n +osZvnktriYkYp7v86DXh/n8/2G8H7AaZv44lNmMZ90UiCSSu7bheyzqCL4p2COWD +52uDac6oM7/zZJ0JD8yJrkL8jKFfIqapwkcUkXyBjR6MN2oyn/KzKUFOPkKh7NU4 +Uji0AYs4BFsRWfzVD7WH5AIDiES2Aw44O3sAWViQnUzAuIT9TtOxYwpujj/aMXa4 +7jtGsxFutRqY327+RLfPRGjXoLvF3Qg8GEyNLMBezb9LnTqNf3mDkO8qbobqXhzu +JswodLLEQdwMwvFOr2m+HIqWwM5aACBElFnsTJWUtS77xOjjNqUSCgpPLb0zDgMJ +OiGqyyFjM3MU7KgTStvnLyTJ8+Xr39lNUQVxWvS/VI+NQ7OsXzu6wYAin1DyUJgN +UmnEdFrLhtgagqGZQGoJ933D9RwNIdQoyqLePsEWVL3GgOxHGDU= +=9EZ3 +-----END PGP SIGNATURE----- +```