Skip to content

2026-06-01, Version 26.3.0 (Current)#63664

Open
github-actions[bot] wants to merge 142 commits into
v26.xfrom
v26.3.0-proposal
Open

2026-06-01, Version 26.3.0 (Current)#63664
github-actions[bot] wants to merge 142 commits into
v26.xfrom
v26.3.0-proposal

Conversation

@github-actions
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot commented May 30, 2026

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
  • [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

ikeyan and others added 30 commits May 23, 2026 00:05
PR-URL: #62394
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: #63062
Refs: #33075
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: Mike McCready <66998419+MikeMcC399@users.noreply.github.com>
PR-URL: #63381
Refs: #63225
Refs: #63367
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Reviewed-By: Stefan Stojanovic <stefan.stojanovic@janeasystems.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
PR-URL: #63417
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Signed-off-by: StefanStojanovic <stefan.stojanovic@janeasystems.com>
PR-URL: #63114
Refs: #61964
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
PR-URL: #63307
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Stewart X Addison <sxa@redhat.com>
Reviewed-By: Richard Lau <richard.lau@ibm.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Signed-off-by: Nad Alaba <37968805+nadalaba@users.noreply.github.com>
PR-URL: #63117
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Signed-off-by: Moshe Atlow <moshe@atlow.co.il>
PR-URL: #63429
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Aviv Keller <me@aviv.sh>
Signed-off-by: Moshe Atlow <moshe@atlow.co.il>
PR-URL: #63429
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Aviv Keller <me@aviv.sh>
Signed-off-by: Chengzhong Wu <cwu631@bloomberg.net>
PR-URL: #62322
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Signed-off-by: inoway46 <inoueyuya416@gmail.com>
PR-URL: #62807
Refs: #61762
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Signed-off-by: Daijiro Wachi <daijiro.wachi@gmail.com>
PR-URL: #63434
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Signed-off-by: Moshe Atlow <moshe@atlow.co.il>
PR-URL: #63435
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Benjamin Gruenbaum <benjamingr@gmail.com>
RHEL 8 machines now use clang 20.1.

Signed-off-by: Richard Lau <richard.lau@ibm.com>
PR-URL: #63441
Refs: nodejs/build#4265
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Stewart X Addison <sxa@redhat.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Use a uv_check_t on BindingData to process outbound
pending packet send, and use TrySend for actually sending
packets when possible. Results in an 8% improvement in
req/s and ~24% improvement in p95 latency.

Also sets us up better for future improvements in
libuv if the changes proposed in libuv/libuv#5116
are accepted.

Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Improves overall performance and sets us up for eventual
support for GRO/GSO batching in libuv in the future.

Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Set up for when libuv eventually supports ECN marking.
Pass the ECN marking stuff into ngtcp2.

Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Every stream, session, and endpoint creates aliased
structs for stats and state. These were creating
v8::ArrayBuffer allocations and views for each instance,
which is expensive. This adds a new arena mechanism
for AliasedStructs that allocates in pages and allows
Streams and Sessions to share the same underlying
ArrayBuffer for their stats and state. Since these
are never exposed to users, this is safe and results
in a significant reduction in allocation counts.

Each arena maintains a freelist of pages, where each
page is a max of 16KB bytes. Pages are lazily allocated
and freed as needed. Each slot in the arena corresponds
to a single struct instance, and the slot index is
used to calculate the byte offset within the page for
that struct's view.

The perf improvement is modest but measurable. The
key benefit is in reduced memory fragmentation and GC
overhead.

Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
* Adds invalid this protections in the stats classes
* Collects internal private fields into a single private symbol
  to reduce the number of private field accesses
* Adds and corrects isQuic* class checks
* Preserve stream id and direction after destroy
* Improve stats close snapshotting
* Fixes a handful of other bugs and doc issues

Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
mcollina and others added 25 commits May 30, 2026 19:26
Signed-off-by: Matteo Collina <hello@matteocollina.com>
PR-URL: #63414
Fixes: #63412
Reviewed-By: Tim Perry <pimterry@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Fixes: #54753
Signed-off-by: Matteo Collina <matteo.collina@gmail.com>
PR-URL: #63510
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Reviewed-By: Pietro Marchini <pietro.marchini94@gmail.com>
PR-URL: #62331
Refs: #61478
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
Reviewed-By: Chemi Atlow <chemi@atlow.co.il>
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
Signed-off-by: RafaelGSS <rafael.nunu@hotmail.com>
PR-URL: #63583
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Since the ESM loader is captured in the snapshot now, there's
no need to lazy load the helpers. Load them eagerly to capture
them into the snapshot. This also reduces the noise coming out
of --print-bytecode since we no longer compile the helper
functions at run time.

Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
PR-URL: #63550
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Geoffrey Booth <webadmin@geoffreybooth.com>
Ensure overlapping next() calls on a single share() consumer resolve
in the same order they were requested.

Fixes: #63477

Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com>
Assisted-by: openai:gpt-5.5
PR-URL: #63478
Fixes: #63477
Reviewed-By: James M Snell <jasnell@gmail.com>
Refs: #63489

Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com>
Co-authored-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
Assisted-by: openai:gpt-5.5
PR-URL: #63541
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #63586
Refs: nodejs/node-core-utils#1043
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Signed-off-by: Chengzhong Wu <cwu631@bloomberg.net>
PR-URL: #63588
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
Signed-off-by: Tim Perry <pimterry@gmail.com>
PR-URL: #63198
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Signed-off-by: Chengzhong Wu <legendecas@gmail.com>
PR-URL: #63591
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Forward Node.js tail stream data through a pipe-style data listener
instead of manually draining readable events. This keeps compose closer
to the stream pipe hot path while preserving backpressure with pause
and resume.

Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com>
Assisted-by: openai:gpt-5.5
PR-URL: #63593
Reviewed-By: Robert Nagy <ronagy@icloud.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Jake Yuesong Li <jake.yuesong@gmail.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
The 8 KiB default has been unchanged since 2015. With the threshold
check `size < (Buffer.poolSize >>> 1)`, this means allocations of 4 KiB
or larger bypass the pool entirely — including 4 KiB itself, a common
page and HTTP-frame size.

Raising the default to 64 KiB extends pool coverage to ~32 KiB
allocations, capturing common sizes used by HTTP parsers, stream
chunks, and small file reads.

Throughput improvements on workers-k=8 fs.readFileSync benchmarks
(Linux/glibc) at the affected sizes, with no regressions elsewhere:

  file size  |  8 KiB pool  |  64 KiB pool  |  delta
  -----------+--------------+---------------+-------
   4 KiB     |  326k ops/s  |  360k ops/s   |  +10%
   8 KiB     |  202k ops/s  |  254k ops/s   |  +26%
  16 KiB     |  148k ops/s  |  181k ops/s   |  +23%
  64 KiB     |   86k ops/s  |   87k ops/s   |   ~
   1 MiB     |   12k ops/s  |   13k ops/s   |   ~

Cost: +56 KiB RSS per realm at startup.
Signed-off-by: Matteo Collina <hello@matteocollina.com>
PR-URL: #63597
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: LiviaMedeiros <livia@cirno.name>
Reviewed-By: Ruben Bridgewater <ruben@bridgewater.de>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Defer non-critical warnings to the next event loop iteration when
can_call_into_js() returns false. This prevents crashes when V8
emits warnings during REPL preview evaluation or other contexts
where JavaScript execution is temporarily forbidden.

When a warning is emitted inside DisallowJavascriptExecutionScope,
ProcessEmitWarningGeneric cannot be called immediately. Instead,
use env->SetImmediate() to queue the warning emission for after
the scope exits. This preserves full warning formatting, deprecation
codes, and --redirect-warnings routing.

Signed-off-by: Divyanshu Sharma <Divyanshu88999@gmail.com>
PR-URL: #63491
Fixes: #63473
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Signed-off-by: Guilherme Araújo <arauujogui@gmail.com>
PR-URL: #62999
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
PR-URL: #63602
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Add a new httpValidation option to http.createServer() and
http.request() / http.ClientRequest that controls how strictly
HTTP header values are validated:

- 'strict'   - reject any non-ASCII or control characters (default)
- 'relaxed'  - allow the non-ASCII characters permitted by the
               Fetch specification (kLenientHeaderValueRelaxed)
- 'insecure' - disable all validation (like insecureHTTPParser)

The option is threaded through _storeHeader -> processHeader ->
storeHeader -> validateHeaderValue, and also through
writeInformation -> processInformationHeader -> validateHeaderValue.

Cannot be used together with insecureHTTPParser.

Fixes: #61582
Signed-off-by: RajeshKumar11 <kakumanurajeshkumar@gmail.com>
PR-URL: #61597
Refs: #61582
Refs: https://fetch.spec.whatwg.org/#header-value
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Tim Perry <pimterry@gmail.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #63609
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #63611
Reviewed-By: Mattias Buelens <mattias@buelens.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #63612
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Signed-off-by: Matteo Collina <hello@matteocollina.com>
PR-URL: #63621
Reviewed-By: Juan José Arboleda <soyjuanarbol@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Paolo Insogna <paolo@cowtech.it>
Reviewed-By: Moshe Atlow <moshe@atlow.co.il>
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #63517
Refs: https://hackerone.com/reports/3752489
Reviewed-By: James M Snell <jasnell@gmail.com>
Signed-off-by: Joyee Cheung <joyeec9h3@gmail.com>
PR-URL: #63650
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #63625
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: #63055
Backport-PR-URL: #63153
Refs: https://developer.apple.com/documentation/apple-silicon/about-the-rosetta-translation-environment/
Refs: nodejs/build#4317
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: René <contact.9a5d6388@renegade334.me.uk>
Reviewed-By: Stewart X Addison <sxa@redhat.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Chengzhong Wu <legendecas@gmail.com>
@aduh95 aduh95 force-pushed the v26.3.0-proposal branch from 501be28 to c2462e9 Compare May 30, 2026 20:07
aduh95 added a commit that referenced this pull request May 30, 2026
Notable changes:

buffer:
  * (SEMVER-MINOR) increase `Buffer.poolSize` default to 64 KiB (Matteo Collina) #63597
crypto:
  * update root certificates to NSS 3.123.1 (Node.js GitHub Bot) #63527
doc:
  * downgrade macOS x64 support to Tier 2 (Antoine du Hamel) #63055
http:
  * (SEMVER-MINOR) add `httpValidation` option to configure header value validation (RajeshKumar11) #61597
inspector:
  * (SEMVER-MINOR) expose precise coverage start to JS runtime (sangwook) #63079
lib,permission:
  * (SEMVER-MINOR) add `permission.drop` (Rafael Gonzaga) #62672

PR-URL: #63664
@aduh95 aduh95 marked this pull request as ready for review May 30, 2026 20:07
Notable changes:

buffer:
  * (SEMVER-MINOR) increase `Buffer.poolSize` default to 64 KiB (Matteo Collina) #63597
crypto:
  * update root certificates to NSS 3.123.1 (Node.js GitHub Bot) #63527
doc:
  * downgrade macOS x64 support to Tier 2 (Antoine du Hamel) #63055
http:
  * (SEMVER-MINOR) add `httpValidation` option to configure header value validation (RajeshKumar11) #61597
inspector:
  * (SEMVER-MINOR) expose precise coverage start to JS runtime (sangwook) #63079
lib,permission:
  * (SEMVER-MINOR) add `permission.drop` (Rafael Gonzaga) #62672

PR-URL: #63664
@aduh95 aduh95 force-pushed the v26.3.0-proposal branch from c2462e9 to ef3d0d7 Compare May 30, 2026 20:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

release Issues and PRs related to Node.js releases. v26.x Issues that can be reproduced on v26.x or PRs targeting the v26.x-staging branch.

Projects

None yet

Development

Successfully merging this pull request may close these issues.