Skip to content

[v24.x backport] node:stream/iter and QUIC backports - #64675

Open
aduh95 wants to merge 118 commits into
nodejs:v24.x-stagingfrom
aduh95:stream-iter-and-quic-backports
Open

[v24.x backport] node:stream/iter and QUIC backports#64675
aduh95 wants to merge 118 commits into
nodejs:v24.x-stagingfrom
aduh95:stream-iter-and-quic-backports

Conversation

@aduh95

@aduh95 aduh95 commented Jul 22, 2026

Copy link
Copy Markdown
Contributor

Backport of:

@aduh95
aduh95 requested a review from a team as a code owner July 22, 2026 11:54
@aduh95 aduh95 added the semver-minor PRs that contain new features and should be released in the next minor version. label Jul 22, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/actions
  • @nodejs/performance
  • @nodejs/releasers
  • @nodejs/security-wg
  • @nodejs/v8-update

@nodejs-github-bot nodejs-github-bot added the meta Issues and PRs related to the general management of the project. label Jul 22, 2026
@aduh95
aduh95 marked this pull request as draft July 22, 2026 11:55
@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch from 935ead8 to 1a1c988 Compare July 22, 2026 11:57
@aduh95
aduh95 marked this pull request as ready for review July 22, 2026 11:57
@aduh95
aduh95 marked this pull request as draft July 22, 2026 11:58
@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch from 1a1c988 to 975ed7b Compare July 22, 2026 11:58
@aduh95
aduh95 marked this pull request as ready for review July 22, 2026 11:59
@aduh95
aduh95 marked this pull request as draft July 22, 2026 11:59
@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch from 975ed7b to 2b26bbe Compare July 22, 2026 12:00
@aduh95
aduh95 marked this pull request as ready for review July 22, 2026 12:00
@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch 4 times, most recently from b28dcf7 to 3c553ff Compare July 22, 2026 13:32
@aduh95
aduh95 changed the base branch from v24.19.0-proposal to v24.x-staging July 22, 2026 13:33
@aduh95
aduh95 marked this pull request as draft July 22, 2026 13:33
@aduh95
aduh95 marked this pull request as ready for review July 22, 2026 13:33
@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch from 3c553ff to 173b666 Compare July 22, 2026 13:37
@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch 3 times, most recently from 7e7fa1a to 182db6c Compare July 22, 2026 15:53
@codecov

codecov Bot commented Jul 22, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 90.23%. Comparing base (b881658) to head (65439dd).
⚠️ Report is 432 commits behind head on v24.x-staging.

Additional details and impacted files
@@                Coverage Diff                @@
##           v24.x-staging   #64675      +/-   ##
=================================================
+ Coverage          89.92%   90.23%   +0.31%     
=================================================
  Files                686      710      +24     
  Lines             208389   226450   +18061     
  Branches           40077    42776    +2699     
=================================================
+ Hits              187387   204341   +16954     
- Misses             13238    14100     +862     
- Partials            7764     8009     +245     

see 273 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.

@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch 2 times, most recently from c1ef609 to 421ba7e Compare July 24, 2026 09:13
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

jasnell and others added 19 commits August 3, 2026 20:33
Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode/Opus 4.6
PR-URL: nodejs#63483
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: nodejs#63483
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
On the client, add verifyPeer: 'auto', 'strict', and
'manual' modes. The 'strict' mode will reject invalid
certs at the handshake layer, while the 'manual' mode
allows the application to inspect the peer cert and decide
whether to trust it or not. The 'auto' mode is the default
and will reject invalid certs at a middle layer after the
onhandshake event.

Signed-off-by: James M Snell <jasnell@gmail.com>
Assisted-by: Opencode/Opus 4.6
PR-URL: nodejs#63483
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
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: nodejs#63483
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
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: nodejs#63483
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: nodejs#63483
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: Tim Perry <pimterry@gmail.com>
PR-URL: nodejs#63198
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Signed-off-by: James M Snell <jasnell@gmail.com>
PR-URL: nodejs#63536
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: Trivikram Kamat <trivikr.dev@gmail.com>
Signed-off-by: Tim Perry <pimterry@gmail.com>
PR-URL: nodejs#63874
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: James M Snell <jasnell@gmail.com>
Implements a callback that is invoked once http/3
settings are received.
Background, http/3 settings usually arrive a bit
later than connection establishment, and e.g. for
webtransport these settings are used to indicate
support. So e.g. the examples for quiche from
 google, wait for the settings to arrive.
 (This is different to http/2).
The implemented callback mechanism allows to wait
for the settings to arrive until connection
attempts are made. As settings are stored in the
generic applications option object, the callback's
 name refers to the application rather than the
 settings. Whether this is a good choice is
 debatable.

Fixes: nodejs#63553
Signed-off-by: Marten Richter <marten.richter@freenet.de>
PR-URL: nodejs#63558
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Tim Perry <pimterry@gmail.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Signed-off-by: Tim Perry <pimterry@gmail.com>
PR-URL: nodejs#63950
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Signed-off-by: Tim Perry <pimterry@gmail.com>
PR-URL: nodejs#63191
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Signed-off-by: Tim Perry <pimterry@gmail.com>
PR-URL: nodejs#63946
Reviewed-By: Ethan Arrowood <ethan@arrowood.dev>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
If the #handle is undefined and not QuicStream,
 while kInspect is called
 `DataViewPrototypeGetByteLength` will throw.

Signed-off-by: Marten Richter <marten.richter@freenet.de>
PR-URL: nodejs#64170
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Gürgün Dayıoğlu <hey@gurgun.day>
Reviewed-By: Tim Perry <pimterry@gmail.com>
Signed-off-by: Mohamed Sayed <k@3zrv.com>
PR-URL: nodejs#64228
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Document that duck-typed readable inputs must provide off() in addition
to read() and on(), matching the cleanup behavior in the implementation.

Signed-off-by: Kamat, Trivikram <16024985+trivikr@users.noreply.github.com>
PR-URL: nodejs#63682
Reviewed-By: Daijiro Wachi <daijiro.wachi@gmail.com>
Signed-off-by: Antoine du Hamel <duhamelantoine1995@gmail.com>
PR-URL: nodejs#64649
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
This notable includes stream/iter (since they're closely related and
rapidly evolving together) and ngtcp2, nghttp3 & openssl deps.

Based on test-linux.yml, the main differences are simplifications: PRs
only, filtered to specific paths, just one build (ARM only), no unusual
characters test.

Signed-off-by: Tim Perry <pimterry@gmail.com>
PR-URL: nodejs#63875
Reviewed-By: Stephen Belanger <admin@stephenbelanger.com>
Signed-off-by: Renegade334 <contact.9a5d6388@renegade334.me.uk>
PR-URL: nodejs#64043
Refs: nodejs#63078
Reviewed-By: Antoine du Hamel <duhamelantoine1995@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Filip Skokan <panva.ip@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
@aduh95
aduh95 force-pushed the stream-iter-and-quic-backports branch from 2dd39a0 to e11cdce Compare August 3, 2026 18:38
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@Renegade334

Copy link
Copy Markdown
Member

The linker errors seem to suggest that it's nghttp2 (not nghttp3) which is clashing with itself: we build nghttp2/lib/sfparse.c as part of the nghttp2 target, but also build it as a standalone sfparse target to use as a static library in the test implementations (whose builds we have deliberately disabled).

We can either look for a definitive fix... or just remove the disabled test implementation targets from ngtcp2.gyp and the associated sfparse target from nghttp2.gyp for v24.x, given that we are never ever going to be building these for the lifetime of v24.x due to the C++23 requirement. (To that end, does removing d2207f8 fix the linker errors?)

@aduh95

aduh95 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

To that end, does removing d2207f8 fix the linker errors?

It's hard to tell, all the changes build on top of it so it's very hard to remove

@Renegade334

Copy link
Copy Markdown
Member

Worth trying a CI run with b36adcb on top?

@aduh95

aduh95 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor Author

@Renegade334

Renegade334 commented Aug 4, 2026

Copy link
Copy Markdown
Member

Interesting...

Not sure if related, but I've noticed that the node.gypi changes from the backported #59946 are overlapping with #61444 (a later PR, but already merged to v24.x) – the latter removed the ngtcp2 targets from the openssl section of node.gypi and moved them elsewhere, the backport is adding them back in, so they're now duplicated. Those test implementations are the only build targets that depend on nghttp2:sfparse... 🤔

Worth trying 04e036a to fixup that commit?

@aduh95

aduh95 commented Aug 5, 2026

Copy link
Copy Markdown
Contributor Author

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

meta Issues and PRs related to the general management of the project. semver-minor PRs that contain new features and should be released in the next minor version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.