Accéder au contenu

Node.js 26.12.0 (Current)

Richard Lau

2026-10-14, Version 26.12.0 (Current), @richardlau

Notable Changes

  • [1ebd6d3677] - (SEMVER-MINOR) doc,lib,src: throw on missing WebAssembly or RX support (Paolo Insogna) #66533
  • [7f1937d2b9] - (SEMVER-MINOR) http: add websocketMask() and websocketUnmask() (James M Snell) #66335

Commits

  • [30e76bb16a] - benchmark: fix input passed to subtle.digest in webcrypto-digest (Rafael Gonzaga) #66608
  • [adef72223a] - benchmark: fix buffer option in buffer read/write benchmarks (Rafael Gonzaga) #66604
  • [2f498f08fe] - benchmark: add util.parseArgs benchmark (Rafael Gonzaga) #66599
  • [4ce8412e18] - benchmark: fix url-searchparams-sort to sort a fresh list (RafaelGSS) #66535
  • [493bd6c66e] - benchmark,tools: fix napi benchmarks on GHA (Nigro Simone) #66423
  • [e4515552d6] - build: run QUIC CI for V8 changes (Yuya Inoue) #66602
  • [a888e51062] - build: support Python 3.15 (Mike McCready) #65750
  • [2afab9a63b] - build: do not include shared gtest in node link path (Antoine du Hamel) #66626
  • [f88c2f8ec6] - build,test: enable temporal support on no-ICU and system-ICU builds (Antoine du Hamel) #66697
  • [5fd03e6fdf] - child_process: propagate config-file permission flags to children (Rafael Gonzaga) #66559
  • [f771134b07] - crypto: isolate provider EC PKCS8 encoding (Filip Skokan) #66413
  • [4e00a293db] - crypto: remove key export and metadata locks (Filip Skokan) #66413
  • [bcd8018775] - crypto: remove verify setup key locking (Filip Skokan) #66413
  • [883250fee2] - crypto: remove KEM key locking (Filip Skokan) #66413
  • [9d98805071] - crypto: remove RSA-OAEP key locking (Filip Skokan) #66413
  • [d6293e7bb1] - crypto: skip secret key mutex allocation (Filip Skokan) #66413
  • [8d8af8003e] - crypto: keep the root cert store per Environment (Shelley Vohr) #66411
  • [c6f0614785] - crypto: remove select Web Crypto warnings (Filip Skokan) #66312
  • [e5360b5a08] - deps: update googletest to 988ea2c1798de7779f656df2281dd36d6039a17a (Node.js GitHub Bot) #66652
  • [7eb230a2c1] - deps: update acorn to 8.19.0 (Node.js GitHub Bot) #66655
  • [af946ba8f3] - deps: update sqlite to 3.54.0 (Node.js GitHub Bot) #66663
  • [007872a85d] - deps: V8: cherry-pick 8d14d49c4040 (Antoine du Hamel) #66627
  • [f44aec4966] - deps: update simdjson to 5.0.3 (Daniel Lemire) #66620
  • [1a33e914e8] - deps: V8: cherry-pick 7d5eb1df2a72 (inoway46) #66566
  • [3294d51e5a] - diagnostics_channel: fix default callback context (Matteo Collina) #66481
  • [5c602a5824] - doc: list futimes among fd APIs disabled by the permission model (Rafael Gonzaga) #66649
  • [eaeb4736c8] - doc: add Test Runner to list of built-in diagnostic channels (Vas Sudanagunta) #66563
  • [0e1c99afae] - doc: document stream/iter behaviors and Node.js extensions (James M Snell) #66483
  • [846236367d] - doc: document URL and Uint8Array references in process.permission (Rafael Gonzaga) #66557
  • [fc3b067be7] - doc: clarify http Agent keepSocketAlive behavior (Efe Karasakal) #66252
  • [73a4e90ce2] - doc: document keepAliveTimeoutBuffer server option (Efe Karasakal) #66286
  • [bb816582af] - doc: fix request.reusedSocket timeout example (Efe Karasakal) #66286
  • [82223ab4d9] - doc: clarify revert PR label policy (Antoine du Hamel) #66529
  • [c6f59d4e8e] - doc: clarify node binary misuse after compromise (Rafael Gonzaga) #66530
  • [8904178498] - doc: document linux-x64-musl build toolchain (Issac) #66523
  • [1e8247a74e] - doc: run license-builder (github-actions[bot]) #66517
  • [b2773d5e4c] - doc: add missing return types in cluster.md (Daniel Pinto) #66453
  • [1ebd6d3677] - (SEMVER-MINOR) doc,lib,src: throw on missing WebAssembly or RX support (Paolo Insogna) #66533
  • [c1073f31de] - ffi: fix exportArrayBuffer type check (Trivikram Kamat) #66455
  • [69148ee0ff] - fs: lock FileHandle on first read in pull() and pullSync() (James M Snell) #66483
  • [700c60a1cd] - fs: serialize FileHandle writer() async writes (James M Snell) #66483
  • [32833def1c] - http: reduce raw header name allocations (Roberto Bianchi) #66488
  • [7f1937d2b9] - (SEMVER-MINOR) http: add websocketMask() and websocketUnmask() (James M Snell) #66335
  • [115731dda7] - http2: speed up response getHeaders (Roberto Bianchi) #66592
  • [447c36cb45] - lib: fix AbortSignal.any() nested composite leak (Darius) #66617
  • [1722ced4b4] - lib: add --allow-fs-vfs to permission available flags (Rafael Gonzaga) #66554
  • [062ece77fc] - lib: fix benchmark record acknowledgement race (Filip Skokan) #66430
  • [05d0b14438] - lib: set exit code on failed node:bench run() (RafaelGSS) #66534
  • [2cab299471] - lib: default node:bench warmup to 10 invocations (RafaelGSS) #66536
  • [83f507845d] - meta: bump nodejs/node-pr-labeler to dfe5eb3 (Soul Lee) #66606
  • [6fbffd5ee5] - meta: bump codecov/codecov-action from 7.1.0 to 7.1.1 (dependabot[bot]) #66448
  • [bd567f8bd6] - module: fix require of imports with package map (Lazizbek Ergashev) #66565
  • [c442f471a5] - module: synchronously load most ES modules (Geoffrey Booth) #62530
  • [51f66f0134] - permission: keep explicit fs grants when dropping a covering directory (Rafael Gonzaga) #66556
  • [1aa10d80e2] - process: mark process.finalization as release candidate (Matteo Collina) #66436
  • [dd4715a6ba] - querystring: fix value decoding after encoded keys (Ved Chaudhari) #66553
  • [9648a6ba8e] - quic: reject closed stream writer writes with a TypeError (James M Snell) #66483
  • [d6f566baf8] - quic: give each BindingData its own allocator state (Shelley Vohr) #66411
  • [c3204c15bd] - quic: validate session close error codes (Christian Aurich Zanettini Martins) #66302
  • [5b87354f5a] - quic: destroy stream on invalid promise body (Christian Aurich Zanettini Martins) #66260
  • [9ef698c781] - sqlite: validate aggregate() name and options (Guilherme Araújo) #66463
  • [bbf41f8cfb] - sqlite: persist enableDefensive() across reopen (Trivikram Kamat) #66404
  • [54867cd25e] - sqlite: throw on oversized strings instead of aborting (Trivikram Kamat) #66521
  • [4314cde48b] - src: release uv_fs_t in permission WildcardIfDir (Rafael Gonzaga) #66555
  • [0e58916f08] - src: stop including simdjson.h from env.h (Daniel Lemire) #66620
  • [06f56a55bb] - src: use native CopyArrayBufferBytes for webstream buffer copy (René) #66400
  • [2e3dd5bb63] - src: fix config file handling (Marco Ippolito) #66431
  • [cd86506bc2] - src: mark config file as stable (Marco Ippolito) #66431
  • [15ff9884e4] - stream: skip idle webstreams start and watchers (Matteo Collina) #66424
  • [3f75c89fb8] - stream: add pipeToSync() failOnIncompleteClose option (James M Snell) #66483
  • [6cecf140e7] - stream: do not fail the writer when pipeToSync() cannot close (James M Snell) #66483
  • [16833534b6] - stream: fix fromSync() async input error messages (James M Snell) #66483
  • [af41622ad8] - stream: reject closed fromWritable() writes with a TypeError (James M Snell) #66483
  • [4b83c6c38e] - stream: accept explicit stream/iter budgets below 16384 (James M Snell) #66483
  • [f302fbd04a] - stream: reduce per-chunk overhead in stream/iter consumers (James M Snell) #66483
  • [7ba60dcdbe] - stream: keep the original error when writer.fail() throws (James M Snell) #66483
  • [dcac51a7db] - stream: align pull() abort handling with the spec (James M Snell) #66483
  • [995dee6b6b] - stream: honor stream/iter protocols on function objects (James M Snell) #66483
  • [6eaf91353a] - stream: do not hold back nested async data in from() (James M Snell) #66483
  • [69d44aedb4] - stream: bound pre-batched async values in from() (James M Snell) #66483
  • [6b1e7c4cf1] - stream: guard shareSync() against re-entrant source reads (James M Snell) #66483
  • [8a47365425] - stream: split oversized share batches under drop-oldest (James M Snell) #66483
  • [30cbc4e643] - stream: reject drop-newest backpressure in shareSync() (James M Snell) #66483
  • [42ae08594e] - stream: detach shareSync consumers on strict budget errors (James M Snell) #66483
  • [fa49de9ba6] - stream: keep share buffer when all consumers detach (James M Snell) #66483
  • [e6662cb904] - stream: fix Utf8Stream flush handling (James M Snell) #66473
  • [93596b1a9e] - stream: add dump()/dumpSync() for stream/iter (Ethan Arrowood) #65598
  • [4ba6ce1b0c] - stream: port remaining SonicBoom tests for Utf8Stream (Matteo Collina) #66275
  • [cd8b5fa5b0] - test: tolerate async block count updates in test-fs-stat-bigint (Rafael Gonzaga) #66576
  • [30814ce991] - test: replace discard loops with dump() (Ethan Arrowood) #65598
  • [20441b8fc0] - test: run node-bench tools test sequentially (Filip Skokan) #66338
  • [9618da6fe3] - test: remove duplicated cases in permission fs-read fixture (Rafael Gonzaga) #66450
  • [c348a4cb46] - test: run instantiateStreaming-bad-imports WPT (Filip Skokan) #66322
  • [7d4fda6ba7] - test: honor allowed WPT promise rejections (Filip Skokan) #66322
  • [d4c87eb086] - test: scope Blob WPT failures to big-endian (Filip Skokan) #66322
  • [7309ddf204] - test_runner: rerun failing todo tests in suites (Barak) #66605
  • [da908b3072] - test_runner: report load errors with --test-isolation=none (Lazizbek Ergashev) #66550
  • [b18e121625] - test_runner: add mock call assertions to t.assert (Guilherme Araújo) #66476
  • [3d691ab75e] - tools: restore Python 3.14 for daily WPT (Filip Skokan) #66699
  • [714aca1ef6] - tools: switch to PGP and SHA256 in ICU updater (Antoine du Hamel) #66469
  • [fa9fca45e4] - tools: lint thread_local in src (Shelley Vohr) #66411
  • [dbc3e97847] - tools: copy hdr_histogram_internal.h in update-histogram.sh (Filipe Oliveira (Redis)) #66528
  • [4760c27904] - tools: bump the eslint group in /tools/eslint with 5 updates (dependabot[bot]) #66445
  • [63c20ee58e] - vfs: add ComposableProvider for layered mounts (Matteo Collina) #66235
  • [ab057989af] - watch: strip underscore aliases of watch flags (Trivikram Kamat) #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-----