Back to Node

Node.js 26 ChangeLog

doc/changelogs/CHANGELOG_V26.md

26.3.0145.6 KB
Original Source

Node.js 26 ChangeLog

<!--lint disable maximum-line-length no-literal-urls prohibited-strings--> <table> <tr> <th>Current</th> </tr> <tr> <td> <a href="#26.3.0">26.3.0</a>

<a href="#26.2.0">26.2.0</a>

<a href="#26.1.0">26.1.0</a>

<a href="#26.0.0">26.0.0</a>

</td> </tr> </table>

<a id="26.3.0"></a>

2026-06-01, Version 26.3.0 (Current), @aduh95

Notable Changes

Potential changes to macOS Universal Binary availability

With Apple and its ecosystem progressively dropping support for Intel-based architectures, it has become apparent that the Node.js project may not be able to maintain the universal binaries we currently distribute for the full lifetime of Node.js 26. This change serves to communicate that risk. At present, our intention remains to continue shipping universal binaries supporting both Apple Silicon and Intel-based Macs for as long as practical.

Contributed by Antoine du Hamel in #63055.

Other notable changes

  • [a2a4b33dd8] - (SEMVER-MINOR) buffer: increase Buffer.poolSize default to 64 KiB (Matteo Collina) #63597
  • [051a2152f7] - crypto: update root certificates to NSS 3.123.1 (Node.js GitHub Bot) #63527
  • [49462eca37] - (SEMVER-MINOR) http: add httpValidation option to configure header value validation (RajeshKumar11) #61597
  • [97b7ab19bd] - (SEMVER-MINOR) inspector: expose precise coverage start to JS runtime (sangwook) #63079
  • [cfb80a2103] - (SEMVER-MINOR) lib,permission: add permission.drop (Rafael Gonzaga) #62672

Commits

  • [a2a4b33dd8] - (SEMVER-MINOR) buffer: increase Buffer.poolSize default to 64 KiB (Matteo Collina) #63597
  • [0eff3e23b9] - build: def NODE_USE_NODE_CODE_CACHE only used in node_mksnapshot (Chengzhong Wu) #63588
  • [447ab2d252] - build,win: fix VS2022 arm64 PGO build (Stefan Stojanovic) #63413
  • [86032758e4] - build,win: replace LTCG with Thin LTO for releases (Stefan Stojanovic) #63114
  • [5f4d794052] - build,win: add Rust toolchain automated configuration Windows (Mike McCready) #63381
  • [051a2152f7] - crypto: update root certificates to NSS 3.123.1 (Node.js GitHub Bot) #63527
  • [d0f65e3579] - crypto: coerce -0 keylen to +0 in pbkdf2 and scrypt (Jordan Harband) #63531
  • [e3ddb326c9] - crypto: harden WebCrypto against prototype pollution (Filip Skokan) #63363
  • [e04cd17dc0] - crypto: pass CryptoKey handles to KDF jobs (Filip Skokan) #63363
  • [64ba74d847] - crypto: remove async from WebCrypto methods (Filip Skokan) #63363
  • [bd230418b4] - crypto: add WebCrypto CryptoJob mode (Filip Skokan) #63363
  • [1a4090a83d] - debugger: surface inspector failures in probe mode (Joyee Cheung) #63437
  • [dbc78ff825] - debugger,test: deflake resume failure test and add debug logs (Joyee Cheung) #63524
  • [4da442f432] - deps: upgrade npm to 11.16.0 (npm team) #63602
  • [63372cfa87] - deps: SQLite: cherry-pick b869ed6b067d623cb1383549f2a18aa35508385d (Junsu Han) #63525
  • [e286fa170d] - deps: upgrade npm to 11.15.0 (npm team) #63463
  • [de996437a5] - doc: downgrade macOS x64 to Tier 2 (Antoine du Hamel) #63055
  • [22ac78750c] - doc: remove duplicated sentences in large-pull-requests.md (Joyee Cheung) #63650
  • [532f7f2085] - doc: update git node land instructions for security releases (Antoine du Hamel) #63586
  • [c61f90dfb9] - doc: drop --experimental from --permission (Rafael Gonzaga) #63583
  • [fd69d7b16a] - doc: improve fs.StatFs properties descriptions (aymanxdev) #62578
  • [693257782c] - doc: generate llms.txt (Guilherme Araújo) #62027
  • [55a57beb26] - doc: explicitly ask for reproducible in JS (Rafael Gonzaga) #63479
  • [4895c2babc] - doc: fix URL postMessage example in worker_threads (Kit Dallege) #62203
  • [0355c36e37] - doc: clarify filter option of sqlite.database.applyChangeset (Antoine du Hamel) #63515
  • [c85ee22df6] - doc: fix double spaces in ERR_TLS_INVALID_PROTOCOL_METHOD (Daijiro Wachi) #63511
  • [62947192f6] - doc: move hyperlinks outside of text blocks (Aviv Keller) #63493
  • [9849690a1d] - doc: edit Rust toolchain general install instructions (Antoine du Hamel) #63488
  • [885d2462e9] - doc: fix double space in modules.md (Daijiro Wachi) #63512
  • [42fbb48bc6] - doc: fix "options" to "option" in tls.createServer (Daijiro Wachi) #63453
  • [05a7b0a301] - doc: add Rust toolchain general install instructions (Mike McCready) #63426
  • [e13dfd7ed0] - doc: update toolchain for official releases (Richard Lau) #63441
  • [82306881cc] - doc: fix typo in deprecations (Daijiro Wachi) #63434
  • [eeb77d217c] - doc,lib: align WebCrypto names with spec (Filip Skokan) #63518
  • [679e13c57f] - errors: handle V8 warnings in DisallowJavascriptExecutionScope (Divyanshu Sharma) #63491
  • [7f41f5d803] - ffi: validate 'void' as parameter type in getFunction and getFunctions (Anshika Jain) #63504
  • [972cd227cb] - ffi: remove function signature property aliases (René) #63482
  • [5d7805e433] - ffi: move DynamicLibrary disposer to native layer (René) #63459
  • [5a0b32dc24] - gyp: update deps gypfiles (Nad Alaba) #63117
  • [49462eca37] - (SEMVER-MINOR) http: add httpValidation option to configure header value validation (RajeshKumar11) #61597
  • [e3c6629ee3] - http2: emit session close before stream close (Matteo Collina) #63414
  • [97b7ab19bd] - (SEMVER-MINOR) inspector: expose precise coverage start to JS runtime (sangwook) #63079
  • [6bef10e7b7] - lib: cleanup stateless diffiehellman key handling (Filip Skokan) #62645
  • [fdc0b3d49c] - lib: define kEnumerableProperty atomically (Antoine du Hamel) #63609
  • [99baf27aeb] - lib: fix typos in esm loader comments (RonGamzu) #63465
  • [cfb80a2103] - (SEMVER-MINOR) lib,permission: add permission.drop (Rafael Gonzaga) #62672
  • [8e75efb9bc] - meta: flip mcollina emails in .mailmap (Matteo Collina) #63621
  • [a4ae97045f] - meta: label "source maps" PRs (Chengzhong Wu) #63591
  • [3455a48ae1] - meta: add vfs subsystem label (René) #62331
  • [01bfcdfc20] - meta: skip scheduled workflows on forks (Jamie Magee) #63565
  • [bc4c457eae] - meta: add additional gitignore entries (James M Snell) #63267
  • [e1d65d9509] - module: load ESM helpers eagerly in the snapshot (Joyee Cheung) #63550
  • [6a97b0932a] - quic: add proper error codes & messages for QUIC failures (Tim Perry) #63198
  • [5989f4a6e1] - quic: support hostname verification (James M Snell) #63483
  • [b4d30e7a78] - quic: add stream idle timeout (James M Snell) #63483
  • [8a1017f774] - quic: add block list support for endpoints (James M Snell) #63483
  • [5a3ab93c49] - quic: improve peer cert verification (James M Snell) #63483
  • [9701a82a78] - quic: handle h3 max header size option (James M Snell) #63483
  • [71788a2048] - quic: add rate limiting docs (James M Snell) #63483
  • [309bd49906] - quic: cache timestamp for address lru cache (James M Snell) #63483
  • [2ce5588d51] - quic: add session creation rate limiting (James M Snell) #63483
  • [98808baed1] - quic: refine rate limiting (James M Snell) #63483
  • [75a4176b32] - quic: flip preferred address policy default to 'ignore' (James M Snell) #63483
  • [8b6b03d60c] - quic: add doc note about certificate size limitations (James M Snell) #63483
  • [30eff873e0] - quic: add applicationOptions to session (James M Snell) #63267
  • [4303daa43c] - quic: add getters for local and remote transport parameters (James M Snell) #63267
  • [e1b1bb5465] - quic: improve recv coalescing test sizes (James M Snell) #63267
  • [25a416f457] - quic: add initial RTT option to session options (James M Snell) #63267
  • [22e91c357f] - quic: enable recvmmsg batching in Endpoint (James M Snell) #63267
  • [c96d8a9d9b] - quic: improve stream header collection performance (James M Snell) #63267
  • [409460f2ce] - quic: add reusePort option to QuicEndpoint (James M Snell) #63267
  • [9a2afffec9] - quic: coalesce received data into fewer buffers (James M Snell) #63267
  • [f9a6a2f558] - quic: apply multiple additional minor improvements (James M Snell) #63267
  • [ea5f3724ee] - quic: fix tests that are missing serverEndpoint close (James M Snell) #63267
  • [6cffc931fc] - quic: fixup some v8:: qualifiers (James M Snell) #63267
  • [9bc875e522] - quic: fix premature unref of endpoint when listening (James M Snell) #63267
  • [f940d6b1be] - quic: fixup UAFs in bindingdata, streams, and app (James M Snell) #63267
  • [fd00e0acb0] - quic: fix UAF in Application::OnTimeout() (James M Snell) #63267
  • [378dbf00e9] - quic: improve the quic js structure (James M Snell) #63267
  • [0045dc30b6] - quic: improve internal structure of QuicStream (James M Snell) #63267
  • [5e38946b26] - quic: add aliased struct arenas (James M Snell) #63267
  • [95430437a0] - quic: add handshake timeout and default connection limits (James M Snell) #63267
  • [5622701429] - quic: implement rate limiting for version nego and immediate close (James M Snell) #63267
  • [b171f391cd] - quic: fixup linting issue after other changes (James M Snell) #63267
  • [24e9f4f177] - quic: fix crash in early handshake failure (James M Snell) #63267
  • [5025e85d0a] - quic: eliminate per-received datagram allocation (James M Snell) #63267
  • [aec1e17ec5] - quic: cache the timestamp on send and receive (James M Snell) #63267
  • [9560084560] - quic: add support for future ECN marking (James M Snell) #63267
  • [2b3ff8ada2] - quic: improve batching of packet sending (James M Snell) #63267
  • [fe3639a4d6] - quic: improve backend quic packet processing (James M Snell) #63267
  • [f043013d9a] - src: remove TOCTOU race condition when encoding SAB-backed Buffers (Antoine du Hamel) #63517
  • [343958224d] - src: skip duplicate UTF-8 validation in TextDecoder fatal path (Mert Can Altin) #63231
  • [2906fa833d] - src: dispatch ToV8Value(string_view) via StringBytes::Encode (Mert Can Altin) #63370
  • [860f9d8d4b] - src: fix ContextifyContext property definer interception result (Chengzhong Wu) #63549
  • [fcccffcbe6] - src: fix crash when reading length on Storage.prototype (Mohamed Sayed) #63529
  • [55f65f9fb6] - src: improve token return value check (James M Snell) #63483
  • [7a36ca46cd] - src: expose node::RegisterContext to make a node managed context (Chengzhong Wu) #62322
  • [9bda92963c] - src,sqlite: only pass xFilter when user provided a callback (Antoine du Hamel) #63516
  • [563db50f38] - stream: switch to internal sleep binding (Antoine du Hamel) #63611
  • [a6e2322ee6] - stream: use data listener for compose forwarding (Trivikram Kamat) #63593
  • [7198895c6b] - stream: serialize concurrent share consumer reads (Trivikram Kamat) #63478
  • [70ba8be1d7] - stream: fix lint error (Antoine du Hamel) #63598
  • [1608d905a7] - stream: reject pending reads on iterator throw (Trivikram Kamat) #63555
  • [dc12b730d8] - stream: wait for push writer end fallback to drain (Trivikram Kamat) #63503
  • [4f40a85a1a] - stream: flush each fused stateless transform (Trivikram Kamat) #63468
  • [526e0fc427] - stream: avoid duplicate writes in toWritable (Trivikram Kamat) #63360
  • [0008d01f9c] - stream: propagate abort reason in share and broadcast (Trivikram Kamat) #63358
  • [217338e18b] - stream: fix Writable.toWeb() hang on synchronous drain (sangwook) #61197
  • [381f4b1b10] - stream: disallow writing string chunk with 'buffer' encoding (René) #63062
  • [cbee0de1cb] - stream: align Readable.toWeb termination with eos (ikeyan) #62394
  • [be91f0a927] - test: shorten path in net pipe connect errors (Matteo Collina) #63405
  • [83cada8bcc] - test: deflake test-debugger-probe-timeout (Joyee Cheung) #63547
  • [3560b96a10] - test: deflake test-webcrypto-crypto-job-mode (Filip Skokan) #63543
  • [0c9c52373a] - test: remove test-node-output-v8-warning (Joyee Cheung) #63469
  • [12052dbe14] - test: cover webcrypto prototype pollution systematically (Filip Skokan) #63520
  • [8c479f274a] - test: update test426-fixtures to 9b9e225b5a63139e9a95cdd1bf874a8f0b9d131 (Node.js GitHub Bot) #63373
  • [2ca32a5ee8] - test: update WPT for url to e4a4672e9e (Node.js GitHub Bot) #63372
  • [1bf875bd21] - test: deflake async-hooks statwatcher test (Trivikram Kamat) #63396
  • [97dbfa09f7] - test: avoid test_runner watch restart in spec snapshot (Trivikram Kamat) #63392
  • [8b038d7b33] - test: reduce watch mode restart flakiness (Trivikram Kamat) #63390
  • [f504c01d66] - test: get rid of unnecessary AbortController instanciations (Antoine du Hamel) #63489
  • [170585ff90] - test: isolate rerun-failures state file under tmpdir (Chemi Atlow) #63449
  • [935468a49e] - test: fixup quic tests (James M Snell) #63267
  • [fbbdfdcfc7] - test: wait for ok before initial break after restart (Yuya Inoue) #62807
  • [db808ad77d] - test: unskip snapshot reproducibility test (Joyee Cheung) #63307
  • [259d8b3dce] - test: update WPT for WebCryptoAPI to 97bbc7247a (Node.js GitHub Bot) #63417
  • [d56c6cd708] - test_runner: ignore erased TS lines in coverage (Matteo Collina) #63510
  • [16015f1565] - test_runner: fix suite diagnostic chanel end (Moshe Atlow) #63533
  • [003b9ccbe9] - test_runner: dont buffer unordered events in process isolation mode (Moshe Atlow) #63432
  • [fdc4b5aed4] - test_runner: fix --test-rerun-failures swallowing failures on retry (Chemi Atlow) #63431
  • [6a0bd2f329] - test_runner: add parentId to test events with testId (Moshe Atlow) #63435
  • [a646c93254] - test_runner: show replayed-from-attempt hint in spec reporter (Moshe Atlow) #63429
  • [b1fa59cbb6] - test_runner: preserve run duration when using test-rerun (Moshe Atlow) #63429
  • [6ac7ff24ac] - tools: refine v8.nix source definition (Antoine du Hamel) #63625
  • [59c01b959f] - tools: add lint rule for aborted AbortController (Trivikram Kamat) #63541
  • [2ab034f6f9] - tools: bump @node-core/doc-kit in /tools/doc in the doc group (dependabot[bot]) #63494
  • [a6af903e0a] - tools: bump brace-expansion from 5.0.5 to 5.0.6 in /tools/eslint (dependabot[bot]) #63415
  • [215cd543dd] - tools: skip commit-lint on backport pull requests (Marco) #63378
  • [0479f28e95] - tools: fix skip of test-internet on forks (Antoine du Hamel) #63492
  • [69dfadf785] - tools: mock some Python utils in v8.nix to reuse builds (Antoine du Hamel) #63454
  • [7b3e222cda] - util: remove unused functions (Antoine du Hamel) #63612
  • [5a1f67c27b] - util: create hex style cache and fast path (Guilherme Araújo) #62999

<a id="26.2.0"></a>

2026-05-20, Version 26.2.0 (Current), @aduh95

Notable Changes

  • [189d43a193] - doc: mark stream.compose stable (Matteo Collina) #62562
  • [f858c6140e] - (SEMVER-MINOR) fs: add Temporal.Instant support to Stats and BigIntStats (Livia Medeiros) #60789
  • [0cbb3895df] - (SEMVER-MINOR) http: add writeInformation to send arbitrary 1xx status codes (Tim Perry) #63155

Commits

  • [9a394bab84] - benchmark: respect stream/iter broadcast backpressure (Trivikram Kamat) #63314
  • [ad98b4620b] - crypto: align verifyOneShot accepted types (Anshika Jain) #63280
  • [ba0736a847] - crypto: wire ML-DSA and ML-KEM for use when using BoringSSL (Filip Skokan) #63255
  • [5573a6a4a8] - crypto: wire ChaCha20-Poly1305 in Web Cryptography when using BoringSSL (Filip Skokan) #63255
  • [7dc563b8d6] - crypto: wire AES-KW in Web Cryptography when using BoringSSL (Filip Skokan) #63255
  • [b55e2b1f4d] - crypto: improve system certificate enumeration logic on macOS (Robo) #62576
  • [fd509a755a] - crypto: harden CryptoKey algorithm slots (Filip Skokan) #63111
  • [8657df39e7] - crypto: harden KeyObject internal slots (Filip Skokan) #63111
  • [729274e046] - crypto: reject invalid raw key imports (Filip Skokan) #63134
  • [8fc9cb9c01] - crypto: improve accuracy of SubtleCrypto.supports (Filip Skokan) #63104
  • [288065cb3f] - crypto: optimize normalizeAlgorithm dispatch hot path (Filip Skokan) #62756
  • [ecf3797d09] - debugger: disambiguate probe location binding (Joyee Cheung) #63286
  • [bdc57135fd] - debugger: add --help to node inspect and improve docs (Joyee Cheung) #63201
  • [2a6e6058e9] - deps: update undici to 8.3.0 (Node.js GitHub Bot) #63377
  • [327b927271] - deps: update corepack to 0.35.0 (Node.js GitHub Bot) #63375
  • [5828fadf52] - deps: update sqlite to 3.53.1 (Node.js GitHub Bot) #63217
  • [fe127a999b] - deps: update simdjson to 4.6.4 (Node.js GitHub Bot) #62811
  • [a34c4ea159] - deps: V8: cherry-pick 435a2cdf664c (Matthias Liedtke) #63136
  • [ad91efcc43] - deps: cherry-pick libuv/libuv@a43e543 (Ali Hassan) #63222
  • [5ea6c3ee7e] - deps: add missing static linking targets for libffi (Paolo Insogna) #63168
  • [c1f6ba22b4] - deps: update ngtcp2 to 1.22.1 (Node.js GitHub Bot) #62812
  • [7b8767ef76] - doc: remove unsupported template type from v8.md (René) #63410
  • [b2ec1880b1] - doc: fix promise nomenclature in stream_iter.md (Antoine du Hamel) #63406
  • [cf6cbbd39d] - doc: fix article usage before vowel-sound acronyms (joao-oliveira-softtor) #62696
  • [da05065d98] - doc: remove the bi-monthly contributor spotlight section (Claudio Wunder) #62734
  • [c31f320fba] - doc: update http2's push and trailers events with rawHeaders param (YuSheng Chen) #63259
  • [f0d008439b] - doc: add Rust toolchain manual installation instructions Windows (Mike McCready) #63367
  • [68b1220fbd] - doc: remove inactive members from Triagers list (Antoine du Hamel) #63329
  • [189d43a193] - doc: mark stream.compose stable (Matteo Collina) #62562
  • [c4fb894039] - doc: fix CHANGELOG (Richard Lau) #63292
  • [9f319a77e4] - doc: reference correct function in Module docs (Robin Malfait) #63247
  • [2c13acc88e] - doc: replace Visual Studio 2022 Evergreen version reference with 17.14 (Mike McCready) #63211
  • [7e42c336c9] - doc: recommend explicitly Tier 1 or 2 for production applications (Mike McCready) #63187
  • [d99e0bb6d5] - doc: document Temporal configure flags in BUILDING.md (ChrisJr404) #63248
  • [c0ea77b305] - doc: run license-builder (github-actions[bot]) #63232
  • [8265aba0f4] - doc: add large pull requests contributing guide (Matteo Collina) #62829
  • [be241bacc8] - doc: remove unnecessary <!-- eslint- magic comments (Antoine du Hamel) #63200
  • [e0b1f092c3] - doc: fix inconsistencies in CJS code snippets (Antoine du Hamel) #63199
  • [a3feb15871] - doc: clarify SEA platform support excludes darwin-x64 (MJSHANG) #63181
  • [cafd7667fc] - doc: improve quic documentation (James M Snell) #63157
  • [3c784edb6f] - doc: update release steps when post-release fails (Rafael Gonzaga) #63131
  • [9de954e9be] - doc: fix deprecation list in 26.0.0 changelog (Antoine du Hamel) #63147
  • [20c553e456] - doc: add Hmac.digest() documentation-only deprecation (DEP0206) (Anshika Jain) #63121
  • [3494eae2c8] - doc: document the latest-vX.x schema (Marco Ippolito) #63033
  • [c02413d29d] - doc: remove list of versions in BUILDING.md (Antoine du Hamel) #63113
  • [53f9a902a1] - doc,sqlite: document entryPoint argument for loadExtension (Edy Silva) #63152
  • [f858c6140e] - (SEMVER-MINOR) fs: add Temporal.Instant support to Stats and BigIntStats (Livia Medeiros) #60789
  • [b2ba62ca0e] - fs: make Date properties on Stats enumerable (LiviaMedeiros) #63328
  • [0cbb3895df] - (SEMVER-MINOR) http: add writeInformation to send arbitrary 1xx status codes (Tim Perry) #63155
  • [f712e6856e] - http2: validate non-link headers in writeEarlyHints (Matteo Collina) #62017
  • [3acadae676] - lib: fix typo idenity => identity (Daijiro Wachi) #63112
  • [460329e886] - lib: fixes validator message (Daijiro Wachi) #62823
  • [9438c832b2] - lib: narrow ReadableStreamBYOBRequest.view return type to Uint8Array (RoomWithOutRoof) #63017
  • [c7d27c82c4] - lib: handle --permission-audit when propagating flags (Rafael Gonzaga) #63047
  • [9f19915276] - lib: optimize webidl conversion options (Filip Skokan) #62756
  • [771afd626a] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #63402
  • [67d094a554] - meta: move one or more collaborators to emeritus (Node.js GitHub Bot) #63235
  • [9091398f3d] - meta: ignore AI assistants files (Matteo Collina) #62612
  • [96f19a16d0] - module: fix sync hook short-circuit in require() in imported CJS (Joyee Cheung) #62920
  • [45f3e3ef11] - node-api: support SharedArrayBuffer in napi_create_typedarray (Yilong Li) #62710
  • [d7afa617bb] - quic: send correct OpenSSL alert for ALPN mismatches (Tim Perry) #63193
  • [526313beb8] - quic: fixup quic stream variable chunk len (James M Snell) #63230
  • [1613c7fe70] - quic: support --allow-net permissions (James M Snell) #63184
  • [72ab7444a8] - quic: remove unused env_ variable in session_manager.h/cc (James M Snell) #63177
  • [2b55656778] - quic: remove unused binding variable in session.cc (James M Snell) #63177
  • [83f0d37400] - quic: ignore coverage for quic files (James M Snell) #63149
  • [7e6b77b14d] - quic: complete the internal implementation of QUIC (James M Snell) #62876
  • [71372418f1] - repl: fix dedup comparing normalized line against raw history (Daijiro Wachi) #62886
  • [20f40c2c25] - sqlite: keep source database alive during backup (Matteo Collina) #62673
  • [592f741bd0] - src: simplify OpenSSL feature gates (Filip Skokan) #63255
  • [520ab7ad40] - src: add BoringSSL EVP enumeration fallback (Filip Skokan) #63206
  • [12be49acbc] - src: support multiple versions in node.config.json (Marco Ippolito) #63033
  • [296f907585] - src: remove unused using declarations in node_task_queue (Mert Can Altin) #63144
  • [7703f11b3c] - src: skip JS callback for settled Promise.race losers (Felipe Coelho) #62336
  • [74ab710c3a] - src,sqlite: remove dead code (Edy Silva) #63204
  • [e49154f4c8] - stream: add sync iterable fast path to pipeTo (Trivikram Kamat) #63318
  • [537455e98d] - stream: fix merge handling for object-like sources (Trivikram Kamat) #63356
  • [e21b8a47f0] - stream: limit iter from sync iterable batches (Trivikram Kamat) #63324
  • [3bdb64dc67] - stream: cache minimum cursor count in broadcast (Trivikram Kamat) #63322
  • [81819add6b] - stream: remove unnecessary check (Antoine du Hamel) #63030
  • [22e3579d74] - stream: avoid retrying accepted pipeTo writes (Trivikram Kamat) #63297
  • [691915ea94] - stream: validate broadcast writer writev chunks (Trivikram Kamat) #63300
  • [253f5f4ca2] - stream: uncork fromWritable writev on chunk error (Trivikram Kamat) #63295
  • [aa6913cc4a] - stream: validate fromWritable() options before cache (Trivikram Kamat) #63278
  • [6c53ddb988] - stream: optimize single-slot push queue drain (Trivikram Kamat) #63274
  • [b568649f6f] - stream: preserve toReadableSync batch after backpressure (Trivikram Kamat) #63276
  • [cdcefd7e2f] - stream: cache minimum cursor count in share (Trivikram Kamat) #63262
  • [ba7000e4f7] - stream: minor stream/iter implementation edits (René) #63132
  • [c694999ab8] - test: disable Maglev in near-heap-limit worker test (Trivikram Kamat) #63398
  • [a6d6d51c1b] - test: deflake connection refused proxy tests (Trivikram Kamat) #63395
  • [31d89c4f59] - test: avoid repeated writes in watch helper (Trivikram Kamat) #63386
  • [6f3587c773] - test: deflake watch mode worker test (Trivikram Kamat) #63384
  • [a57aebaa73] - test: update tls/crypto behaviour expectations when using BoringSSL (Filip Skokan) #63161
  • [b871cff2db] - test: relax test-memory-usage arrayBuffers check (inoway46) #63244
  • [25189bcb95] - test: reduce flakiness of different-registry-per-thread (Antoine du Hamel) #63244
  • [5bdb1f8426] - test: fix flaky test-watch-mode-inspect timeout (Matteo Collina) #63361
  • [d57bd2bf59] - test: relax min assertion in test-performance-eventloopdelay (Marco) #63100
  • [014e1f00c1] - test: avoid flaky restart sync in debugger exceptions test (Yuya Inoue) #62055
  • [dd28ff8a80] - test: avoid initial-break wait in restart-message (inoway46) #62060
  • [e89a49a13a] - test: move FFI tests to NATIVE_SUITES (Antoine du Hamel) #63165
  • [51ef0258ba] - test: update WPT for wasm/jsapi to 288c467d35 (Node.js GitHub Bot) #63136
  • [c0175a9ba1] - test: use ERM to destroy sqlite database handles after tests (René) #63076
  • [83054e8aba] - test_runner: avoid hanging on incomplete v8 frames (Ali Hassan) #62704
  • [4f1426d361] - test_runner: fix hooks test context (Moshe Atlow) #63285
  • [6a4c4b7193] - test_runner: fix diagnostics channel context tracking (Moshe Atlow) #63283
  • [eba9c3481b] - test_runner: add tags option and tag-name filter (Chemi Atlow) #63221
  • [2ba124f23b] - tls: add unsupported renegotiation error (Filip Skokan) #63161
  • [7c5048495a] - tools: bump the eslint group in /tools/eslint with 4 updates (dependabot[bot]) #63075
  • [6c574110a7] - tools: update gyp-next to 0.22.2 (Node.js GitHub Bot) #63374
  • [f14ed762b3] - tools: add boringssl to tools/nix/openssl-matrix.nix (Filip Skokan) #63206
  • [14d3924c48] - tools: fix test426 updater (Antoine du Hamel) #63271
  • [0d017ece8d] - tools: filter V8 scripts for build toolchain (Richard Lau) #63069
  • [3859a8700e] - tools: use different branch for tool updates on staging branches (Antoine du Hamel) #63110
  • [4a32ed82bd] - tools: prevent lib code from reading KeyObject and CryptoKey accessors (Filip Skokan) #63111

<a id="26.1.0"></a>

2026-05-07, Version 26.1.0 (Current), @aduh95

Notable Changes

Experimental node:ffi module

Node.js now includes an experimental node:ffi module for loading dynamic libraries and calling native symbols from JavaScript.

The API is gated behind the --experimental-ffi flag and, when the Permission Model is enabled, requires --allow-ffi.

This API is inherently unsafe. Invalid pointers, incorrect signatures, or accessing memory after it has been freed can crash the process or corrupt memory.

Contributed by Paolo Insogna in #62072.

Other Notable Changes

  • [34a6454fe3] - (SEMVER-MINOR) buffer: add end parameter (Robert Nagy) #62390
  • [073e84d7fe] - (SEMVER-MINOR) crypto: accept key data in crypto.diffieHellman() and cleanup DH jobs (Filip Skokan) #62527
  • [5b9cb10a5f] - (SEMVER-MINOR) crypto: implement randomUUIDv7() (nabeel378) #62553
  • [98f9becd16] - (SEMVER-MINOR) debugger: add edit-free runtime expression probes to node inspect (Joyee Cheung) #62713
  • [06defaa2ea] - (SEMVER-MINOR) fs: add signal option to fs.stat() (Mert Can Altin) #57775
  • [db66a963bf] - (SEMVER-MINOR) fs: expose frsize field in statfs (Jinho Jang) #62277
  • [87adb3472b] - (SEMVER-MINOR) http: harden ClientRequest options merge (Matteo Collina) #63082
  • [9047ec12ce] - (SEMVER-MINOR) http: add req.signal to IncomingMessage (Akshat) #62541
  • [ab66de8eaa] - (SEMVER-MINOR) process: throw on execve(2) failure instead of aborting (Bryan English) #62878
  • [8273682c87] - (SEMVER-MINOR) src: allow empty --experimental-config-file (Marco Ippolito) #61610
  • [fbff28f7e6] - (SEMVER-MINOR) stream: propagate destruction in duplexPair (Ahmed Elhor) #61098
  • [a8c773a0c7] - (SEMVER-MINOR) test_runner: align mock timeout api (sangwook) #62820
  • [b883a5eaea] - (SEMVER-MINOR) test_runner: add mock-timers support for AbortSignal.timeout (DeveloperViraj) #60751
  • [a21ae1771e] - (SEMVER-MINOR) test_runner: support test order randomization (Pietro Marchini) #61747
  • [b85c73ff10] - (SEMVER-MINOR) util: colorize text with hex colors (Guilherme Araújo) #61556

Commits

  • [1b959d02c2] - assert,util: fix stale nested cycle memo entries (Ruben Bridgewater) #62509
  • [bbeb38d210] - buffer: fix end parameter bugs in indexOf/lastIndexOf (Robert Nagy) #62711
  • [34a6454fe3] - (SEMVER-MINOR) buffer: add end parameter (Robert Nagy) #62390
  • [8b91526cd5] - build: track PDL files as inputs in inspector GN build (Robo) #62888
  • [da40ed7842] - build: remove armv6 from experimental platforms (René) #63063
  • [b36e55a23e] - build: make test-addons dependency-free (Joyee Cheung) #62388
  • [c27f3cf8f2] - build: add --enable-all-experimentals build flag (Paolo Insogna) #62755
  • [0d73b63a76] - build: fix cargo check when Temporal is disabled (Antoine du Hamel) #62730
  • [d8f97e6f7b] - build: fix ffi dependency compilation (Paolo Insogna) #62731
  • [d1eb7b340f] - build: fix stray debug string in LIEF defines (Om Ghante) #62683
  • [845283009d] - build: remove redundant -fuse-linker-plugin from GCC LTO flags (Daniel Lando) #62667
  • [a6e99879f4] - build,win: enable x64 PGO (Stefan Stojanovic) #62761
  • [38befee0fb] - crypto: add JWK support for ML-KEM and SLH-DSA key types (Filip Skokan) #62706
  • [b10653ad87] - crypto: add guards and adjust tests for BoringSSL (Filip Skokan) #62883
  • [2a7a69c6b0] - crypto: reject unintended raw key format string input (Filip Skokan) #62974
  • [bad1e2fe6a] - crypto: fix unsigned conversion of 4-byte RSA publicExponent (DeepView Autofix) #62839
  • [c9d5bae598] - crypto: remove Argon2 KDF derivation from its job setup (Filip Skokan) #62863
  • [6eea52426f] - crypto: reject duplicate ML-KEM JWK key_ops (Filip Skokan) #62905
  • [80d4836616] - crypto: deduplicate and canonicalize CryptoKey usages (Filip Skokan) #62902
  • [8950247027] - crypto: reject inherited key type names (Jonathan Lopes) #62875
  • [3f42f9615a] - crypto: strengthen argument CHECKs in TurboSHAKE (Tobias Nießen) #62763
  • [28346d999b] - crypto: guard against size_t overflow on experimental 32-bit arch (Filip Skokan) #62626
  • [d4cec263c4] - (SEMVER-MINOR) crypto: align key argument names in docs and error messages (Filip Skokan) #62527
  • [073e84d7fe] - (SEMVER-MINOR) crypto: accept key data in crypto.diffieHellman() and cleanup DH jobs (Filip Skokan) #62527
  • [518b578fe7] - crypto: add memory tracking for secureContext openssl objects (Mert Can Altin) #59051
  • [5b9cb10a5f] - (SEMVER-MINOR) crypto: implement randomUUIDv7() (nabeel378) #62553
  • [7133826053] - debugger: move ProbeInspectorSession and helpers to separate files (Joyee Cheung) #63013
  • [98f9becd16] - (SEMVER-MINOR) debugger: add edit-free runtime expression probes to node inspect (Joyee Cheung) #62713
  • [94ac62a2d1] - deps: update undici to 8.2.0 (Node.js GitHub Bot) #63092
  • [ef71de87e6] - deps: update amaro to 1.1.9 (Node.js GitHub Bot) #63090
  • [c4f0ef881a] - deps: update llhttp to 9.4.1 (Node.js GitHub Bot) #63045
  • [d29fbc0029] - deps: fix integration issues with the latest nghttp2 (Tim Perry) #62891
  • [537825acee] - deps: update nghttp2 to 1.69.0 (Node.js GitHub Bot) #62891
  • [4446bf694d] - deps: update corepack to 0.34.7 (Node.js GitHub Bot) #62810
  • [8f55327f1c] - deps: fix libffi macos build (Paolo Insogna) #63006
  • [3dee18f72f] - deps: patch V8 to 14.6.202.34 (Node.js GitHub Bot) #62964
  • [e281b247e6] - deps: update timezone to 2026b (Node.js GitHub Bot) #62962
  • [4dd982df13] - deps: upgrade npm to 11.13.0 (npm team) #62898
  • [61c0ff4a13] - deps: cherry-pick libuv/libuv@439a54b (skooch) #62881
  • [d26ca462ae] - deps: update undici to 8.1.0 (Node.js GitHub Bot) #62728
  • [6f08489ac9] - deps: update sqlite to 3.53.0 (Node.js GitHub Bot) #62699
  • [713601e8bd] - deps: update nbytes to 0.1.4 (Node.js GitHub Bot) #62698
  • [578cf1c0c1] - deps: update archs files for openssl-3.5.6 (Node.js GitHub Bot) #62629
  • [4a4ef13c67] - deps: upgrade openssl sources to openssl-3.5.6 (Node.js GitHub Bot) #62629
  • [2f3eca8c1e] - deps: update perfetto to 54.0 (Chengzhong Wu) #62397
  • [944ed9b739] - deps: add perfetto build files (Chengzhong Wu) #62397
  • [15530a7484] - deps: update ngtcp2 to 1.22.0 (Node.js GitHub Bot) #62595
  • [b813b4c4b5] - deps: update minimatch to 10.2.5 (Node.js GitHub Bot) #62594
  • [38e7ce58c5] - deps: update googletest to d72f9c8aea6817cdf1ca0ac10887f328de7f3da2 (Node.js GitHub Bot) #62593
  • [b5c573ed14] - deps: update simdjson to 4.6.1 (Node.js GitHub Bot) #62592
  • [318e2c7cd3] - deps: libuv: cherry-pick aabb7651de (Santiago Gimeno) #62561
  • [c6ccbd742a] - deps: libuv: reapply 3a9a6e3e6b (Andy Pan) #62561
  • [4ad07de7ae] - diagnostics_channel: add BoundedChannel and scopes (Stephen Belanger) #61680
  • [44416ea3fd] - doc: fix documentation history missing 25.9.0 (Antoine du Hamel) #63151
  • [5f6dfbf68e] - doc: fix changelog for chromium numbering (Rafael Gonzaga) #63133
  • [30c4b3658c] - doc: fix the TypeScript Execute (tsx) project link (David Thornton) #63093
  • [ca3c3097f1] - doc: minor structural stream/iter edits (René) #63089
  • [92324aab6f] - doc: remove typo comma from man page (Vas Sudanagunta) #63080
  • [712a15da73] - doc: correct diagnostics_channel built-in channel names (Bryan English) #62995
  • [c92cb6fe0d] - doc: use mjs/cjs blocks for callbackify null reason example (Daijiro Wachi) #62884
  • [020776d4d6] - doc: fix typo in test.md (Rich Trott) #62960
  • [7d52f2061e] - doc: correct typo in PR contribution instructions (Mike McCready) #62738
  • [70e8944676] - doc: fix duplicate word "of of" in postMessageToThread (Daijiro Wachi) #62917
  • [11c6c29284] - doc: fix duplicate word "to to" in util.styleText (Daijiro Wachi) #62917
  • [242adab671] - doc: fix duplicate word "for for" in compile cache (Daijiro Wachi) #62917
  • [b9f3abd63e] - doc: fix doubled word typo in stream_iter.md (Daijiro Wachi) #62916
  • [7a52fd0448] - doc: fix typo in dns.lookup options description (Daijiro Wachi) #62882
  • [acd7e18a8c] - doc: fix Argon2 parameter bounds (Tobias Nießen) #62868
  • [b43ecf40bb] - doc: trust FFI in the threat model (Paolo Insogna) #62852
  • [981ce96b03] - doc: fix typos and inconsistencies in crypto.md and webcrypto.md (Filip Skokan) #62828
  • [acc52ef257] - doc: clarify diffieHellman.generateKeys recomputes same key (Kit Dallege) #62205
  • [ae87597c07] - doc: remove Ayase-252 and meixg from triagger team (Antoine du Hamel) #62841
  • [1cd3694a5f] - doc: clarify dns.lookup() callback signature when all is true (eungi) #62800
  • [40a4337d65] - doc: add experimental modules lifetime policy (Paolo Insogna) #62753
  • [46f48222f8] - doc: clarify process._debugProcess() in Permission Model (Fahad Khan) #62537
  • [6eb9917497] - doc: fix typo in devcontainer guide (Rohan Santhosh Kumar) #62687
  • [3826c5ed7e] - doc: clarify Backport-PR-URL metadata added automatically (Mike McCready) #62668
  • [5d7e0dbbd8] - doc: update WPT test runner README.md (Filip Skokan) #62680
  • [e9d76b2a75] - doc: fix spelling in release announcement guidance (Rohan Santhosh Kumar) #62663
  • [1ae41cebb0] - doc: note GCC >= 14 requirement for native riscv64 builds (Jamie Magee) #62607
  • [9b29be6a28] - doc: note non-monotonic clock in crypto.randomUUIDv7 (nabeel378) #62600
  • [5ae59553f6] - doc: update bug bounty program (Rafael Gonzaga) #62590
  • [ce3f4c85dd] - doc: document TransformStream transformer.cancel option (Tom Pereira) #62566
  • [08a9ba73e4] - doc: mention test runner retry attemp is zero based (Moshe Atlow) #62504
  • [32f2169ede] - doc,src,test: fix dead inspector help URL (semimikoh) #62745
  • [870c1cd3f4] - doc,test: mem protection must be observed in ffi (Bryan English) #62818
  • [3d5cf171dc] - esm: add ERR_REQUIRE_ESM_RACE_CONDITION (Antoine du Hamel) #62462
  • [2004d8d6db] - ffi: make FFIFunctionInfo a BaseObject subclass (Anna Henningsen) #63071
  • [53eb7abeba] - ffi: prevent premature GC of DynamicLibrary (semimikoh) #63024
  • [58dc92f502] - ffi: support Symbol.dispose on DynamicLibrary (Matteo Collina) #62925
  • [528f8b2bae] - ffi: add shared-buffer fast path for numeric and pointer signatures (Bryan English) #62918
  • [42ac8b9ae7] - fs: add followSymlinks option to glob (Matteo Collina) #62695
  • [873c2bca70] - fs: restore fs patchability in ESM loader (Joyee Cheung) #62835
  • [349c7502c3] - fs: validate position argument before length === 0 early return (Edy Silva) #62674
  • [06defaa2ea] - (SEMVER-MINOR) fs: add signal option to fs.stat() (Mert Can Altin) #57775
  • [db66a963bf] - (SEMVER-MINOR) fs: expose frsize field in statfs (Jinho Jang) #62277
  • [3191d2936a] - http: emit 'drain' on OutgoingMessage only after buffers drain (Robert Nagy) #62936
  • [87adb3472b] - (SEMVER-MINOR) http: harden ClientRequest options merge (Matteo Collina) #63082
  • [e0b79633f6] - http: fix leaked error listener on sync HTTP req create + destroy (Tim Perry) #62872
  • [70c5491f53] - http: fix no_proxy leading-dot suffix matching (Daijiro Wachi) #62333
  • [60a585e68a] - http: cleanup pipeline queue (Robert Nagy) #62534
  • [9047ec12ce] - (SEMVER-MINOR) http: add req.signal to IncomingMessage (Akshat) #62541
  • [01eed5901b] - http2: expose writable stream state on compat response (T) #63003
  • [19b7adf3ba] - inspector: fix absolute URLs in network http (bugyaluwang) #62955
  • [4d10823fbb] - inspector: coerce key and value to string in webstorage events (Ali Hassan) #62616
  • [9a3ac66cc5] - inspector: return errors when CDP protocol event emission fails (Ryuhei Shima) #62162
  • [c89501c6e5] - inspector: auto collect webstorage data (Ryuhei Shima) #62145
  • [ef08c5016a] - lib: refactor internal webidl converters (Filip Skokan) #62979
  • [d0744c6a99] - lib: add Temporal to frozen intrinsics (René) #63029
  • [6d81cb17b3] - lib: avoid quadratic shift() in startup snapshot callback (Daijiro Wachi) #62914
  • [3491f73051] - lib: fix FLOAT_32 and FLOAT_64 type constants in ffi (Daijiro Wachi) #62892
  • [c4ca303b36] - lib: harden kKeyOps lookup with null prototype (Filip Skokan) #62877
  • [2e612fe070] - lib: short-circuit WebIDL BufferSource SAB check (Filip Skokan) #62833
  • [e850ee9c69] - lib: add new methods and error codes (Paolo Insogna) #62762
  • [e21b873589] - lib: use js-only implementation of isDataView() (René) #62780
  • [f454d1719d] - lib: fix lint in internal/webstreams/util.js (Filip Skokan) #62806
  • [fbd8ededba] - lib: fix sequence argument handling in Blob constructor (Ms2ger) #62179
  • [16860e6abd] - lib: improve Web Cryptography key validation ordering (Filip Skokan) #62749
  • [ba3f3e1753] - lib: reject SharedArrayBuffer in web APIs per spec (Ali Hassan) #62632
  • [d065e996bb] - lib: defer AbortSignal.any() following (sangwook) #62367
  • [2a711f4b0c] - (SEMVER-MINOR) lib,src,test,doc: add node:ffi module (Colin Ihrig) #62072
  • [d578343582] - meta: bump github/codeql-action from 4.35.1 to 4.35.3 (dependabot[bot]) #63074
  • [1b4b90d544] - meta: bump Mozilla-Actions/sccache-action from 0.0.9 to 0.0.10 (dependabot[bot]) #63073
  • [1477349e47] - meta: bump actions/upload-artifact from 7.0.0 to 7.0.1 (dependabot[bot]) #63072
  • [ecb7de271a] - meta: bump cachix/install-nix-action from 31.10.3 to 31.10.5 (dependabot[bot]) #62846
  • [fb91408312] - meta: bump actions/upload-artifact from 7.0.0 to 7.0.1 (dependabot[bot]) #62850
  • [7eb9a6be68] - meta: add automation policy (Chengzhong Wu) #62871
  • [6f053a4cb8] - meta: update CODEOWNERS for FFI (Paolo Insogna) #62853
  • [88fe50a725] - meta: move VoltrexKeyva to emeritus (Matteo Collina) #62895
  • [42e770bdd0] - meta: bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (dependabot[bot]) #62845
  • [952d005233] - meta: bump step-security/harden-runner from 2.16.1 to 2.19.0 (dependabot[bot]) #62844
  • [1bd19d9768] - meta: bump actions/github-script from 8.0.0 to 9.0.0 (dependabot[bot]) #62843
  • [386244a7dd] - meta: bump actions/setup-node from 6.3.0 to 6.4.0 (dependabot[bot]) #62842
  • [16b2c41f70] - meta: broaden stale bot (Aviv Keller) #62658
  • [41e7a4ba82] - meta: pass release version to release worker (flakey5) #62777
  • [632821db85] - meta: add QUIC to CODEOWNERS (Tim Perry) #62652
  • [4a7ad93ed8] - meta: move Michael to emeritus (Michael Dawson) #62536
  • [44d5a33efb] - meta: populate apt list for slim runner in update-openssl workflow (René) #62628
  • [d874596aa3] - meta: bump cachix/install-nix-action from 31.9.1 to 31.10.3 (dependabot[bot]) #62551
  • [1631b27e2b] - meta: bump step-security/harden-runner from 2.15.0 to 2.16.1 (dependabot[bot]) #62550
  • [4de376894d] - meta: bump actions/download-artifact from 8.0.0 to 8.0.1 (dependabot[bot]) #62549
  • [39da4d7bd6] - meta: bump actions/setup-node from 6.2.0 to 6.3.0 (dependabot[bot]) #62548
  • [62e3aa55ad] - meta: bump github/codeql-action from 4.32.4 to 4.35.1 (dependabot[bot]) #62547
  • [83986de8a2] - meta: bump codecov/codecov-action from 5.5.2 to 6.0.0 (dependabot[bot]) #62545
  • [18e56861dc] - meta: bump cachix/cachix-action from 16 to 17 (dependabot[bot]) #62544
  • [d4e49d567a] - meta: bump actions/cache from 5.0.3 to 5.0.4 (dependabot[bot]) #62543
  • [2c5a914af4] - meta: require DCO signoff in commit message guidelines (James M Snell) #62510
  • [f21039ce59] - meta: expand memory leak DoS criteria to all DoS (Joyee Cheung) #62505
  • [824ac6b5bf] - module: exclude node:ffi from builtinModules when not enabled (Jordan Harband) #63158
  • [bb6293ab7c] - module: remove duplicated checks from _resolveFilename (Antoine du Hamel) #62729
  • [34ec8c9f5c] - module,win: fix long subpath import (Stefan Stojanovic) #62101
  • [de46e68918] - node-api: update libuv ABI stability note (Chengzhong Wu) #62789
  • [78c7d77bbf] - node-api: add napi_create_external_sharedarraybuffer (Ben Noordhuis) #62623
  • [a0ccf94f61] - node-api: execute tsfn finalizer after queue drains when aborted (Kevin Eady) #61956
  • [ab66de8eaa] - (SEMVER-MINOR) process: throw on execve(2) failure instead of aborting (Bryan English) #62878
  • [20151be8cb] - process: handle rejections only when needed (Gürgün Dayıoğlu) #62919
  • [9b24a815a2] - quic: add QuicEndpoint.listening & QuicStream.destroy() and tests (Tim Perry) #62648
  • [761a96740c] - quic: fixup token verification to handle zero expiration (James M Snell) #62620
  • [4ade02ac85] - quic: support multiple ALPN negotiation (James M Snell) #62620
  • [b2e2e648e4] - quic: apply multiple TLS context improvements and SNI support (James M Snell) #62620
  • [56b941af4a] - quic: implement rapidhash for hashing improvements (James M Snell) #62620
  • [7cda4300b8] - quic: use arena allocation for packets (James M Snell) #62589
  • [1e8fa2f1bd] - sqlite: use OneByte for ASCII text and internalize col names (Ali Hassan) #61954
  • [3af44ee508] - sqlite: add serialize() and deserialize() (Ali Hassan) #62579
  • [6386914b4b] - src: decouple KeyObject and CryptoKey and move CryptoKey to src (Filip Skokan) #62924
  • [2dc1d205ee] - src: replace uses of deprecated v8::External APIs (gahaas) #61898
  • [cb33a794a5] - src: remove license headers for new node_profiling files (Chengzhong Wu) #63066
  • [59860eb798] - src: swap dotenv and config file parsing order (Marco Ippolito) #63035
  • [fda439cb58] - src: use unique_ptr for ffi memory management (Anna Henningsen) #63071
  • [56917afc57] - src: split profiling helpers from util (Ilyas Shabi) #63008
  • [fca56a409d] - src: add missing <cstdlib> for abort() declaration (Charles Kerr) #63001
  • [d49c89e915] - src: make node.config.json throw at unknown fields (Marco Ippolito) #62992
  • [e89c8e9b68] - src: fix crash in GetErrorSource() for invalid using syntax (semimikoh) #62770
  • [d89f719ce0] - src: remove outdated comments in contextify (Chengzhong Wu) #62932
  • [5117a3e52b] - src: simplify TCPWrap::Connect signature (Anna Henningsen) #62929
  • [41bd288ec7] - src: align FFI error handling with Node.js source (Anna Henningsen) #62858
  • [faaccfb9df] - src: simplify and fix FFI ArrayBuffer accesses (Anna Henningsen) #62857
  • [43bf39c350] - src: use DCHECK in AsyncWrap::MakeCallback instead emiting a warning (Gerhard Stöbich) #62795
  • [da52b09859] - src: fix MaybeStackBuffer char_traits deprecation warning (om-ghante) #62507
  • [2b12bca317] - src: use context-free V8 message column getters (René) #62778
  • [7efc2ce7b3] - src: clean up experimental flag variables (Antoine du Hamel) #62759
  • [8273682c87] - (SEMVER-MINOR) src: allow empty --experimental-config-file (Marco Ippolito) #61610
  • [b844c24395] - src: coerce spawnSync args to string once (Antoine du Hamel) #62633
  • [28679d76c4] - src: use stack allocation for small string encoding (Ali Hassan) #62431
  • [144ef93735] - src: add contextify interceptor debug logs (Chengzhong Wu) #62460
  • [d34cfb512e] - stream: remove redundant method check from iter.pipeToSync (René) #63099
  • [a95830b72a] - stream: copyedit webstreams/adapter.js (Antoine du Hamel) #63034
  • [4bf3e1e084] - stream: remove duplicated utility (Antoine du Hamel) #63031
  • [214a8c197b] - stream: simplify setPromiseHandled utility (Antoine du Hamel) #63032
  • [c12a767ff2] - stream: validate ReadableStream.from iterator objects (Daeyeon Jeong) #62911
  • [b09953d2d4] - stream: reject duplicate nested transferables (Daeyeon Jeong) #62831
  • [b9929622f3] - stream: ensuring cross-destruction in _duplexify to prevent leaks (Daijiro Wachi) #62824
  • [c51a39b3ec] - stream: simplify readableStreamFromIterable (Antoine du Hamel) #62651
  • [36078574b9] - stream: fix nested compose error propagation (Matteo Collina) #62556
  • [e1928cd481] - stream: allow shared array buffer sources in writable webstream adapter (René) #62163
  • [450e0519d9] - stream: simplify createPromiseCallback (Antoine du Hamel) #62650
  • [57e59ea070] - stream: fix writev unhandled rejection in fromWeb (sangwook) #62297
  • [958373413c] - stream: noop pause/resume on destroyed streams (Robert Nagy) #62557
  • [ee38d2c43d] - stream: refactor duplexify to be less suceptible to prototype pollution (Antoine du Hamel) #62559
  • [fbff28f7e6] - (SEMVER-MINOR) stream: propagate destruction in duplexPair (Ahmed Elhor) #61098
  • [d7317f4f90] - stream: add stream/iter to classic stream adapters (James M Snell) #62469
  • [55298c443f] - test: accept OpenSSL 4 generic internal error for DH key-type mismatches (Filip Skokan) #62805
  • [96581bccc7] - test: update WPT for url to 258f285de0 (Node.js GitHub Bot) #63087
  • [c73aba07fb] - test: run Temporal presence checks without V8 flag (René) #63028
  • [9c94dce55b] - test: export isRiscv64 from common module (Jamie Magee) #62609
  • [33c5f7fdbf] - test: normalize known inspector crash as completion (Joyee Cheung) #62851
  • [8146a97bc3] - test: update WPT for streams to f8f26a372f (Node.js GitHub Bot) #62864
  • [7c77c301c9] - test: account for RFC 7919 FFDHE negotiation in OpenSSL 4.0 (Filip Skokan) #62805
  • [9bf7604eb6] - test: skip tls-deprecated secp256k1 on OpenSSL 4.0 (Filip Skokan) #62805
  • [d173604b53] - test: use an always invalid cipher and cover OpenSSL 4.0 behaviours (Filip Skokan) #62805
  • [72f52163b4] - test: use valid DER OCSP responses (Filip Skokan) #62805
  • [e242394ad9] - test: skip test-tls-error-stack when engines are unsupported (Filip Skokan) #62805
  • [9bff52ebf8] - test: accept renamed OpenSSL 4.0 error code and reason (Filip Skokan) #62805
  • [d9b8cc1b68] - test: update test/addons/openssl-binding for OpenSSL 4.0 (Filip Skokan) #62805
  • [960fb16287] - test: mark test-snapshot-reproducible flaky (Filip Skokan) #62808
  • [7a12dd58cf] - test: check contextify contextual store behavior in strict mode (René) #62571
  • [c73c8e603f] - test: skip test-temporal-with-zoneinfo on system-icu builds (Antoine du Hamel) #62754
  • [48a3ca303e] - test: generate localstorage.db in a temp dir (Chengzhong Wu) #62660
  • [1a41c2c5db] - test: update tls junk data error expectations (Filip Skokan) #62629
  • [115e8c2052] - test: ensure WPT report is in out/wpt (Filip Skokan) #62637
  • [cb07b918bd] - test: improve WPT runner summary (Filip Skokan) #62636
  • [7f48438380] - test: skip url WPT subtests instead of modifying test script (Filip Skokan) #62635
  • [4097fb95d7] - test: capture negative utimes mtime at call time (Yuya Inoue) #62490
  • [e29f46df81] - test: allow skipping individual WPT subtests (Filip Skokan) #62517
  • [4d546886c3] - test: use on-disk fixture for test-npm-install (Joyee Cheung) #62584
  • [5b35eb02ec] - test: update WPT for url to 7a3645b79a (Node.js GitHub Bot) #62591
  • [7a8610835d] - test_runner: fix failing suite hooks when marked with todo (Moshe Atlow) #63097
  • [a8c773a0c7] - (SEMVER-MINOR) test_runner: align mock timeout api (sangwook) #62820
  • [dc0d757c8a] - test_runner: fix suite rerun edge case (Moshe Atlow) #62860
  • [b883a5eaea] - (SEMVER-MINOR) test_runner: add mock-timers support for AbortSignal.timeout (DeveloperViraj) #60751
  • [6fa62b7d58] - test_runner: add testId to test events (Moshe Atlow) #62772
  • [39e08340ff] - test_runner: publish to TracingChannel for OTel instrumentation (Moshe Atlow) #62502
  • [a21ae1771e] - (SEMVER-MINOR) test_runner: support test order randomization (Pietro Marchini) #61747
  • [cf0edeb65d] - test_runner: add passed, attempt, and diagnostic to SuiteContext (Moshe Atlow) #62504
  • [644e2399d6] - test_runner: add getTestContext() (Moshe Atlow) #62501
  • [480d538830] - tools: use npm ci in Undici update script (Antoine du Hamel) #63098
  • [9afb013edd] - tools: update nixpkgs-unstable to c6d65881c5624c9cae5ea6cedef24699b0c (Node.js GitHub Bot) #63091
  • [b9f2f5a90a] - tools: bump postcss from 8.5.8 to 8.5.10 in /tools/doc (dependabot[bot]) #62966
  • [09e4f4caca] - tools: use LTS Node.js in notify-on-push workflow (Nenad Spasenic) #63084
  • [2af4c89774] - tools: implements a few nits on build-aarch64-linux-v8 (Antoine du Hamel) #63048
  • [cf9c1849ca] - tools: update gr2m/create-or-update-pull-request-action to v1.10.1 (Mike McCready) #63065
  • [96370a57ed] - tools: simplify update-undici.sh (Antoine du Hamel) #63044
  • [b90486edd8] - tools: do not run test-linux on unrelated tools changes (Antoine du Hamel) #63037
  • [ac49e7c9fc] - tools: migrate from openssl-matrix.json to openssl-matrix.nix (Antoine du Hamel) #63036
  • [a9df3e37fd] - tools: update labels for nixpkgs pin bumps (Antoine du Hamel) #62994
  • [cee0154af8] - tools: reuse V8 builds even without Cachix on test-shared (Antoine du Hamel) #62980
  • [78c183da6b] - tools: do not include HTML docs in slim tarball (Antoine du Hamel) #62989
  • [04ce9df084] - tools: bump the eslint group in /tools/eslint with 4 updates (dependabot[bot]) #62848
  • [4d2952c00a] - tools: update nixpkgs-unstable to 01fbdeef22b76df85ea168fbfe1bfd9e636 (Node.js GitHub Bot) #62963
  • [555ad12f27] - tools: update gyp-next to 0.22.1 (Node.js GitHub Bot) #62961
  • [f92cbc2c81] - tools: fix commit linter for semver-major release proposals (Antoine du Hamel) #62993
  • [3b5bb4d758] - tools: consolidate and simplify .editorconfig deps section (Daijiro Wachi) #62887
  • [027bef4f3e] - tools: add non-default OpenSSL versions to the test-shared workflow (Filip Skokan) #62862
  • [fdcd7752de] - tools: set bot as author of tools-deps-update PRs (Antoine du Hamel) #62856
  • [ab7be6d987] - tools: bump brace-expansion from 5.0.4 to 5.0.5 in /tools/eslint (dependabot[bot]) #62458
  • [82281ffd59] - tools: bump brace-expansion in /tools/clang-format (dependabot[bot]) #62467
  • [48bb51b3d7] - tools: update nixpkgs-unstable to ab72be9733b41190ea34f1422a3e4e243ed (Node.js GitHub Bot) #62821
  • [67baa3254b] - tools: bump @node-core/doc-kit in /tools/doc in the doc group (dependabot[bot]) #62512
  • [bdee0a859d] - tools: exclude @node-core/doc-kit from dependabot cooldown (Levi Zim) #62775
  • [9e19f55214] - tools: re-enable undici WPTs in daily wpt.fyi job (Filip Skokan) #62677
  • [1eedbdded9] - tools: use upstream version of OpenSSL in test-shared (Antoine du Hamel) #62679
  • [3490c1fba1] - tools: pass the Temporal disable flag when disabled in shell.nix (Antoine du Hamel) #62733
  • [3a29dafd2d] - tools: fix --shared-ffi compilation on macOS (Antoine du Hamel) #62737
  • [5cb9108b9c] - tools: update nixpkgs-unstable to 13043924aaa7375ce482ebe2494338e0582 (Node.js GitHub Bot) #62700
  • [757cd21ea0] - tools: update gyp-next to 0.22.0 (Node.js GitHub Bot) #62697
  • [fad51c2f03] - tools: add a check for clean git tree after tests (Antoine du Hamel) #62661
  • [d1c517fd61] - tools: improve backport review script (Antoine du Hamel) #62573
  • [6d169c75f7] - tools: make v8.nix more stable (Antoine du Hamel) #62508
  • [1587a60bf8] - tools: add perfetto updater (Chengzhong Wu) #62397
  • [f54d74a5e7] - tools: improve output for unexpected passes in WTP tests (Antoine du Hamel) #62587
  • [a86c96333c] - tools: revert OpenSSL update workflow to ubuntu-latest (Richard Lau) #62627
  • [c9860f5800] - tools: update nixpkgs-unstable to a6522db5b947cd7026a40d02acc3ca26136 (Node.js GitHub Bot) #62596
  • [ae41e2a141] - tools: bump the eslint group in /tools/eslint with 2 updates (dependabot[bot]) #62552
  • [e2ba824407] - tools: allow triagers to queue a PR for CI until it's reviewed (Antoine du Hamel) #62524
  • [899d780f15] - tools: do not run commit-lint on release proposals (Antoine du Hamel) #62523
  • [102da27b4e] - url: process crash via malformed UNC hostname in pathToFileURL() (Nicola Del Gobbo) #62574
  • [3abd78c3e5] - url: optimize URLSearchParams set/delete duplicate handling (Gürgün Dayıoğlu) #62266
  • [fd3bf3830b] - url: align default argument handling for URLPattern with webidl (Filip Skokan) #62719
  • [b85c73ff10] - (SEMVER-MINOR) util: colorize text with hex colors (Guilherme Araújo) #61556
  • [c1d6b3db73] - v8: add cpu profile options (Ilyas Shabi) #62684
  • [717d9a7fda] - v8: add heap profile API (Ilyas Shabi) #62273
  • [2b885667a9] - watch: track worker entry files in watch mode (SudhansuBandha) #62368
  • [457fb55193] - watch: fix --env-file-if-exists crashing on linux if the file is missing (Efe) #61870

<a id="26.0.0"></a>

2026-05-05, Version 26.0.0 (Current), @RafaelGSS

We're excited to announce the release of Node.js 26! Highlights include the Temporal API enabled by default, updates to the V8 JavaScript engine to 14.6, Undici to 8.0, and several important deprecations and removals as we continue to modernize the platform.

As a reminder, Node.js 26 will enter long-term support (LTS) in October, but until then, it will be the "Current" release for the next six months. We encourage you to explore the new features and benefits offered by this latest release and evaluate their potential impact on your applications.

Notable Changes

Temporal API

The Temporal API is now enabled by default in Node.js 26. Temporal is a modern date/time API for JavaScript that provides a more robust and feature-rich alternative to the legacy Date object.

Contributed by Richard Lau in #61806.

V8 14.6

The V8 engine is updated to version 14.6.202.33, which is part of Chromium 146.

This version also includes:

Contributed by Michaël Zasso in #61898.

Undici 8

Undici has been updated to version 8.0.2, bringing new features and improvements to Node.js's HTTP client implementation.

Deprecations and Removals

  • [dff46c07c3] - (SEMVER-MAJOR) crypto: move DEP0182 to End-of-Life (Tobias Nießen) #61084

  • [93c25815ee] - (SEMVER-MAJOR) http: move writeHeader to end-of-life (Sebastian Beltran) #60635

    http.Server.prototype.writeHeader() is now fully removed. Use http.Server.prototype.writeHead() instead.

  • [c755b0113c] - (SEMVER-MAJOR) stream: move _stream_* to end-of-life (Sebastian Beltran) #60657

    The legacy _stream_wrap, _stream_readable, _stream_writable, _stream_duplex, _stream_transform, and _stream_passthrough modules are now fully removed.

  • [adac077484] - (SEMVER-MAJOR) crypto: runtime-deprecate DEP0203 and DEP0204 (Filip Skokan) #62453

  • [ac6375417a] - (SEMVER-MAJOR) stream: promote DEP0201 to runtime deprecation (René) #62173

  • [98907f560f] - (SEMVER-MAJOR) module: runtime-deprecate module.register() (Geoffrey Booth) #62401

  • [89f4b6cddb] - (SEMVER-MAJOR) module: remove --experimental-transform-types (Marco Ippolito) #61803

Semver-Major Commits

  • [d3f79aa65d] - (SEMVER-MAJOR) assert: allow printf-style messages as assertion error (Ruben Bridgewater) #58849
  • [f6ce381fec] - (SEMVER-MAJOR) build: bump GCC requirement to 13.2 (Michaël Zasso) #62555
  • [bff81fca46] - (SEMVER-MAJOR) build: enable Temporal by default (Richard Lau) #61806
  • [6ddb1643e1] - (SEMVER-MAJOR) build: enable V8_VERIFY_WRITE_BARRIERS in debug build (Joyee Cheung) #61898
  • [a8ab08b373] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #61898
  • [0998c37eb6] - (SEMVER-MAJOR) build: target Power 9 for AIX/IBM i (Richard Lau) #62296
  • [d73c49e849] - (SEMVER-MAJOR) build: drop support for Python 3.9 (Mike McCready) #61177
  • [3c92ee1008] - (SEMVER-MAJOR) build: enable maglev for Linux on s390x (Richard Lau) #60863
  • [908c468828] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #60488
  • [6380fbb5ee] - (SEMVER-MAJOR) build: reset embedder string to "-node.0" (Michaël Zasso) #60111
  • [089d6c77e7] - (SEMVER-MAJOR) (CVE-2026-21717) build,test: test array index hash collision (Joyee Cheung) #61898
  • [f9bd0165c4] - (SEMVER-MAJOR) build,win: fix Temporal build (StefanStojanovic) #61806
  • [6cc4cf8fe8] - (SEMVER-MAJOR) crypto: unify asymmetric key import through KeyObjectHandle::Init (Filip Skokan) #62499
  • [adac077484] - (SEMVER-MAJOR) crypto: runtime-deprecate DEP0203 and DEP0204 (Filip Skokan) #62453
  • [74509b166a] - (SEMVER-MAJOR) crypto: decorate async crypto job errors with OpenSSL error details (Filip Skokan) #62348
  • [da5843b91d] - (SEMVER-MAJOR) crypto: default ML-KEM and ML-DSA pkcs8 export to seed-only format (Filip Skokan) #62178
  • [dff46c07c3] - (SEMVER-MAJOR) crypto: move DEP0182 to End-of-Life (Tobias Nießen) #61084
  • [94cd600542] - (SEMVER-MAJOR) crypto: fix DOMException name for non-extractable key error (Filip Skokan) #60830
  • [dae2219cca] - (SEMVER-MAJOR) deps: V8: cherry-pick 0f024d4e66e0 (ishabi) #62408
  • [15d406c1b1] - (SEMVER-MAJOR) deps: fix V8 race condition for AIX (Abdirahim Musse) #61898
  • [46852d2d7a] - (SEMVER-MAJOR) deps: V8: cherry-pick cd2c216e7658 (LuYahan) #61898
  • [784431d6fc] - (SEMVER-MAJOR) deps: V8: backport 088b7112e7ab (Igor Sheludko) #61898
  • [3839c4a756] - (SEMVER-MAJOR) deps: V8: cherry-pick 00f6e834029f (Joyee Cheung) #61898
  • [44f64f1dd9] - (SEMVER-MAJOR) deps: V8: backport bef0d9c1bc90 (Joyee Cheung) #61898
  • [1f8f288e22] - (SEMVER-MAJOR) deps: V8: cherry-pick cf1bce40a5ef (Richard Lau) #61898
  • [d7eccac9ad] - (SEMVER-MAJOR) deps: V8: cherry-pick daf4656ba85e (Milad Fa) #61898
  • [3ee1ea7d0b] - (SEMVER-MAJOR) deps: V8: cherry-pick d83f479604c8 (Joyee Cheung) #61898
  • [80907c0239] - (SEMVER-MAJOR) deps: V8: cherry-pick edeb0a4fa181 (Joyee Cheung) #61898
  • [5e0dc169e9] - (SEMVER-MAJOR) deps: V8: cherry-pick aa0b288f87cc (Richard Lau) #61898
  • [8c1f7adbcd] - (SEMVER-MAJOR) deps: patch V8 to fix Windows build (StefanStojanovic) #61898
  • [3cbd3404d9] - (SEMVER-MAJOR) deps: V8: cherry-pick highway@989a498fdf3 (Richard Lau) #61898
  • [9f2b7d4031] - (SEMVER-MAJOR) deps: support madvise(3C) across ALL illumos revisions (Dan McDonald) #61898
  • [947ec32118] - (SEMVER-MAJOR) deps: patch V8 for illumos (Dan McDonald) #61898
  • [0660b942b2] - (SEMVER-MAJOR) deps: remove problematic comment from v8-internal (Michaël Zasso) #61898
  • [bef7b31a3f] - (SEMVER-MAJOR) deps: define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) #61898
  • [a10bf1e6ce] - (SEMVER-MAJOR) deps: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #61898
  • [cc547428e1] - (SEMVER-MAJOR) deps: update V8 to 14.6.202.33 (Michaël Zasso) #61898
  • [b81d2cbcae] - (SEMVER-MAJOR) deps: update undici to 8.0.2 (Node.js GitHub Bot) #62384
  • [bf5c6a8bd4] - (SEMVER-MAJOR) deps: V8: backport 151d0a44a1b2 (Abdirahim Musse) #60488
  • [b59af772dc] - (SEMVER-MAJOR) deps: V8: cherry-pick 47800791b35c (Jakob Kummerow) #60488
  • [5e41e5228a] - (SEMVER-MAJOR) deps: patch V8 for illumos (Dan McDonald) #59805
  • [2243e58e43] - (SEMVER-MAJOR) deps: use std::map in MSVC STL for EphemeronRememberedSet (Joyee Cheung) #58070
  • [4157964c42] - (SEMVER-MAJOR) deps: remove problematic comment from v8-internal (Michaël Zasso) #58070
  • [7c8483a4e9] - (SEMVER-MAJOR) deps: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077
  • [53379f3706] - (SEMVER-MAJOR) deps: update V8 to 14.3.127.12 (Michaël Zasso) #60488
  • [f819aec288] - (SEMVER-MAJOR) deps: V8: cherry-pick ff34ae20c8e3 (Chengzhong Wu) #60111
  • [1acd8df36f] - (SEMVER-MAJOR) deps: V8: backport fed47445bbdd (Abdirahim Musse) #60111
  • [46f72577a4] - (SEMVER-MAJOR) deps: patch V8 for illumos (Dan McDonald) #59805
  • [39eb88eaa8] - (SEMVER-MAJOR) deps: use std::map in MSVC STL for EphemeronRememberedSet (Joyee Cheung) #58070
  • [ea3d14eadb] - (SEMVER-MAJOR) deps: remove problematic comment from v8-internal (Michaël Zasso) #58070
  • [7bc0f245b4] - (SEMVER-MAJOR) deps: patch V8 to avoid duplicated zlib symbol (Michaël Zasso) #54077
  • [c2843b722c] - (SEMVER-MAJOR) deps: update V8 to 14.2.231.9 (Michaël Zasso) #60111
  • [b4ea323833] - (SEMVER-MAJOR) diagnostics_channel: ensure tracePromise consistency with non-Promises (René) #61766
  • [0c08835f71] - (SEMVER-MAJOR) doc: remove extensionless CJS exception for type:module packages (Matteo Collina) #62176
  • [ef0f0b0865] - (SEMVER-MAJOR) doc: update supported Windows SDK version to 11 (Mike McCready) #61973
  • [a00d95c73d] - (SEMVER-MAJOR) doc: drop p8 and z13 support (Milad Fa) #61005
  • [93c25815ee] - (SEMVER-MAJOR) http: move writeHeader to end-of-life (Sebastian Beltran) #60635
  • [4346c0f7a7] - (SEMVER-MAJOR) http: fix handling of HTTP upgrades with bodies (Tim Perry) #60016
  • [fa70327610] - (SEMVER-MAJOR) lib: return undefined for localStorage without file (Matteo Collina) #61333
  • [b328bf74bd] - (SEMVER-MAJOR) lib,src: implement QuotaExceededError as DOMException-derived interface (Filip Skokan) #62293
  • [98907f560f] - (SEMVER-MAJOR) module: runtime-deprecate module.register() (Geoffrey Booth) #62401
  • [89f4b6cddb] - (SEMVER-MAJOR) module: remove --experimental-transform-types (Marco Ippolito) #61803
  • [5334433437] - (SEMVER-MAJOR) src: replace uses of deprecated v8::External APIs (gahaas) #61898
  • [46e75f4874] - (SEMVER-MAJOR) src: stop using v8::PropertyCallbackInfo<T>::This() (Igor Sheludko) #61898
  • [54fefda0aa] - (SEMVER-MAJOR) src: avoid deprecated Wasm API (Clemens Backes) #61898
  • [840f509bd1] - (SEMVER-MAJOR) src: avoid deprecated FixedArray::Get (Clemens Backes) #61898
  • [75c3bcc3ec] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 147 (Michaël Zasso) #61898
  • [8480f87375] - (SEMVER-MAJOR) src: remove deprecated and unused isolate fields (Michaël Zasso) #60488
  • [70b6bd8e19] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 144 (Michaël Zasso) #60488
  • [7d2bc5249b] - (SEMVER-MAJOR) src: include node_api_types.h instead of node_api.h in node.h (Anna Henningsen) #60496
  • [91ab1101bc] - (SEMVER-MAJOR) src: update NODE_MODULE_VERSION to 142 (Michaël Zasso) #60111
  • [ac6375417a] - (SEMVER-MAJOR) stream: promote DEP0201 to runtime deprecation (René) #62173
  • [c755b0113c] - (SEMVER-MAJOR) stream: move _stream_* to end-of-life (Sebastian Beltran) #60657
  • [fadb214d95] - (SEMVER-MAJOR) stream: readable read one buffer at a time (Robert Nagy) #60441
  • [4fe325d93d] - (SEMVER-MAJOR) stream: preserve AsyncLocalStorage on finished only when needed (avcribl) #59873
  • [7682e7e9c5] - (SEMVER-MAJOR) test: skip wasm allocation tests in workers (Michaël Zasso) #61898
  • [ebfaf25870] - (SEMVER-MAJOR) test: update wpt Wasm jsapi expectations (Michaël Zasso) #61898
  • [ece6a17574] - (SEMVER-MAJOR) test: support presence of Temporal global (Michaël Zasso) #61898
  • [75b8d7a912] - (SEMVER-MAJOR) test: add type tags to uses of v8::External (gahaas) #61898
  • [092a448ad0] - (SEMVER-MAJOR) test: fix test-linux-perf-logger for V8 14.3 (Michaël Zasso) #60488
  • [8eb9c8f794] - (SEMVER-MAJOR) tools: remove v8_initializers_slow workaround from v8.gyp (Michaël Zasso) #61898
  • [a34fe77fe7] - (SEMVER-MAJOR) tools: add Rust args to tools/make-v8.sh (Richard Lau) #61898
  • [f4666bd6e3] - (SEMVER-MAJOR) tools: update V8 gypfiles for 14.6 (Michaël Zasso) #61898
  • [3c23d217a6] - (SEMVER-MAJOR) tools: update V8 gypfiles for 14.5 (Michaël Zasso) #61898
  • [e508489e37] - (SEMVER-MAJOR) tools: update V8 gypfiles for 14.4 (Michaël Zasso) #61898
  • [dc97b507d0] - (SEMVER-MAJOR) util: mark proxied objects as such when inspecting them (Ruben Bridgewater) #61029
  • [ddbe1365ff] - (SEMVER-MAJOR) util: reduce TextEncoder.encodeInto function size (Yagiz Nizipli) #60339

Semver-Minor Commits

  • [d4fa60cf9f] - (SEMVER-MINOR) crypto: add raw key formats support to the KeyObject APIs (Filip Skokan) #62240

Semver-Patch Commits

  • [4d8834fbef] - build: add rust target for macOS cross compiles (Richard Lau) #63015
  • [a4edab8dfb] - build: use CARGO environment variable if set (Richard Lau) #62421
  • [ecf8721076] - build: add weak symbol detection to export script (Abdirahim Musse) #62656
  • [5b9f811662] - build: filter hidden visibility symbols on AIX (Abdirahim Musse) #62656
  • [2e724793e6] - build: aix add conditonal flags for clang builds (Abdirahim Musse) #62656
  • [f212aee483] - build: enable temporal on GHA macOS build (Chengzhong Wu) #61691
  • [159ae48f8c] - build: add cargo and rustc checks for Temporal (Richard Lau) #61467
  • [a004535617] - build: add temporal to linux GHA build (Chengzhong Wu) #60942
  • [9df9b66c18] - crypto: add support for Ed25519 context parameter (Filip Skokan) #62474
  • [c3042c605b] - crypto: recognize raw formats in keygen (Filip Skokan) #62480
  • [ce0f498def] - deps: V8: cherry-pick fcf8b990c73c (Abdirahim Musse) #62894
  • [b7fab70d56] - Revert "deps: V8: cherry-pick 7107287" (Richard Lau) #62894
  • [d936c30fb4] - deps: V8: cherry-pick 7107287 (Abdirahim Musse) #62656
  • [c91d00b6d4] - deps: fix aix implicit declaration in OpenSSL (Abdirahim Musse) #62656
  • [0474a27c06] - deps: libuv: revert 3a9a6e3e6b (Antoine du Hamel) #62511
  • [7547e795ef] - deps: update icu to 78.3 (Node.js GitHub Bot) #62324
  • [5bebd7eaea] - deps: update libuv to 1.52.1 (Node.js GitHub Bot) #61829
  • [87d7db1918] - deps: patch V8 to 14.3.127.18 (Node.js GitHub Bot) #61421
  • [9d27d9a393] - deps: patch V8 to 14.3.127.17 (Node.js GitHub Bot) #61058
  • [bfc729cf19] - deps: patch V8 to 14.3.127.16 (Node.js GitHub Bot) #60819
  • [8716146d5b] - deps: patch V8 to 14.3.127.14 (Node.js GitHub Bot) #60743
  • [da71ab6895] - deps: V8: cherry-pick highway@989a498fdf3 (Richard Lau) #60682
  • [72d719dc00] - deps: support madvise(3C) across ALL illumos revisions (Dan McDonald) #58237
  • [ecca2b0d64] - deps: define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) #56238
  • [baefd4d5e2] - deps: patch V8 to 14.2.231.17 (Node.js GitHub Bot) #60647
  • [76d6be5fc5] - deps: patch V8 to 14.2.231.16 (Node.js GitHub Bot) #60544
  • [e0ca993514] - deps: patch V8 to 14.2.231.14 (Node.js GitHub Bot) #60413
  • [de8386de4d] - deps: V8: cherry-pick f93055fbd5aa (Olivier Flückiger) #60105
  • [710105bab5] - deps: support madvise(3C) across ALL illumos revisions (Dan McDonald) #58237
  • [6e5f3b9fe1] - deps: define V8_PRESERVE_MOST as no-op on Windows (Stefan Stojanovic) #56238
  • [b2c5235254] - doc: fix stray carriage return in packages.md (Filip Skokan) #62350
  • [f38a739623] - doc: reserve NMV 146 for Electron 42 (Niklas Wenzel) #62124
  • [a57893b799] - doc: add Temporal section to Table of Contents (Richard Lau) #61805
  • [d4cc54b8c8] - doc: fix v24 changelog after security release (Marco Ippolito) #61371
  • [659fd01b3e] - doc: fix v22 changelog after security release (Marco Ippolito) #61371
  • [6c96a63891] - doc: fix v20 changelog after security release (Marco Ippolito) #61371
  • [a18f8c1693] - doc: reserve NMV 145 for Electron 41 (Niklas Wenzel) #61291
  • [253b16fe14] - doc: add note about rust toolchain version requirement (Chengzhong Wu) #60942
  • [0177491df2] - doc: restore REPLACEME on assert change (Michaël Zasso) #60848
  • [dec0213c83] - doc: add known issue to v24.11.0 release notes (Richard Lau) #60467
  • [f7ca0ae765] - doc: remove Corepack documentation page (Antoine du Hamel) #57663
  • [a7d9c49490] - doc: reserve NMV 143 for Electron 40 (Shelley Vohr) #60386
  • [04a086a1f4] - esm: use wasm version of cjs-module-lexer (Joyee Cheung) #60663
  • [a27052f2e0] - Revert "inspector: fix compressed responses" (Antoine du Hamel) #61502
  • [186c7a9c74] - inspector: fix compressed responses (Ruben Nogueira) #61226
  • [012bf70908] - process: optimize asyncHandledRejections by using FixedQueue (Gürgün Dayıoğlu) #60854
  • [1a88acbfa2] - quic: fixup linting/formatting issues (James M Snell) #62387
  • [79b960a2bc] - quic: update http3 impl details (James M Snell) #62387
  • [57186e5827] - quic: fix a handful of bugs and missing functionality (James M Snell) #62387
  • [637bda0238] - sqlite: enable Percentile extension (Jurj Andrei George) #61295
  • [e619adfb86] - src: workaround AIX libc++ std::filesystem bug (Richard Lau) #62788
  • [79262ff860] - src: do not enable wasm trap handler if there's not enough vmem (Joyee Cheung) #62132
  • [2422ed8b5b] - src: remove redundant experimental_transform_types from node_options.h (沈鸿飞) #62058
  • [a86db6be70] - src: simplify handling of kNoAuthTagLength (Tobias Nießen) #61192
  • [d546e7fd0b] - src: tag more v8 aligned pointer slots (Chengzhong Wu) #60666
  • [b8e264d3c3] - src: tag v8 aligned pointer slots with embedder data type tags (Chengzhong Wu) #60602
  • [cd391b5f11] - test: wpt for Wasm jsapi including new ESM Integration tests (Guy Bedford) #59034
  • [1baafcc882] - test: update WPT resources, interfaces and WebCryptoAPI (Node.js GitHub Bot) #62389
  • [6a84d4a17c] - tools: update nixpkgs-unstable to 832efc09b4caf6b4569fbf9dc01bec3082a (Node.js GitHub Bot) #62486
  • [a98d9f6ad7] - tools: update nixpkgs-unstable to 9cf7092bdd603554bd8b63c216e8943cf9b (Node.js GitHub Bot) #62383
  • [f6d02af01f] - tools: update nixpkgs-unstable to f82ce7af0b79ac154b12e27ed800aeb9741 (Node.js GitHub Bot) #62258
  • [5b5f069a27] - tools: bump nixpkgs-unstable pin to e38213b91d3786389a446dfce4ff5a8aaf6 (Node.js GitHub Bot) #62052
  • [13eb80f3b7] - tools: update nixpkgs-unstable to d1c15b7d5806069da59e819999d70e1cec0 (Node.js GitHub Bot) #61931
  • [4d1557a744] - tools: update nixpkgs-unstable to 2343bbb58f99267223bc2aac4fc9ea301a1 (Node.js GitHub Bot) #61831
  • [ecd979c95a] - tools: update nixpkgs-unstable to ae67888ff7ef9dff69b3cf0cc0fbfbcd3a7 (Node.js GitHub Bot) #61733
  • [7de56bdee2] - tools: update nixpkgs-unstable to 6308c3b21396534d8aaeac46179c14c439a (Node.js GitHub Bot) #61606
  • [e33ce7a6fe] - tools: update nixpkgs-unstable to ab9fbbcf4858bd6d40ba2bbec37ceb4ab6e (Node.js GitHub Bot) #61513
  • [ba05a66774] - tools: update nixpkgs-unstable to be5afa0fcb31f0a96bf9ecba05a516c66fc (Node.js GitHub Bot) #61420
  • [bb5d066989] - tools: update nixpkgs-unstable to 3146c6aa9995e7351a398e17470e15305e6 (Node.js GitHub Bot) #61340
  • [d050aa87e8] - tools: update nixpkgs-unstable to 16c7794d0a28b5a37904d55bcca36003b91 (Node.js GitHub Bot) #61272
  • [2696391b18] - tools: update nixpkgs-unstable to 3edc4a30ed3903fdf6f90c837f961fa6b49 (Node.js GitHub Bot) #61188
  • [c5d3f5f9c8] - tools: update nixpkgs-unstable to 7d853e518814cca2a657b72eeba67ae20eb (Node.js GitHub Bot) #61137
  • [dcb9573d0f] - tools: update nixpkgs-unstable to f997fa0f94fb1ce55bccb97f60d41412ae8 (Node.js GitHub Bot) #61057
  • [bd426739dc] - tools: update nixpkgs-unstable to a672be65651c80d3f592a89b3945466584a (Node.js GitHub Bot) #60980
  • [85852a3221] - tools: update nixpkgs-unstable to 59b6c96beacc898566c9be1052ae806f383 (Node.js GitHub Bot) #60900
  • [1e7eb90b39] - tools: update nixpkgs-unstable to a8d610af3f1a5fb71e23e08434d8d61a466 (Node.js GitHub Bot) #60818
  • [fb6b83c9ef] - tools: lint Temporal global (René) #60793
  • [adb40439ca] - tools: update nixpkgs-unstable to 71cf367cc2c168b0c2959835659c38f0a34 (Node.js GitHub Bot) #60742
  • [8a76958005] - tools: update nixpkgs-unstable to ffcdcf99d65c61956d882df249a9be53e59 (Node.js GitHub Bot) #60315
  • [9120924de1] - util: fix nested proxy inspection (Ruben Bridgewater) #61077