Skip to content

zlib: add ZIP archive support to zlib (ZipFile,ZipBuffer,ZipEntry) - #64339

Merged
nodejs-github-bot merged 2 commits into
nodejs:mainfrom
pipobscure:ziparchives
Aug 1, 2026
Merged

zlib: add ZIP archive support to zlib (ZipFile,ZipBuffer,ZipEntry)#64339
nodejs-github-bot merged 2 commits into
nodejs:mainfrom
pipobscure:ziparchives

Conversation

@pipobscure

@pipobscure pipobscure commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

Summary

Add ZIP archive support to the node:zlib module through three classes
and a set of helpers:

  • ZipEntry: a single archive member, with buffered reads (content()),
    bounded-memory streaming reads (contentIterator()), and
    create()/createStream() for building members.
  • ZipFile: random access to an archive backed by a file descriptor,
    reading members lazily without retaining their content and writing
    new members in place; opened with open()/openSync().
  • ZipBuffer: a zero-copy, in-memory view over an archive already held
    in a Buffer.

createZipArchive() serializes a sequence of entries into an archive
byte stream, and setMaxZipContentSize() bounds the default in-memory
decompression size. Every operation has both an asynchronous and a
synchronous form.

P.S.: my CLA should be on file and I wrote this myself so COO is declared

@nodejs-github-bot nodejs-github-bot added lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Jul 7, 2026
@pipobscure pipobscure changed the title zlib, vfs: add ZIP archive read/write support and an archive vfs provider zlib, vfs: add ZIP archive support and an archive vfs provider Jul 7, 2026
@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 98.24856% with 73 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.31%. Comparing base (396aad0) to head (fb49aca).
⚠️ Report is 18 commits behind head on main.

Files with missing lines Patch % Lines
lib/internal/zip/file.js 96.41% 27 Missing and 1 partial ⚠️
lib/internal/zip/entry.js 98.44% 13 Missing and 2 partials ⚠️
lib/internal/zip/headers.js 97.26% 14 Missing ⚠️
lib/internal/zip/fs-util.js 92.00% 6 Missing and 6 partials ⚠️
lib/internal/zip/archive.js 99.37% 2 Missing ⚠️
lib/internal/zip/compression.js 99.33% 2 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main   #64339      +/-   ##
==========================================
+ Coverage   90.17%   90.31%   +0.13%     
==========================================
  Files         746      760      +14     
  Lines      242776   246928    +4152     
  Branches    45741    46578     +837     
==========================================
+ Hits       218929   223003    +4074     
- Misses      15347    15411      +64     
- Partials     8500     8514      +14     
Files with missing lines Coverage Δ
lib/internal/errors.js 97.91% <100.00%> (+<0.01%) ⬆️
lib/internal/zip.js 100.00% <100.00%> (ø)
lib/internal/zip/binary.js 100.00% <100.00%> (ø)
lib/internal/zip/buffer.js 100.00% <100.00%> (ø)
lib/internal/zip/constants.js 100.00% <100.00%> (ø)
lib/internal/zip/content-size.js 100.00% <100.00%> (ø)
lib/internal/zip/dos.js 100.00% <100.00%> (ø)
lib/internal/zip/extra-fields.js 100.00% <100.00%> (ø)
lib/internal/zip/header-builders.js 100.00% <100.00%> (ø)
lib/zlib.js 98.20% <100.00%> (+0.12%) ⬆️
... and 6 more

... and 40 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.

@pipobscure

This comment was marked as outdated.

@pipobscure
pipobscure force-pushed the ziparchives branch 3 times, most recently from 0f2b879 to 4258e94 Compare July 7, 2026 19:20
pipobscure added a commit to pipobscure/node that referenced this pull request Jul 7, 2026
Codecov flagged low patch coverage on lib/internal/zip.js and
lib/internal/vfs/providers/archive.js in nodejs#64339. Add tests exercising
Zip64 extra-field parsing, DOS date/time edge cases, streaming-entry
state guards, decodeMemberStream/decodeMemberSync's duplicated error
branches, the ZipBuffer/ZipFile iteration protocols, several on-disk
ZipFile error paths, and ArchiveFileHandle's direct read/write/stat/
truncate surface plus a handful of provider-level error branches the
existing tests didn't reach.
@pipobscure
pipobscure force-pushed the ziparchives branch 2 times, most recently from 2a56a15 to 27ab6b4 Compare July 7, 2026 21:54
@bakkot

bakkot commented Jul 7, 2026

Copy link
Copy Markdown
Contributor

See also #45651

Comment thread doc/api/vfs.md Outdated
@pipobscure

pipobscure commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

See also #45651

Thanks @bakkot !!!

I think the time has come for it on the one hand, and on the other I added some „motivation“ links earlier. Here some more detail:

Based on this, we can modify the loader to directly load from an archive. If we do that, we get application bundles. pipobscure#5 & pipobscure#6

Which can then in turn be used to easily create application bundles: https://github.com/pipobscure/experimental-sea

So the world had changed enough that it‘s worth proposing again.

@JakobJingleheimer
JakobJingleheimer self-requested a review July 8, 2026 08:40
@pipobscure
pipobscure force-pushed the ziparchives branch 2 times, most recently from f157686 to 233f865 Compare July 8, 2026 11:29
@mcollina

mcollina commented Jul 8, 2026

Copy link
Copy Markdown
Member

I like this a lot. It's likely better to split this into 2 PRs, one for Zip support and one for VFS-Zip, so the Zip support could theoretically be backportable on its own.

Comment thread doc/api/zlib.md
@pipobscure

This comment was marked as outdated.

@pipobscure

pipobscure commented Jul 8, 2026

Copy link
Copy Markdown
Contributor Author

As per @mcollina I split this into two PRs.

I have the vfs-provider ready to go as follow up one (as it depends on this being merged)

I also made sure that the streaming side of things was actually as clean as I intended, and added a few more tests.

@pipobscure pipobscure changed the title zlib, vfs: add ZIP archive support and an archive vfs provider zlib, vfs: add ZIP archive support to zlib Jul 8, 2026
Comment thread test/parallel/test-zlib-zip-vfs.js Outdated
@pipobscure pipobscure changed the title zlib, vfs: add ZIP archive support to zlib zlib: add ZIP archive support to zlib (ZipFile,ZipBuffer,ZipEntry) Jul 8, 2026
@bakkot

bakkot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Might be worth borrowing some tests from other projects: e.g. python, go, info-zip. There's a lot of edge cases with zip files. (Python's tests are larger than this whole PR put together.)

Not all directly applicable because this doesn't include the ability to extract to disk, fortunately.

@trivikr trivikr added the zlib Issues and PRs related to the zlib subsystem. label Jul 9, 2026
@pipobscure

Copy link
Copy Markdown
Contributor Author

Might be worth borrowing some tests from other projects

I've added a bunch more tests and compared to what go/python/info-zip do. (info-zip is cli exercise, so it's not entirely clear what gets tested).

I also gave zip.js an once over and concluded that it was too large a file (it originated from separate files that I've had for ages combined into one).

So I split it back out so it would be easier to review. And gave that another look.

@panva

panva commented Jul 30, 2026

Copy link
Copy Markdown
Member

I rebased on main.

So we can't easily see and track the requested diff now. Unfortunate as otherwise we could review increments instead.

@panva
panva dismissed their stale review July 30, 2026 18:03

stale, need to start over now.

@pipobscure

Copy link
Copy Markdown
Contributor Author

I rebased on main.

So we can't easily see and track the requested diff now. Unfortunate as otherwise we could review increments instead.

Apologies. I thought the “requested modus operandi “ was to keep it to a single commit. If that’s wrong then I’ll change the approach for the future.

@panva

panva commented Jul 30, 2026

Copy link
Copy Markdown
Member

Apologies. I thought the “requested modus operandi “ was to keep it to a single commit. If that’s wrong then I’ll change the approach for the future.

No worries. FYI the commit-queue can land fixup commits (autosquash), or we can apply a label to squash, or if the PR has multiple things that can/should be backported independently (e.g. part is semver-major, part isn't) we can also land with rebase.

contentIterator() (and ZipFile.stream()) must not apply the default
getMaxZipContentSize() limit the way content()/contentSync() do. That
default guards a single large buffer allocation, which the streaming path
never makes: streaming is the bounded-memory way to read arbitrarily
large members. Applying the ceiling there rejected legitimate reads of
members larger than it - including the >4 GiB streaming case in
test/pummel/test-zlib-zip-slow.js.

Output stays bounded per chunk to the declared uncompressed size, and a
caller that wants an explicit cap can still pass options.maxSize.
@pipobscure

Copy link
Copy Markdown
Contributor Author

Loving tests right now. It caught me breaking streaming when doing the sec-fixes earlier.

@targos
targos dismissed their stale review July 31, 2026 07:53

I don't have enough time

@pipobscure

Copy link
Copy Markdown
Contributor Author

Can someone trigger CI, so that we can get this over the line?

@mcollina mcollina left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

lgtm

@mcollina mcollina added the request-ci Add this label to start a Jenkins CI on a PR. label Jul 31, 2026
@github-actions github-actions Bot removed the request-ci Add this label to start a Jenkins CI on a PR. label Jul 31, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@jasnell jasnell added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-rebase Add this label to allow the Commit Queue to land a PR in several commits. labels Aug 1, 2026
@nodejs-github-bot nodejs-github-bot added commit-queue-failed An error occurred while landing this pull request using GitHub Actions. and removed commit-queue Add this label to land a pull request using GitHub Actions. labels Aug 1, 2026
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator
Commit Queue failed
- Loading data for nodejs/node/pull/64339
✔  Done loading data for nodejs/node/pull/64339
----------------------------------- PR info ------------------------------------
Title      zlib: add ZIP archive support to zlib (ZipFile,ZipBuffer,ZipEntry) (#64339)
   ⚠  Could not retrieve the email or name of the PR author's from user's GitHub profile!
Branch     pipobscure:ziparchives -> nodejs:main
Labels     zlib, semver-minor, lib / src, experimental, needs-ci, commit-queue-rebase
Commits    2
 - zlib: add ZipEntry, ZipFile, and ZipBuffer
 - zlib: do not cap ZIP streaming reads by the content-size ceiling
Committers 1
 - Philipp Dunkel <pip@pipobscure.com>
PR-URL: https://github.com/nodejs/node/pull/64339
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
------------------------------ Generated metadata ------------------------------
PR-URL: https://github.com/nodejs/node/pull/64339
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
--------------------------------------------------------------------------------
   ℹ  This PR was created on Tue, 07 Jul 2026 14:54:34 GMT
   ✔  Approvals: 4
   ✔  - Matteo Collina (@mcollina) (TSC): https://github.com/nodejs/node/pull/64339#pullrequestreview-4832884784
   ✔  - James M Snell (@jasnell) (TSC): https://github.com/nodejs/node/pull/64339#pullrequestreview-4816314636
   ✔  - Marco Ippolito (@marco-ippolito) (TSC): https://github.com/nodejs/node/pull/64339#pullrequestreview-4816360046
   ✔  - Aviv Keller (@avivkeller): https://github.com/nodejs/node/pull/64339#pullrequestreview-4833086662
   ✔  Last GitHub CI successful
   ℹ  Last Full PR CI on 2026-07-31T23:54:15Z: https://ci.nodejs.org/job/node-test-pull-request/75350/
- Querying data for job/node-test-pull-request/75350/
✔  Build data downloaded
   ✔  Last Jenkins CI successful
--------------------------------------------------------------------------------
   ✔  No git cherry-pick in progress
   ✔  No git am in progress
   ✔  No git rebase in progress
--------------------------------------------------------------------------------
- Bringing origin/main up to date...
From https://github.com/nodejs/node
 * branch                  main       -> FETCH_HEAD
✔  origin/main is now up-to-date
- Downloading patch for 64339
From https://github.com/nodejs/node
 * branch                  refs/pull/64339/merge -> FETCH_HEAD
✔  Fetched commits as 67af6d1d3917..fb49acaa84c0
--------------------------------------------------------------------------------
[main ca13b3f1fe] zlib: add ZipEntry, ZipFile, and ZipBuffer
 Author: Philipp Dunkel <pip@pipobscure.com>
 Date: Wed Jul 8 17:42:06 2026 +0200
 36 files changed, 9665 insertions(+)
 create mode 100644 lib/internal/zip.js
 create mode 100644 lib/internal/zip/archive.js
 create mode 100644 lib/internal/zip/binary.js
 create mode 100644 lib/internal/zip/buffer.js
 create mode 100644 lib/internal/zip/compression.js
 create mode 100644 lib/internal/zip/constants.js
 create mode 100644 lib/internal/zip/content-size.js
 create mode 100644 lib/internal/zip/dos.js
 create mode 100644 lib/internal/zip/entry.js
 create mode 100644 lib/internal/zip/extra-fields.js
 create mode 100644 lib/internal/zip/file.js
 create mode 100644 lib/internal/zip/fs-util.js
 create mode 100644 lib/internal/zip/header-builders.js
 create mode 100644 lib/internal/zip/headers.js
 create mode 100644 test/parallel/test-zlib-zip-coverage.js
 create mode 100644 test/parallel/test-zlib-zip-edgecases.js
 create mode 100644 test/parallel/test-zlib-zip-encoding.js
 create mode 100644 test/parallel/test-zlib-zip-experimental-warning.js
 create mode 100644 test/parallel/test-zlib-zip-files.js
 create mode 100644 test/parallel/test-zlib-zip-fuzz.js
 create mode 100644 test/parallel/test-zlib-zip-hardening.js
 create mode 100644 test/parallel/test-zlib-zip-internals.js
 create mode 100644 test/parallel/test-zlib-zip-interop.js
 create mode 100644 test/parallel/test-zlib-zip-metadata.js
 create mode 100644 test/parallel/test-zlib-zip-property.js
 create mode 100644 test/parallel/test-zlib-zip-security.js
 create mode 100644 test/parallel/test-zlib-zip-sync.js
 create mode 100644 test/parallel/test-zlib-zip-writable.js
 create mode 100644 test/parallel/test-zlib-zip-zip64.js
 create mode 100644 test/parallel/test-zlib-zip.js
 create mode 100644 test/pummel/test-zlib-zip-slow.js
[main 5f7867586e] zlib: do not cap ZIP streaming reads by the content-size ceiling
 Author: Philipp Dunkel <pip@pipobscure.com>
 Date: Thu Jul 30 21:49:20 2026 +0200
 3 files changed, 31 insertions(+), 17 deletions(-)
   ✔  Patches applied
There are 2 commits in the PR. Attempting autorebase.
(node:1608) [DEP0190] DeprecationWarning: Passing args to a child process with shell option true can lead to security vulnerabilities, as the arguments are not escaped, only concatenated.
(Use `node --trace-deprecation ...` to show where the warning was created)
Rebasing (2/4)
Executing: git node land --amend --yes
--------------------------------- New Message ----------------------------------
zlib: add ZipEntry, ZipFile, and ZipBuffer

Add ZIP archive support to the node:zlib module through three classes
and a set of helpers:

  • ZipEntry: a single archive member, with buffered reads (content()),
    bounded-memory streaming reads (contentIterator()), and
    create()/createStream() for building members.
  • ZipFile: random access to an archive backed by a file descriptor,
    reading members lazily without retaining their content and writing
    new members in place; opened with open()/openSync().
  • ZipBuffer: a zero-copy, in-memory view over an archive already held
    in a Buffer.

createZipArchive() serializes a sequence of entries into an archive
byte stream, and setMaxZipContentSize() bounds the default in-memory
decompression size. Every operation has both an asynchronous and a
synchronous form.

Signed-off-by: Philipp Dunkel <pip@pipobscure.com>
PR-URL: #64339
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>

[detached HEAD 84f7f7cde0] zlib: add ZipEntry, ZipFile, and ZipBuffer
Author: Philipp Dunkel <pip@pipobscure.com>
Date: Wed Jul 8 17:42:06 2026 +0200
36 files changed, 9665 insertions(+)
create mode 100644 lib/internal/zip.js
create mode 100644 lib/internal/zip/archive.js
create mode 100644 lib/internal/zip/binary.js
create mode 100644 lib/internal/zip/buffer.js
create mode 100644 lib/internal/zip/compression.js
create mode 100644 lib/internal/zip/constants.js
create mode 100644 lib/internal/zip/content-size.js
create mode 100644 lib/internal/zip/dos.js
create mode 100644 lib/internal/zip/entry.js
create mode 100644 lib/internal/zip/extra-fields.js
create mode 100644 lib/internal/zip/file.js
create mode 100644 lib/internal/zip/fs-util.js
create mode 100644 lib/internal/zip/header-builders.js
create mode 100644 lib/internal/zip/headers.js
create mode 100644 test/parallel/test-zlib-zip-coverage.js
create mode 100644 test/parallel/test-zlib-zip-edgecases.js
create mode 100644 test/parallel/test-zlib-zip-encoding.js
create mode 100644 test/parallel/test-zlib-zip-experimental-warning.js
create mode 100644 test/parallel/test-zlib-zip-files.js
create mode 100644 test/parallel/test-zlib-zip-fuzz.js
create mode 100644 test/parallel/test-zlib-zip-hardening.js
create mode 100644 test/parallel/test-zlib-zip-internals.js
create mode 100644 test/parallel/test-zlib-zip-interop.js
create mode 100644 test/parallel/test-zlib-zip-metadata.js
create mode 100644 test/parallel/test-zlib-zip-property.js
create mode 100644 test/parallel/test-zlib-zip-security.js
create mode 100644 test/parallel/test-zlib-zip-sync.js
create mode 100644 test/parallel/test-zlib-zip-writable.js
create mode 100644 test/parallel/test-zlib-zip-zip64.js
create mode 100644 test/parallel/test-zlib-zip.js
create mode 100644 test/pummel/test-zlib-zip-slow.js
Rebasing (3/4)
Rebasing (4/4)
Executing: git node land --amend --yes
--------------------------------- New Message ----------------------------------
zlib: do not cap ZIP streaming reads by the content-size ceiling

contentIterator() (and ZipFile.stream()) must not apply the default
getMaxZipContentSize() limit the way content()/contentSync() do. That
default guards a single large buffer allocation, which the streaming path
never makes: streaming is the bounded-memory way to read arbitrarily
large members. Applying the ceiling there rejected legitimate reads of
members larger than it - including the >4 GiB streaming case in
test/pummel/test-zlib-zip-slow.js.

Output stays bounded per chunk to the declared uncompressed size, and a
caller that wants an explicit cap can still pass options.maxSize.

PR-URL: #64339
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>

[detached HEAD 0263352ec8] zlib: do not cap ZIP streaming reads by the content-size ceiling
Author: Philipp Dunkel <pip@pipobscure.com>
Date: Thu Jul 30 21:49:20 2026 +0200
3 files changed, 31 insertions(+), 17 deletions(-)
Successfully rebased and updated refs/heads/main.

✔ 84f7f7cde0db6e7a28b448dc050482da9b25e295
✔ 0:0 no Assisted-by metadata assisted-by-is-trailer
✔ 0:0 no Co-authored-by metadata co-authored-by-is-trailer
✔ 0:0 skipping fixes-url fixes-url
✔ 0:0 blank line after title line-after-title
✔ 0:0 line-lengths are valid line-length
✔ 0:0 metadata is at end of message metadata-end
✔ 19:8 PR-URL is valid. pr-url
✔ 0:0 reviewers are valid reviewers
✔ 0:0 has valid Signed-off-by signed-off-by
✔ 0:0 valid subsystems subsystem
✔ 0:0 Title is formatted correctly. title-format
✔ 0:0 Title is <= 50 columns. title-length
✖ 0263352ec88cd7d2ade906823d950f81392037bf
✔ 0:0 no Assisted-by metadata assisted-by-is-trailer
✔ 0:0 no Co-authored-by metadata co-authored-by-is-trailer
✔ 0:0 skipping fixes-url fixes-url
✔ 0:0 blank line after title line-after-title
✖ 9:72 Line should be <= 72 columns. line-length
✔ 0:0 metadata is at end of message metadata-end
✔ 12:8 PR-URL is valid. pr-url
✔ 0:0 reviewers are valid reviewers
✖ 0:0 Commit must have a "Signed-off-by" trailer signed-off-by
✔ 0:0 valid subsystems subsystem
✔ 0:0 Title is formatted correctly. title-format
⚠ 0:50 Title should be <= 50 columns. title-length
ℹ Please fix the commit message and try again.
Please manually ammend the commit message, by running
git commit --amend
Once commit message is fixed, finish the landing command running
git node land --continue

https://github.com/nodejs/node/actions/runs/30685262905

@mcollina mcollina added commit-queue Add this label to land a pull request using GitHub Actions. commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. and removed commit-queue-failed An error occurred while landing this pull request using GitHub Actions. commit-queue-rebase Add this label to allow the Commit Queue to land a PR in several commits. labels Aug 1, 2026
@nodejs-github-bot nodejs-github-bot removed the commit-queue Add this label to land a pull request using GitHub Actions. label Aug 1, 2026
@nodejs-github-bot
nodejs-github-bot merged commit 5ba72ae into nodejs:main Aug 1, 2026
86 checks passed
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Landed in 5ba72ae

@pipobscure
pipobscure deleted the ziparchives branch August 1, 2026 15:00
aduh95 pushed a commit that referenced this pull request Aug 3, 2026
Add ZIP archive support to the node:zlib module through three classes
and a set of helpers:

- ZipEntry: a single archive member, with buffered reads (content()),
  bounded-memory streaming reads (contentIterator()), and
  create()/createStream() for building members.
- ZipFile: random access to an archive backed by a file descriptor,
  reading members lazily without retaining their content and writing
  new members in place; opened with open()/openSync().
- ZipBuffer: a zero-copy, in-memory view over an archive already held
  in a Buffer.

createZipArchive() serializes a sequence of entries into an archive
byte stream, and setMaxZipContentSize() bounds the default in-memory
decompression size. Every operation has both an asynchronous and a
synchronous form.

Signed-off-by: Philipp Dunkel <pip@pipobscure.com>
PR-URL: #64339
Reviewed-By: Matteo Collina <matteo.collina@gmail.com>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Marco Ippolito <marcoippolito54@gmail.com>
Reviewed-By: Aviv Keller <me@aviv.sh>
@aduh95 aduh95 added dont-land-on-v22.x PRs that should not land on the v22.x-staging branch and should not be released in v22.x. dont-land-on-v24.x PRs that should not land on the v24.x-staging branch and should not be released in v24.x. dont-land-on-v26.x PRs that should not land on the v26.x-staging branch and should not be released in v26.x. labels Aug 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

commit-queue-squash Add this label to instruct the Commit Queue to squash all the PR commits into the first one. dont-land-on-v22.x PRs that should not land on the v22.x-staging branch and should not be released in v22.x. dont-land-on-v24.x PRs that should not land on the v24.x-staging branch and should not be released in v24.x. dont-land-on-v26.x PRs that should not land on the v26.x-staging branch and should not be released in v26.x. experimental Issues and PRs related to experimental features. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. semver-minor PRs that contain new features and should be released in the next minor version. zlib Issues and PRs related to the zlib subsystem.

Projects

None yet

Development

Successfully merging this pull request may close these issues.