Skip to content

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

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

2026-06-01, Version 26.3.0 (Current)#63664
github-actions[bot] wants to merge 143 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
  • [6bef10e7b7] - lib: cleanup stateless diffiehellman key handling (Filip Skokan) #62645

ikeyan and others added 30 commits May 23, 2026 00:05
PR-URL: #62394
Reviewed-By: Mattias Buelens <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Signed-off-by: Renegade334 <[email protected]>
PR-URL: #63062
Refs: #33075
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Ethan Arrowood <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: Mike McCready <[email protected]>
PR-URL: #63381
Refs: #63225
Refs: #63367
Reviewed-By: Joyee Cheung <[email protected]>
Reviewed-By: Stefan Stojanovic <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
PR-URL: #63417
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Signed-off-by: StefanStojanovic <[email protected]>
PR-URL: #63114
Refs: #61964
Reviewed-By: Michaël Zasso <[email protected]>
Signed-off-by: Joyee Cheung <[email protected]>
PR-URL: #63307
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Stewart X Addison <[email protected]>
Reviewed-By: Richard Lau <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Signed-off-by: Nad Alaba <[email protected]>
PR-URL: #63117
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Signed-off-by: Moshe Atlow <[email protected]>
PR-URL: #63429
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Chemi Atlow <[email protected]>
Reviewed-By: Aviv Keller <[email protected]>
Signed-off-by: Moshe Atlow <[email protected]>
PR-URL: #63429
Reviewed-By: Benjamin Gruenbaum <[email protected]>
Reviewed-By: Chemi Atlow <[email protected]>
Reviewed-By: Aviv Keller <[email protected]>
Signed-off-by: inoway46 <[email protected]>
PR-URL: #62807
Refs: #61762
Reviewed-By: Luigi Pinca <[email protected]>
Signed-off-by: Daijiro Wachi <[email protected]>
PR-URL: #63434
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Chemi Atlow <[email protected]>
Signed-off-by: Moshe Atlow <[email protected]>
PR-URL: #63435
Reviewed-By: Chemi Atlow <[email protected]>
Reviewed-By: Benjamin Gruenbaum <[email protected]>
RHEL 8 machines now use clang 20.1.

Signed-off-by: Richard Lau <[email protected]>
PR-URL: #63441
Refs: nodejs/build#4265
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Stewart X Addison <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Signed-off-by: James M Snell <[email protected]>
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
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 <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
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 <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Set up for when libuv eventually supports ECN marking.
Pass the ECN marking stuff into ngtcp2.

Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
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 <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
* 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 <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
Signed-off-by: James M Snell <[email protected]>
Assisted-by: Opencode:Opus 4.6
PR-URL: #63267
Reviewed-By: Matteo Collina <[email protected]>
joyeecheung and others added 21 commits May 30, 2026 19:26
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 <[email protected]>
PR-URL: #63550
Reviewed-By: Chengzhong Wu <[email protected]>
Reviewed-By: Geoffrey Booth <[email protected]>
Ensure overlapping next() calls on a single share() consumer resolve
in the same order they were requested.

Fixes: #63477

Signed-off-by: Kamat, Trivikram <[email protected]>
Assisted-by: openai:gpt-5.5
PR-URL: #63478
Fixes: #63477
Reviewed-By: James M Snell <[email protected]>
Refs: #63489

Signed-off-by: Kamat, Trivikram <[email protected]>
Co-authored-by: Antoine du Hamel <[email protected]>
Assisted-by: openai:gpt-5.5
PR-URL: #63541
Reviewed-By: Ethan Arrowood <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
Signed-off-by: Antoine du Hamel <[email protected]>
PR-URL: #63586
Refs: nodejs/node-core-utils#1043
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
Signed-off-by: Chengzhong Wu <[email protected]>
PR-URL: #63588
Reviewed-By: Juan José Arboleda <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Joyee Cheung <[email protected]>
Signed-off-by: Tim Perry <[email protected]>
PR-URL: #63198
Reviewed-By: Ethan Arrowood <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
Signed-off-by: Chengzhong Wu <[email protected]>
PR-URL: #63591
Reviewed-By: Jake Yuesong Li <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
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 <[email protected]>
Assisted-by: openai:gpt-5.5
PR-URL: #63593
Reviewed-By: Robert Nagy <[email protected]>
Reviewed-By: Ethan Arrowood <[email protected]>
Reviewed-By: Jake Yuesong Li <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
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 <[email protected]>
PR-URL: #63597
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: LiviaMedeiros <[email protected]>
Reviewed-By: Ruben Bridgewater <[email protected]>
Reviewed-By: Ethan Arrowood <[email protected]>
Reviewed-By: Stephen Belanger <[email protected]>
Reviewed-By: Gürgün Dayıoğlu <[email protected]>
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 <[email protected]>
PR-URL: #63491
Fixes: #63473
Reviewed-By: René <[email protected]>
Reviewed-By: James M Snell <[email protected]>
Reviewed-By: Anna Henningsen <[email protected]>
Signed-off-by: Guilherme Araújo <[email protected]>
PR-URL: #62999
Reviewed-By: Gürgün Dayıoğlu <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Ethan Arrowood <[email protected]>
PR-URL: #63602
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
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 <[email protected]>
PR-URL: #61597
Refs: #61582
Refs: https://fetch.spec.whatwg.org/#header-value
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Tim Perry <[email protected]>
Signed-off-by: Antoine du Hamel <[email protected]>
PR-URL: #63609
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Signed-off-by: Antoine du Hamel <[email protected]>
PR-URL: #63611
Reviewed-By: Mattias Buelens <[email protected]>
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Ethan Arrowood <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Signed-off-by: Antoine du Hamel <[email protected]>
PR-URL: #63612
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Gürgün Dayıoğlu <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Signed-off-by: Matteo Collina <[email protected]>
PR-URL: #63621
Reviewed-By: Juan José Arboleda <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Reviewed-By: Antoine du Hamel <[email protected]>
Reviewed-By: Paolo Insogna <[email protected]>
Reviewed-By: Moshe Atlow <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Signed-off-by: Joyee Cheung <[email protected]>
PR-URL: #63650
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Tobias Nießen <[email protected]>
Reviewed-By: Trivikram Kamat <[email protected]>
Signed-off-by: Antoine du Hamel <[email protected]>
PR-URL: #63625
Reviewed-By: Filip Skokan <[email protected]>
Reviewed-By: Colin Ihrig <[email protected]>
Signed-off-by: Antoine du Hamel <[email protected]>
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 <[email protected]>
Reviewed-By: Michaël Zasso <[email protected]>
Reviewed-By: René <[email protected]>
Reviewed-By: Stewart X Addison <[email protected]>
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Rafael Gonzaga <[email protected]>
Reviewed-By: Marco Ippolito <[email protected]>
Reviewed-By: Chengzhong Wu <[email protected]>
@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
@aduh95 aduh95 force-pushed the v26.3.0-proposal branch from c2462e9 to ef3d0d7 Compare May 30, 2026 20:11
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
@codecov
Copy link
Copy Markdown

codecov Bot commented May 30, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.10%. Comparing base (cfd7920) to head (b7e6a5d).
⚠️ Report is 1 commits behind head on v26.x.

Additional details and impacted files
@@            Coverage Diff             @@
##            v26.x   #63664      +/-   ##
==========================================
+ Coverage   90.05%   90.10%   +0.05%     
==========================================
  Files         714      714              
  Lines      225899   227930    +2031     
  Branches    42739    43012     +273     
==========================================
+ Hits       203427   205380    +1953     
- Misses      14246    14292      +46     
- Partials     8226     8258      +32     

see 139 files with indirect coverage changes

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

panva and others added 2 commits May 31, 2026 11:16
Signed-off-by: Filip Skokan <[email protected]>
PR-URL: #62645
Backport-PR-URL: #63584
Reviewed-By: Antoine du Hamel <[email protected]>
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 ef3d0d7 to b7e6a5d Compare May 31, 2026 09:17
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.