GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — stream: readable read one buffer at a time by ronag · Pull Request #60441 · nodejs/node

Conversation

@ronag

@ronag ronag commented Oct 27, 2025 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member
Instead of wasting cycles concatenating buffers, just return each
one by one.

Similar (but not exact) old behavior can be achieved by using
`readable.read(readable.readableLength)` instead of
`readable.read()`. In some edge cases it might be necessary
to do a `readable.read(0)` first.

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@ronag
ronag requested a review from mcollina October 27, 2025 18:44
@nodejs-github-bot

nodejs-github-bot commented Oct 27, 2025 •
edited by ronag
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Collaborator

Review requested:

  • @nodejs/streams
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@nodejs-github-bot nodejs-github-bot added needs-ci PRs that need a full CI run. stream Issues and PRs related to Node.js streams. labels Oct 27, 2025
MattiasBuelens
MattiasBuelens reviewed Oct 31, 2025
View reviewed changes
Comment thread test/parallel/test-stream-readable-infinite-read.js Resolved

Uh oh!

There was an error while loading. Please reload this page.

mcollina
mcollina approved these changes Jan 2, 2026
View reviewed changes

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

code lgtm

I think some docs changes are needed

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mcollina mcollina added the semver-major PRs that contain breaking changes and should be released in the next major version. label Jan 2, 2026
@mcollina

mcollina commented Jan 2, 2026

Copy link
Copy Markdown
Member

Marked as semver-major.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@lpinca

lpinca commented Jan 2, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

I'm -1 on this unless there is a strong reason for it. Historically, readable.read() has always returned all queued data. If this lands, I think that the easiest workaround for modules affected by the breaking change would be replacing readable.read() with readable.read(readable.readableLength).

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag

ronag commented Jan 2, 2026 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member Author

I'm -1 on this unless there is a strong reason for it.

The performance overhead is huge. As it stand we should at least add a note to avoid this api for anything performance sensitive.

If this lands, I think that the easiest workaround for modules affected by the breaking change would be replacing readable.read() with readable.read(readable.readableLength).

Good point.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag

ronag commented Jan 2, 2026

Copy link
Copy Markdown
Member Author

I think some docs changes are needed

What doc changes are you roughly asking for?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag
ronag force-pushed the read-no-copy branch 2 times, most recently from a380c35 to 0798db8 Compare January 2, 2026 08:55
@ronag
ronag force-pushed the read-no-copy branch from 0798db8 to 0d7fcae Compare January 2, 2026 08:56
@ronag
ronag marked this pull request as ready for review January 2, 2026 08:56
@ronag ronag added the request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. label Jan 2, 2026
@ronag
ronag force-pushed the read-no-copy branch from 0d7fcae to 8cec69c Compare January 2, 2026 08:57
@ronag
ronag force-pushed the read-no-copy branch from 8cec69c to 876ff79 Compare January 2, 2026 08:58
@ronag
ronag force-pushed the read-no-copy branch from 876ff79 to 01a9ec9 Compare January 2, 2026 08:58
@github-actions github-actions Bot added request-ci-failed Starting CI with the request-ci label failed and requires manual intervention. and removed request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. labels Jan 2, 2026
@github-actions

github-actions Bot commented Jan 2, 2026

Copy link
Copy Markdown
Contributor
Failed to start CI
   ⚠  Commits were pushed since the last approving review:
   ⚠  - stream: readable read one buffer at a time
   ✘  Refusing to run CI on potentially unsafe PR
https://github.com/nodejs/node/actions/runs/20654449594
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@ronag ronag added request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. and removed request-ci-failed Starting CI with the request-ci label failed and requires manual intervention. labels Jan 2, 2026
@github-actions github-actions Bot added request-ci-failed Starting CI with the request-ci label failed and requires manual intervention. and removed request-ci Add this label to start a Jenkins CI on a PR. Only starts once the PR has an approving review. labels Jan 2, 2026
@ronag
ronag requested review from jasnell and lpinca January 6, 2026 18:34
lpinca
lpinca approved these changes Jan 6, 2026
View reviewed changes
gurgunday
gurgunday approved these changes Jan 7, 2026
View reviewed changes

@gurgunday gurgunday left a comment

Copy link
Copy Markdown
Member

There was a problem hiding this comment.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@mcollina mcollina added the commit-queue PRs queued for automated landing through the Commit Queue. label Jan 20, 2026
@nodejs-github-bot nodejs-github-bot added commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. and removed commit-queue PRs queued for automated landing through the Commit Queue. labels Jan 20, 2026
@nodejs-github-bot

nodejs-github-bot commented Jan 20, 2026

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/60441
✔  Done loading data for nodejs/node/pull/60441
----------------------------------- PR info ------------------------------------
Title      stream: readable read one buffer at a time (#60441)
Author     Robert Nagy <[email protected]> (@ronag)
Branch     ronag:read-no-copy -> nodejs:main
Labels     stream, semver-major, author ready, needs-ci, needs-citgm
Commits    1
 - stream: readable read one buffer at a time
Committers 1
 - Robert Nagy <[email protected]>
PR-URL: https://github.com/nodejs/node/pull/60441
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Gürgün Dayıoğlu <[email protected]>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/60441
Reviewed-By: Matteo Collina <[email protected]>
Reviewed-By: Luigi Pinca <[email protected]>
Reviewed-By: Gürgün Dayıoğlu <[email protected]>
--------------------------------------------------------------------------------
   ℹ  This PR was created on Mon, 27 Oct 2025 18:44:50 GMT
   ✔  Approvals: 3
   ✔  - Matteo Collina (@mcollina) (TSC): https://github.com/nodejs/node/pull/60441#pullrequestreview-3631894479
   ✔  - Luigi Pinca (@lpinca): https://github.com/nodejs/node/pull/60441#pullrequestreview-3632251382
   ✔  - Gürgün Dayıoğlu (@gurgunday): https://github.com/nodejs/node/pull/60441#pullrequestreview-3635847744
   ✘  semver-major requires at least 2 TSC approvals
   ✔  Last GitHub CI successful
   ℹ  Last Full PR CI on 2026-01-05T21:27:50Z: https://ci.nodejs.org/job/node-test-pull-request/70687/
   ℹ  Last CITGM CI on 2026-01-05T09:54:54Z: https://ci.nodejs.org/view/Node.js-citgm/job/citgm-smoker/3663/
- Querying data for job/node-test-pull-request/70687/
✔  Build data downloaded
   ✔  Last Jenkins CI successful
--------------------------------------------------------------------------------
   ✔  Aborted `git node land` session in /home/runner/work/node/node/.ncu
https://github.com/nodejs/node/actions/runs/21187285768
All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@mcollina

mcollina commented Jan 20, 2026

Copy link
Copy Markdown
Member

@nodejs/tsc can I get another approval?

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

anonrig
anonrig approved these changes Jan 21, 2026
View reviewed changes
@mcollina mcollina added commit-queue PRs queued for automated landing through the Commit Queue. and removed commit-queue-failed PRs whose Commit Queue landing failed and need manual intervention before retrying. labels Jan 21, 2026
@nodejs-github-bot

nodejs-github-bot commented Jan 21, 2026

Copy link
Copy Markdown
Collaborator

Landed in fadb214

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@RafaelGSS RafaelGSS mentioned this pull request Apr 27, 2026
2026-05-05, Version 26.0.0 (Current) #62526
Merged
@cirospaciari cirospaciari mentioned this pull request Jun 4, 2026
node:stream: sync the stream suite to Node v26.3.0 and fix the gaps it surfaces — stream/iter + zlib/iter behind --experimental-stream-iter, read()-one-buffer semantics, compose/pipeline/web-adapter/http/fs/net parity (247/251 upstream tests, +63 vendored) oven-sh/bun#31826
Merged
@alleria173 alleria173 mentioned this pull request Jul 28, 2026
Feat/node 26 support gchq/CyberChef#2699
Merged
This was referenced Sep 1, 2026
feat: contrato de superfície como matriz Node 24/26 forattini-dev/scriptc#13
Merged
fix: zera os vermelhos conhecidos do differential (12/13) e fixa o oráculo no primary forattini-dev/scriptc#14
Merged
fix: pin Readable.read() semantics to the compat matrix primary forattini-dev/scriptc#15
Merged
@shaunco shaunco mentioned this pull request Oct 3, 2026
AWS SDK v2 S3 metadata reads hang under Node 26’s single-buffer read() behavior balena-io/open-balena-api#2492
Closed
@ronag ronag mentioned this pull request Oct 12, 2026
perf(client): parse buffered TLS records as one batch nxtedition/undici#129
Merged
@czubocha czubocha mentioned this pull request Oct 14, 2026
fix: complete AWS SDK v2 requests on Node.js 26 serverless/serverless#13971
Merged
4 tasks done
@robobun robobun mentioned this pull request Oct 16, 2026
crypto: Cipher/Decipher used as a stream drops the final() block (regression in 1.4.0) oven-sh/bun#45269
Closed
@maca134 maca134 mentioned this pull request Oct 17, 2026
Use update()/final() instead of cipher streams (fixes Node 26 / Bun 1.4) DoctorMcKay/node-steam-crypto#2
Open
@bardock bardock mentioned this pull request Oct 21, 2026
[BUG] SQS JSON responses over 8 KB use Transfer-Encoding: chunked (real SQS sends Content-Length); aws-sdk v2 on Node 26 hangs on them floci-io/floci#6184
Closed
@sirocchj sirocchj mentioned this pull request Oct 30, 2026
Reading from a socket gets stuck on Node.js 26 typelevel/fs2#3793
Open
@mikinovation mikinovation mentioned this pull request Nov 1, 2026
chore(deps): update dependency node to v26 mikinovation/mikinovation#445
Merged
1 task
This was referenced Nov 7, 2026
doc: readable.read() still documents pre-v26 behaviour (returns all buffered data when size is omitted) #67323
Closed
Node.js 26: inline Flight data is split into one <script> per chunk on 16.4.x (~130× more scripts, 4× gzip bytes) — fixed on canary by #100142 vercel/next.js#101343
Open
@Fuma2514 Fuma2514 mentioned this pull request Nov 8, 2026
doc: update readable.read() for v26 one-chunk behaviour #67341
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

@MattiasBuelens MattiasBuelens MattiasBuelens left review comments
@mcollina mcollina mcollina approved these changes
@lpinca lpinca lpinca approved these changes
@anonrig anonrig anonrig approved these changes
@gurgunday gurgunday gurgunday approved these changes
@jasnell jasnell Awaiting requested review from jasnell

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

author ready PRs with CI started, the required approvals, and no outstanding review comments. needs-ci PRs that need a full CI run. needs-citgm PRs that need a CITGM CI run. semver-major PRs that contain breaking changes and should be released in the next major version. stream Issues and PRs related to Node.js streams.

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

7 participants

@ronag @nodejs-github-bot @mcollina @lpinca @MattiasBuelens @anonrig @gurgunday
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.