Skip to content

chore(iroh-bench): Allow configuring the number of worker threads for each endpoint in iroh-bench#3780

Merged
matheus23 merged 122 commits intofeat-multipathfrom
matheus23/more-stable-iroh-bench
Mar 30, 2026
Merged

chore(iroh-bench): Allow configuring the number of worker threads for each endpoint in iroh-bench#3780
matheus23 merged 122 commits intofeat-multipathfrom
matheus23/more-stable-iroh-bench

Conversation

@matheus23
Copy link
Copy Markdown
Member

Description

When I look at qlog files of iroh-bench runs, I can see that PATH_ACK processing is severely delayed when using a single-threaded tokio runtime for each endpoint.
This disappears when I give iroh-bench two worker threads. This allows the EndpointDriver and the ConnectionDriver to each run independently of each other, thus the endpoint driver won't be delayed when processing PATH_ACKs.
When the processing was delayed, this had an effect on the apparent RTT and in turn on congestion control.

Screenshots

Before: Note all the blue lines going in from waaaaay back in history all into one place on the left (those are the PATH_ACKs that get handled way too late):
image

After: The PATH_ACKs get handled in time, they're way more interspersed with stream frames:
image

Change checklist

  • Self-review.

@matheus23 matheus23 self-assigned this Dec 16, 2025
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Dec 16, 2025

Documentation for this PR has been generated and is available at: https://n0-computer.github.io/iroh/pr/3780/docs/iroh/

Last updated: 2026-03-30T15:43:10Z

@matheus23 matheus23 closed this Dec 16, 2025
@matheus23 matheus23 force-pushed the matheus23/more-stable-iroh-bench branch from d357e3a to 94caac0 Compare December 16, 2025 15:55
Copy link
Copy Markdown
Contributor

@flub flub left a comment

Choose a reason for hiding this comment

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

Have you considered making this a command-line option?

I can imagine testing using a single thread is still useful to make sure it still behaves well in that usecase. One day we'd like to support constrained environments...

@matheus23 matheus23 reopened this Dec 16, 2025
Copy link
Copy Markdown
Contributor

@flub flub left a comment

Choose a reason for hiding this comment

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

approving in case you want to merge without additional work

@matheus23
Copy link
Copy Markdown
Member Author

Have you considered making this a command-line option?

I have not...

I can imagine testing using a single thread is still useful to make sure it still behaves well in that usecase. One day we'd like to support constrained environments...

Yeah - I suspect that'll require some changes to quinn's pacer or sth like that?
Perhaps there's another easy fix that makes tokio choose the EndpointDriver more often more fairly? Some kind of yielding? Maybe this is related and might help? https://tokio.rs/blog/2020-04-preemption

@n0bot n0bot Bot added this to iroh Dec 16, 2025
@github-project-automation github-project-automation Bot moved this to 🏗 In progress in iroh Dec 16, 2025
matheus23 and others added 5 commits December 16, 2025 17:57
…inn re-exports (#3757)

## Description

`Incoming::retry` returns a `RetryError`, which you can turn back into a
`quinn::Incoming`. We want that `quinn::Incoming` to instead be an
`iroh::endpoint::Incoming`. This PR fixes that.

`Incoming::accept_with` takes a `quinn::ServerConfig`, however the
`quinn::ServerConfig` allows you to override the
`quinn::TransportConfig`, which we have new typed to
`QuicTransportConfig`. So, this PR new types `quinn::ServerConfig` to
`quic::ServerConfig`, and ensures that the `quinn::TransportConfig` is
set appropriately for multipath use.

This PR also explicitly comments on each quinn export and labels what
type uses that export and where it enters the public iroh API.

## Breaking Changes

`iroh`:
      - changed
- `Incoming::retry` now returns an `iroh::endpoint::RetryError`, rather
than a `quinn::RetryError`
- `Incoming::accept_with` now takes a `iroh::endpoint::ServerConfig`,
rather than a `quinn::ServerConfig`
- `iroh::endpoint::QuicTransportConfig` has no more "set" methods, those
have been moved to `iroh::endpoint::QuicTransportConfigBuilder`
- `iroh:endpoint::QuicTransportConfig::builder()` returns a default
`iroh::endpoint:: QuicTransportConfigBuilder`
     - removed  
- removed `quinn::ServerConfig` (use `iroh::endpoint::ServerConfig`)
- removed `quinn::RetryError` (use `iroh::endpoint::RetryError`)
    - added
          - added `iroh::endpoint::ServerConfigBuilder` 
          - added `iroh::endpoint::ServerConfig`
          - added `iroh::endpoint::RetryError`
          
     


## Notes & open questions

Okay. So. I impl'd all of the methods one-to-one from
`quinn::ServerConfig`, but I think there are a bunch of fields we may
want to restrict folks from messing with when they use
`Incoming::accept_with`, as currently, they can use this API to replace
our normal TlsConfig entirely.

I'm also unsure if there are any other bits in here (for example the
`quinn::ServerConfig::migrate` field) that may interfere with expected
multipath usage.

My proposal would be to either eliminate the `Incoming::accept_with`
method entirely (therefore removing the need to publically export the
`ServerConfig`), or reduce `ServerConfig` in scope so that only fields
that will not interfere with "business as usual" for multipath/iroh
remain.



## Change checklist
<!-- Remove any that are not relevant. -->
- [x] Self-review.
- [x] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [x] All breaking changes documented.

---------

Co-authored-by: “ramfox” <“kasey@n0.computer”>
includes the needed changes for netwatch
## Description

Filters down the tests on a PR to not run redundant tests. Main still
runs the full suite for perf measurements and sanity check.

Changed the default config for linux to use `lld` as the linker of
choice to speed up CI further.

Drops netsim CI time from 6:59 on the last merged PR to 5:16 (with no
prior cache at all) & 4:40 on 2nd run.

## Breaking Changes

<!-- Optional, if there are any breaking changes document them,
including how to migrate older code. -->

## Notes & open questions

<!-- Any notes, remarks or open questions you have to make about the PR.
-->

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)
@matheus23 matheus23 changed the title chore(iroh-bench): Use two worker threads for each endpoint in iroh-bench chore(iroh-bench): Allow configuring the number of worker threads for each endpoint in iroh-bench Dec 22, 2025
flub and others added 12 commits December 23, 2025 11:15
## Description

The `quinn_proto::coding::Codec` API changed to be split in `Encodable`
and `Decodable`. That broke the minimal versions checks somehow.

Fixed by updating things to use the latest quinn from main and adjusting
to the new API.

## Breaking Changes

Technically this is exported on the public API for us. Though I think
that's an error. Plus I don't think this has been published yet.

## Notes & open questions

I'll file a separate PR to remove these from the public API.

## Change checklist

- [x] Self-review.
- [x] All breaking changes documented.
- [x] List all breaking changes in the above "Breaking Changes" section.
## Description

Based on #3582, improves and fixes the description further to no
longer refer to previous signatures.

## Breaking Changes

n/a

## Notes & open questions

Thanks to @matthiasbeyer for starting this.

## Change checklist

- [x] Self-review.
- [x] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.

---------

Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
Co-authored-by: Matthias Beyer <mail@beyermatthias.de>
Co-authored-by: ramfox <kasey@n0.computer>
… DNS-over-HTTPS (#3745)

## Description

Our DoH support in iroh-dns-server is broken: #3737 

We didn't have any tests for DoH before.

This adds end-to-end tests that test resolving DoH records via HTTP and
HTTPS via reqwest, and via hickory-resolver.

While working on this, I realized that we currently do not change the
storage path in tests, which is bad can can lead to very unexpected
behavior when running tests concurrently. This also fixes that by
allowing to pass in the storage path.

## Breaking Changes

Added:

`iroh_dns_server::config::Config` has a new field `data_dir:
Option<PathBuf>` to optionally set the storage location explicitly

Changed:
`iroh_dns:server::config::Config` methods `data_dir()` and
`signed_packet_store_path()` now have a `&self` argument
`iroh_dns_server::http::HttpServer::spawn` now takes an additional
argument `cert_cache_dir: PathBuf`.

## Change checklist
<!-- Remove any that are not relevant. -->
- [x] Self-review.
- [x] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [x] Tests if relevant.
- [x] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)
## Description

Some of the types exported are encodable and decodable, but we don't
need users to be able to encode and decode themselves. So let's hide
this functionality.

## Breaking Changes

Users can no longer encode and decode TransportErrorCode and StreamId
to/from the QUIC wire format.

## Notes & open questions

n/a

## Change checklist
<!-- Remove any that are not relevant. -->
- [x] Self-review.
- [x] All breaking changes documented.
- [x] List all breaking changes in the above "Breaking Changes" section.
## Description

Fix doc link, the crate has moved.

## Breaking Changes

n/a

## Notes & open questions

n/a

## Change checklist

- [x] Self-review.
- [x] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
Bumps [netdev](https://github.com/shellrow/netdev) from 0.39.0 to
0.40.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/shellrow/netdev/releases">netdev's
releases</a>.</em></p>
<blockquote>
<h2>v0.40.0</h2>
<h2>What's Changed</h2>
<ul>
<li>perf(macos): speed up interface enumeration by <a
href="https://github.com/shellrow"><code>@​shellrow</code></a> in <a
href="https://redirect.github.com/shellrow/netdev/pull/144">shellrow/netdev#144</a></li>
<li>feat(ios): improve interface type detection by <a
href="https://github.com/shellrow"><code>@​shellrow</code></a> in <a
href="https://redirect.github.com/shellrow/netdev/pull/145">shellrow/netdev#145</a></li>
<li>feat(android): improve interface type detection by <a
href="https://github.com/shellrow"><code>@​shellrow</code></a> in <a
href="https://redirect.github.com/shellrow/netdev/pull/146">shellrow/netdev#146</a></li>
<li>Release v0.40.0 by <a
href="https://github.com/shellrow"><code>@​shellrow</code></a> in <a
href="https://redirect.github.com/shellrow/netdev/pull/147">shellrow/netdev#147</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/shellrow/netdev/compare/v0.39.0...v0.40.0">https://github.com/shellrow/netdev/compare/v0.39.0...v0.40.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/shellrow/netdev/commit/9a1b6f58bf00f55fbdbde1c1b64d8ad3ee94d235"><code>9a1b6f5</code></a>
Merge pull request <a
href="https://redirect.github.com/shellrow/netdev/issues/147">#147</a>
from shellrow/release</li>
<li><a
href="https://github.com/shellrow/netdev/commit/b8004527c3afac9ea19893126e27d9fda33ebeca"><code>b800452</code></a>
Bump version to 0.40.0</li>
<li><a
href="https://github.com/shellrow/netdev/commit/a884bd1b303db705680b680d6a5e7ec6c28245a0"><code>a884bd1</code></a>
Merge pull request <a
href="https://redirect.github.com/shellrow/netdev/issues/146">#146</a>
from shellrow/feat-android-interfaces</li>
<li><a
href="https://github.com/shellrow/netdev/commit/6e96dd0ba095d3d922ebe2e9d8cb2a85016f0107"><code>6e96dd0</code></a>
refine(android): improve interface type detection</li>
<li><a
href="https://github.com/shellrow/netdev/commit/168bdf29da3d8da2cd8c803657d99659abedf222"><code>168bdf2</code></a>
feat(android): improve interface type detection</li>
<li><a
href="https://github.com/shellrow/netdev/commit/18a16afb616f3ef21c1437da0ad403f9305c6b0f"><code>18a16af</code></a>
Merge pull request <a
href="https://redirect.github.com/shellrow/netdev/issues/145">#145</a>
from shellrow/feat-ios-interfaces</li>
<li><a
href="https://github.com/shellrow/netdev/commit/6d182d43f3d1a31ecf254f390ae41afef782de85"><code>6d182d4</code></a>
Format code with cargo fmt</li>
<li><a
href="https://github.com/shellrow/netdev/commit/aade6153f80f5be405b101783e4a04ecbb30737a"><code>aade615</code></a>
feat(ios): improve interface type detection</li>
<li><a
href="https://github.com/shellrow/netdev/commit/0174b8e358ec380e59b75031ee219f9a34c83df5"><code>0174b8e</code></a>
Merge pull request <a
href="https://redirect.github.com/shellrow/netdev/issues/144">#144</a>
from shellrow/perf-macos-interfaces</li>
<li><a
href="https://github.com/shellrow/netdev/commit/37a3d0cb282d685d1c58e21d67de5ac4599a5311"><code>37a3d0c</code></a>
ios: update interface extras lookup</li>
<li>Additional commits viewable in <a
href="https://github.com/shellrow/netdev/compare/v0.39.0...v0.40.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=netdev&package-manager=cargo&previous-version=0.39.0&new-version=0.40.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: dignifiedquire <me@dignifiedquire.com>
Bumps the github-actions group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `5` | `6` |
| [actions/cache](https://github.com/actions/cache) | `4` | `5` |
|
[cargo-bins/cargo-binstall](https://github.com/cargo-bins/cargo-binstall)
| `1.16.3` | `1.16.5` |
|
[actions/download-artifact](https://github.com/actions/download-artifact)
| `6` | `7` |
| [actions/upload-artifact](https://github.com/actions/upload-artifact)
| `5` | `6` |

Updates `actions/checkout` from 5 to 6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>v6-beta by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2298">actions/checkout#2298</a></li>
<li>update readme/changelog for v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2311">actions/checkout#2311</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5.0.0...v6.0.0">https://github.com/actions/checkout/compare/v5.0.0...v6.0.0</a></p>
<h2>v6-beta</h2>
<h2>What's Changed</h2>
<p>Updated persist-credentials to store the credentials under
<code>$RUNNER_TEMP</code> instead of directly in the local git
config.</p>
<p>This requires a minimum Actions Runner version of <a
href="https://github.com/actions/runner/releases/tag/v2.329.0">v2.329.0</a>
to access the persisted credentials for <a
href="https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action">Docker
container action</a> scenarios.</p>
<h2>v5.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v5...v5.0.1">https://github.com/actions/checkout/compare/v5...v5.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/blob/main/CHANGELOG.md">actions/checkout's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
<h2>v6.0.0</h2>
<ul>
<li>Persist creds to a separate file by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2286">actions/checkout#2286</a></li>
<li>Update README to include Node.js 24 support details and requirements
by <a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2248">actions/checkout#2248</a></li>
</ul>
<h2>v5.0.1</h2>
<ul>
<li>Port v6 cleanup to v5 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2301">actions/checkout#2301</a></li>
</ul>
<h2>v5.0.0</h2>
<ul>
<li>Update actions checkout to use node 24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2226">actions/checkout#2226</a></li>
</ul>
<h2>v4.3.1</h2>
<ul>
<li>Port v6 cleanup to v4 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2305">actions/checkout#2305</a></li>
</ul>
<h2>v4.3.0</h2>
<ul>
<li>docs: update README.md by <a
href="https://github.com/motss"><code>@​motss</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1971">actions/checkout#1971</a></li>
<li>Add internal repos for checking out multiple repositories by <a
href="https://github.com/mouismail"><code>@​mouismail</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1977">actions/checkout#1977</a></li>
<li>Documentation update - add recommended permissions to Readme by <a
href="https://github.com/benwells"><code>@​benwells</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2043">actions/checkout#2043</a></li>
<li>Adjust positioning of user email note and permissions heading by <a
href="https://github.com/joshmgross"><code>@​joshmgross</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2044">actions/checkout#2044</a></li>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2194">actions/checkout#2194</a></li>
<li>Update CODEOWNERS for actions by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2224">actions/checkout#2224</a></li>
<li>Update package dependencies by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2236">actions/checkout#2236</a></li>
</ul>
<h2>v4.2.2</h2>
<ul>
<li><code>url-helper.ts</code> now leverages well-known environment
variables by <a href="https://github.com/jww3"><code>@​jww3</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/1941">actions/checkout#1941</a></li>
<li>Expand unit test coverage for <code>isGhes</code> by <a
href="https://github.com/jww3"><code>@​jww3</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1946">actions/checkout#1946</a></li>
</ul>
<h2>v4.2.1</h2>
<ul>
<li>Check out other refs/* by commit if provided, fall back to ref by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1924">actions/checkout#1924</a></li>
</ul>
<h2>v4.2.0</h2>
<ul>
<li>Add Ref and Commit outputs by <a
href="https://github.com/lucacome"><code>@​lucacome</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1180">actions/checkout#1180</a></li>
<li>Dependency updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>- <a
href="https://redirect.github.com/actions/checkout/pull/1777">actions/checkout#1777</a>,
<a
href="https://redirect.github.com/actions/checkout/pull/1872">actions/checkout#1872</a></li>
</ul>
<h2>v4.1.7</h2>
<ul>
<li>Bump the minor-npm-dependencies group across 1 directory with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1739">actions/checkout#1739</a></li>
<li>Bump actions/checkout from 3 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1697">actions/checkout#1697</a></li>
<li>Check out other refs/* by commit by <a
href="https://github.com/orhantoy"><code>@​orhantoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1774">actions/checkout#1774</a></li>
<li>Pin actions/checkout's own workflows to a known, good, stable
version. by <a href="https://github.com/jww3"><code>@​jww3</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1776">actions/checkout#1776</a></li>
</ul>
<h2>v4.1.6</h2>
<ul>
<li>Check platform to set archive extension appropriately by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1732">actions/checkout#1732</a></li>
</ul>
<h2>v4.1.5</h2>
<ul>
<li>Update NPM dependencies by <a
href="https://github.com/cory-miller"><code>@​cory-miller</code></a> in
<a
href="https://redirect.github.com/actions/checkout/pull/1703">actions/checkout#1703</a></li>
<li>Bump github/codeql-action from 2 to 3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1694">actions/checkout#1694</a></li>
<li>Bump actions/setup-node from 1 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1696">actions/checkout#1696</a></li>
<li>Bump actions/upload-artifact from 2 to 4 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/1695">actions/checkout#1695</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/checkout/commit/8e8c483db84b4bee98b60c0593521ed34d9990e8"><code>8e8c483</code></a>
Clarify v6 README (<a
href="https://redirect.github.com/actions/checkout/issues/2328">#2328</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/033fa0dc0b82693d8986f1016a0ec2c5e7d9cbb1"><code>033fa0d</code></a>
Add worktree support for persist-credentials includeIf (<a
href="https://redirect.github.com/actions/checkout/issues/2327">#2327</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/c2d88d3ecc89a9ef08eebf45d9637801dcee7eb5"><code>c2d88d3</code></a>
Update all references from v5 and v4 to v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2314">#2314</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/1af3b93b6815bc44a9784bd300feb67ff0d1eeb3"><code>1af3b93</code></a>
update readme/changelog for v6 (<a
href="https://redirect.github.com/actions/checkout/issues/2311">#2311</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/71cf2267d89c5cb81562390fa70a37fa40b1305e"><code>71cf226</code></a>
v6-beta (<a
href="https://redirect.github.com/actions/checkout/issues/2298">#2298</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/069c6959146423d11cd0184e6accf28f9d45f06e"><code>069c695</code></a>
Persist creds to a separate file (<a
href="https://redirect.github.com/actions/checkout/issues/2286">#2286</a>)</li>
<li><a
href="https://github.com/actions/checkout/commit/ff7abcd0c3c05ccf6adc123a8cd1fd4fb30fb493"><code>ff7abcd</code></a>
Update README to include Node.js 24 support details and requirements (<a
href="https://redirect.github.com/actions/checkout/issues/2248">#2248</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/cache` from 4 to 5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/releases">actions/cache's
releases</a>.</em></p>
<blockquote>
<h2>v5.0.0</h2>
<blockquote>
<p>[!IMPORTANT]
<strong><code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of
<code>2.327.1</code>.</strong></p>
<p>If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<hr />
<h2>What's Changed</h2>
<ul>
<li>Upgrade to use node24 by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1630">actions/cache#1630</a></li>
<li>Prepare v5.0.0 release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1684">actions/cache#1684</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v4.3.0...v5.0.0">https://github.com/actions/cache/compare/v4.3.0...v5.0.0</a></p>
<h2>v4.3.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Add note on runner versions by <a
href="https://github.com/GhadimiR"><code>@​GhadimiR</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1642">actions/cache#1642</a></li>
<li>Prepare <code>v4.3.0</code> release by <a
href="https://github.com/Link"><code>@​Link</code></a>- in <a
href="https://redirect.github.com/actions/cache/pull/1655">actions/cache#1655</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/GhadimiR"><code>@​GhadimiR</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/cache/pull/1642">actions/cache#1642</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v4...v4.3.0">https://github.com/actions/cache/compare/v4...v4.3.0</a></p>
<h2>v4.2.4</h2>
<h2>What's Changed</h2>
<ul>
<li>Update README.md by <a
href="https://github.com/nebuk89"><code>@​nebuk89</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li>
<li>Upgrade <code>@actions/cache</code> to <code>4.0.5</code> and move
<code>@protobuf-ts/plugin</code> to dev depdencies by <a
href="https://github.com/Link"><code>@​Link</code></a>- in <a
href="https://redirect.github.com/actions/cache/pull/1634">actions/cache#1634</a></li>
<li>Prepare release <code>4.2.4</code> by <a
href="https://github.com/Link"><code>@​Link</code></a>- in <a
href="https://redirect.github.com/actions/cache/pull/1636">actions/cache#1636</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/nebuk89"><code>@​nebuk89</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/cache/pull/1620">actions/cache#1620</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v4...v4.2.4">https://github.com/actions/cache/compare/v4...v4.2.4</a></p>
<h2>v4.2.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Update to use <code>@​actions/cache</code> 4.0.3 package &amp;
prepare for new release by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/cache/pull/1577">actions/cache#1577</a>
(SAS tokens for cache entries are now masked in debug logs)</li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/cache/pull/1577">actions/cache#1577</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/cache/compare/v4.2.2...v4.2.3">https://github.com/actions/cache/compare/v4.2.2...v4.2.3</a></p>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/actions/cache/blob/main/RELEASES.md">actions/cache's
changelog</a>.</em></p>
<blockquote>
<h1>Releases</h1>
<h2>Changelog</h2>
<h3>5.0.1</h3>
<ul>
<li>Update <code>@azure/storage-blob</code> to <code>^12.29.1</code> via
<code>@actions/cache@5.0.1</code> <a
href="https://redirect.github.com/actions/cache/pull/1685">#1685</a></li>
</ul>
<h3>5.0.0</h3>
<blockquote>
<p>[!IMPORTANT]
<code>actions/cache@v5</code> runs on the Node.js 24 runtime and
requires a minimum Actions Runner version of <code>2.327.1</code>.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>4.3.0</h3>
<ul>
<li>Bump <code>@actions/cache</code> to <a
href="https://redirect.github.com/actions/toolkit/pull/2132">v4.1.0</a></li>
</ul>
<h3>4.2.4</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.5</li>
</ul>
<h3>4.2.3</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.3 (obfuscates SAS token in
debug logs for cache entries)</li>
</ul>
<h3>4.2.2</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.2</li>
</ul>
<h3>4.2.1</h3>
<ul>
<li>Bump <code>@actions/cache</code> to v4.0.1</li>
</ul>
<h3>4.2.0</h3>
<p>TLDR; The cache backend service has been rewritten from the ground up
for improved performance and reliability. <a
href="https://github.com/actions/cache">actions/cache</a> now integrates
with the new cache service (v2) APIs.</p>
<p>The new service will gradually roll out as of <strong>February 1st,
2025</strong>. The legacy service will also be sunset on the same date.
Changes in these release are <strong>fully backward
compatible</strong>.</p>
<p><strong>We are deprecating some versions of this action</strong>. We
recommend upgrading to version <code>v4</code> or <code>v3</code> as
soon as possible before <strong>February 1st, 2025.</strong> (Upgrade
instructions below).</p>
<p>If you are using pinned SHAs, please use the SHAs of versions
<code>v4.2.0</code> or <code>v3.4.0</code></p>
<p>If you do not upgrade, all workflow runs using any of the deprecated
<a href="https://github.com/actions/cache">actions/cache</a> will
fail.</p>
<p>Upgrading to the recommended versions will not break your
workflows.</p>
<h3>4.1.2</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/cache/commit/9255dc7a253b0ccc959486e2bca901246202afeb"><code>9255dc7</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1686">#1686</a>
from actions/cache-v5.0.1-release</li>
<li><a
href="https://github.com/actions/cache/commit/8ff5423e8b66eacab4e638ee52abbd2cb831366a"><code>8ff5423</code></a>
chore: release v5.0.1</li>
<li><a
href="https://github.com/actions/cache/commit/9233019a152bc768059ac1768b8e4403b5da16c1"><code>9233019</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1685">#1685</a>
from salmanmkc/node24-storage-blob-fix</li>
<li><a
href="https://github.com/actions/cache/commit/b975f2bb844529e1063ad882c609b224bcd66eb6"><code>b975f2b</code></a>
fix: add peer property to package-lock.json for dependencies</li>
<li><a
href="https://github.com/actions/cache/commit/d0a0e1813491d01d574c95f8d189f62622bbb2ae"><code>d0a0e18</code></a>
fix: update license files for <code>@​actions/cache</code>,
fast-xml-parser, and strnum</li>
<li><a
href="https://github.com/actions/cache/commit/74de208dcfcbe85c0e7154e7b17e4105fe2554ff"><code>74de208</code></a>
fix: update <code>@​actions/cache</code> to ^5.0.1 for Node.js 24
punycode fix</li>
<li><a
href="https://github.com/actions/cache/commit/ac7f1152ead02e89c14b5456d14ab17591e74cfb"><code>ac7f115</code></a>
peer</li>
<li><a
href="https://github.com/actions/cache/commit/b0f846b50b6061d7a2ca6f1a2fea61d4a65d1a16"><code>b0f846b</code></a>
fix: update <code>@​actions/cache</code> with storage-blob fix for
Node.js 24 punycode depr...</li>
<li><a
href="https://github.com/actions/cache/commit/a7833574556fa59680c1b7cb190c1735db73ebf0"><code>a783357</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/cache/issues/1684">#1684</a>
from actions/prepare-cache-v5-release</li>
<li><a
href="https://github.com/actions/cache/commit/3bb0d78750a39cefce0c2b5a0a9801052b4359ad"><code>3bb0d78</code></a>
docs: highlight v5 runner requirement in releases</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/cache/compare/v4...v5">compare
view</a></li>
</ul>
</details>
<br />

Updates `cargo-bins/cargo-binstall` from 1.16.3 to 1.16.5
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/cargo-bins/cargo-binstall/releases">cargo-bins/cargo-binstall's
releases</a>.</em></p>
<blockquote>
<h2>v1.16.5</h2>
<p><em>Binstall is a tool to fetch and install Rust-based executables as
binaries. It aims to be a drop-in replacement for <code>cargo
install</code> in most cases. Install it today with <code>cargo install
cargo-binstall</code>, from the binaries below, or if you already have
it, upgrade with <code>cargo binstall cargo-binstall</code>.</em></p>
<h4>In this release:</h4>
<ul>
<li>Fix crates-io registry not recognised (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2395">#2395</a>
<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2401">#2401</a>)</li>
<li>Fix docs-rs compilation (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2402">#2402</a>)</li>
</ul>
<h4>Other changes:</h4>
<ul>
<li>Upgrade dependencies</li>
</ul>
<h2>v1.16.4</h2>
<p><em>Binstall is a tool to fetch and install Rust-based executables as
binaries. It aims to be a drop-in replacement for <code>cargo
install</code> in most cases. Install it today with <code>cargo install
cargo-binstall</code>, from the binaries below, or if you already have
it, upgrade with <code>cargo binstall cargo-binstall</code>.</em></p>
<h4>In this release:</h4>
<ul>
<li>Upgrade dependencies (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2392">#2392</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/4a9028576ed64318f7b24193a62695e96dcbe015"><code>4a90285</code></a>
release: cargo-binstall v1.16.5 (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2407">#2407</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/2fa11566ebef36ea34e78ff0c560ac7133ab58d6"><code>2fa1156</code></a>
chore: release (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2406">#2406</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/f4380d18833421dc9bb2c9a075fe74be4b1392bb"><code>f4380d1</code></a>
dep: Upgrade transitive dependencies (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2405">#2405</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/8a31585974179d41606736ad6d9cd6c1bab413b4"><code>8a31585</code></a>
chore: release (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2403">#2403</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/2bbe0125097e55a26a8bfd366894fecb08c0f708"><code>2bbe012</code></a>
build(deps): bump toml_edit from 0.23.10+spec-1.0.0 to 0.24.0+spec-1.1.0
in t...</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/c85f0eeb20318afaf27164c73f5411082b5b8675"><code>c85f0ee</code></a>
Replace doc_auto_cfg with doc_cfg (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2402">#2402</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/6e16089c9f88df24ded7d334e1fc38a9c5edd85d"><code>6e16089</code></a>
dep: Upgrade transitive dependencies (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2400">#2400</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/5bb75ba0d7a89bf68478d464171186169aa703c5"><code>5bb75ba</code></a>
Fix crates-io registry not recognised (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2401">#2401</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/38698777d06b972c96c419d2a0c3772fdf92e4b8"><code>3869877</code></a>
build(deps): bump actions/upload-artifact from 5 to 6 (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2396">#2396</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/95b608e786c2e658e3548136885dbb728145d4ec"><code>95b608e</code></a>
build(deps): bump actions/download-artifact from 6 to 7 (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2397">#2397</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/cargo-bins/cargo-binstall/compare/v1.16.3...v1.16.5">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/download-artifact` from 6 to 7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/download-artifact/releases">actions/download-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>v7 - What's new</h2>
<blockquote>
<p>[!IMPORTANT]
actions/download-artifact@v7 now runs on Node.js 24 (<code>runs.using:
node24</code>) and requires a minimum Actions Runner version of 2.327.1.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>Node.js 24</h3>
<p>This release updates the runtime to Node.js 24. v6 had preliminary
support for Node 24, however this action was by default still running on
Node.js 20. Now this action by default will run on Node.js 24.</p>
<h2>What's Changed</h2>
<ul>
<li>Update GHES guidance to include reference to Node 20 version by <a
href="https://github.com/patrikpolyak"><code>@​patrikpolyak</code></a>
in <a
href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li>
<li>Download Artifact Node24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li>
<li>fix: update <code>@​actions/artifact</code> to fix Node.js 24
punycode deprecation by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/451">actions/download-artifact#451</a></li>
<li>prepare release v7.0.0 for Node.js 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/download-artifact/pull/452">actions/download-artifact#452</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/patrikpolyak"><code>@​patrikpolyak</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/download-artifact/pull/440">actions/download-artifact#440</a></li>
<li><a href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/download-artifact/pull/415">actions/download-artifact#415</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0">https://github.com/actions/download-artifact/compare/v6.0.0...v7.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/download-artifact/commit/37930b1c2abaa49bbe596cd826c3c89aef350131"><code>37930b1</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/452">#452</a>
from actions/download-artifact-v7-release</li>
<li><a
href="https://github.com/actions/download-artifact/commit/72582b9e0acd370909e83fa4a1fd0fca3ad452d8"><code>72582b9</code></a>
doc: update readme</li>
<li><a
href="https://github.com/actions/download-artifact/commit/0d2ec9d4cbcefe257d822f108de2a1f15f8da9f6"><code>0d2ec9d</code></a>
chore: release v7.0.0 for Node.js 24 support</li>
<li><a
href="https://github.com/actions/download-artifact/commit/fd7ae8fda6dc16277a9ffbc91cdb0eedf156e912"><code>fd7ae8f</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/download-artifact/issues/451">#451</a>
from actions/fix-storage-blob</li>
<li><a
href="https://github.com/actions/download-artifact/commit/d484700543354b15886d6a52910cf61b7f1d2b27"><code>d484700</code></a>
chore: restore minimatch.dep.yml license file</li>
<li><a
href="https://github.com/actions/download-artifact/commit/03a808050efe42bb6ad85281890afd4e4546672c"><code>03a8080</code></a>
chore: remove obsolete dependency license files</li>
<li><a
href="https://github.com/actions/download-artifact/commit/56fe6d904b0968950f8b68ea17774c54973ed5e2"><code>56fe6d9</code></a>
chore: update <code>@​actions/artifact</code> license file to 5.0.1</li>
<li><a
href="https://github.com/actions/download-artifact/commit/8e3ebc4ab4d2e095e5eb44ba1a4a53b6b03976ad"><code>8e3ebc4</code></a>
chore: update package-lock.json with <code>@​actions/artifact</code><a
href="https://github.com/5"><code>@​5</code></a>.0.1</li>
<li><a
href="https://github.com/actions/download-artifact/commit/1e3c4b4d4906c98ab57453c24efefdf16c078044"><code>1e3c4b4</code></a>
fix: update <code>@​actions/artifact</code> to ^5.0.0 for Node.js 24
punycode fix</li>
<li><a
href="https://github.com/actions/download-artifact/commit/458627d354794c71bc386c8d5839d20b5885fe2a"><code>458627d</code></a>
chore: use local <code>@​actions/artifact</code> package for Node.js 24
testing</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/download-artifact/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/upload-artifact` from 5 to 6
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/upload-artifact/releases">actions/upload-artifact's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0</h2>
<h2>v6 - What's new</h2>
<blockquote>
<p>[!IMPORTANT]
actions/upload-artifact@v6 now runs on Node.js 24 (<code>runs.using:
node24</code>) and requires a minimum Actions Runner version of 2.327.1.
If you are using self-hosted runners, ensure they are updated before
upgrading.</p>
</blockquote>
<h3>Node.js 24</h3>
<p>This release updates the runtime to Node.js 24. v5 had preliminary
support for Node.js 24, however this action was by default still running
on Node.js 20. Now this action by default will run on Node.js 24.</p>
<h2>What's Changed</h2>
<ul>
<li>Upload Artifact Node 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/719">actions/upload-artifact#719</a></li>
<li>fix: update <code>@​actions/artifact</code> for Node.js 24 punycode
deprecation by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/744">actions/upload-artifact#744</a></li>
<li>prepare release v6.0.0 for Node.js 24 support by <a
href="https://github.com/salmanmkc"><code>@​salmanmkc</code></a> in <a
href="https://redirect.github.com/actions/upload-artifact/pull/745">actions/upload-artifact#745</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0">https://github.com/actions/upload-artifact/compare/v5.0.0...v6.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/upload-artifact/commit/b7c566a772e6b6bfb58ed0dc250532a479d7789f"><code>b7c566a</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/745">#745</a>
from actions/upload-artifact-v6-release</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/e516bc8500aaf3d07d591fcd4ae6ab5f9c391d5b"><code>e516bc8</code></a>
docs: correct description of Node.js 24 support in README</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/ddc45ed9bca9b38dbd643978d88e3981cdc91415"><code>ddc45ed</code></a>
docs: update README to correct action name for Node.js 24 support</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/615b319bd27bb32c3d64dca6b6ed6974d5fbe653"><code>615b319</code></a>
chore: release v6.0.0 for Node.js 24 support</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/017748b48f8610ca8e6af1222f4a618e84a9c703"><code>017748b</code></a>
Merge pull request <a
href="https://redirect.github.com/actions/upload-artifact/issues/744">#744</a>
from actions/fix-storage-blob</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/38d4c7997f5510fcc41fc4aae2a6b97becdbe7fc"><code>38d4c79</code></a>
chore: rebuild dist</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/7d27270e0cfd253e666c44abac0711308d2d042f"><code>7d27270</code></a>
chore: add missing license cache files for <code>@​actions/core</code>,
<code>@​actions/io</code>, and mi...</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/5f643d3c9475505ccaf26d686ffbfb71a8387261"><code>5f643d3</code></a>
chore: update license files for <code>@​actions/artifact</code><a
href="https://github.com/5"><code>@​5</code></a>.0.1 dependencies</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/1df1684032c88614064493e1a0478fcb3583e1d0"><code>1df1684</code></a>
chore: update package-lock.json with <code>@​actions/artifact</code><a
href="https://github.com/5"><code>@​5</code></a>.0.1</li>
<li><a
href="https://github.com/actions/upload-artifact/commit/b5b1a918401ee270935b6b1d857ae66c85f3be6f"><code>b5b1a91</code></a>
fix: update <code>@​actions/artifact</code> to ^5.0.0 for Node.js 24
punycode fix</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/upload-artifact/compare/v5...v6">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
## Description

[`rustls-pemfile` is
unmaintained](https://rustsec.org/advisories/RUSTSEC-2025-0134).

This removes our direct dependencies of rustls-pemfile by replacing with
equivalents via `rustls-pki-types`.

Also updates downstream dependencies to versions that no longer depend
on `rustls-pemfile`:

* Update `axum-server` to `0.8`
* Update `tokio-rustls-acme` to `0.9` (which has
n0-computer/tokio-rustls-acme#37)
* Update
[`rustls-cert-file-reader`](https://github.com/MOZGIII/rustls-cert-utils/blob/master/crates/rustls-cert-file-reader/)
to `0.4.2`

Fixes #3746

## Breaking Changes

<!-- Optional, if there are any breaking changes document them,
including how to migrate older code. -->

## Notes & open questions

<!-- Any notes, remarks or open questions you have to make about the PR.
-->

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)
- remove unused `instant` dep
- temporarily ignore the `lru@0.13` issue, blocked on
pubky/pkarr#197
- remove bincode dependency
- update lru to `0.16.3`
rklaehn and others added 19 commits March 13, 2026 13:00
## Description

Remove special fast path for hickory resolver

The downside is that we have 1 more box for each lookup_ipv6 or
lookup_ipv4, but I doubt that it matters. These are network ops, maybe
cache hits, but in any case much more heavyweight than a boxed future.

The upside is that hickory will be easier to feature gate later, which
we need for embedded. And it's less code.

Rationale for this: hickory is really nasty on embedded. It requires
giant (for embedded) stack sizes and also is a big dep. We need it for
address_discovery_dns, but there is an alternative for that: just use
pkarr for both put and get.

If we don't have a default dep on hickory we can implement a simple dns
resolver that just uses getaddrinfo. It won't work for TXT records, but
we don't need them for the core functionality of doing just plain A or
AAAA requests to figure out relay ip addrs.

## Breaking Changes

None

## Notes & open questions

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)
Bumps [strum](https://github.com/Peternator7/strum) from 0.27.2 to
0.28.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/Peternator7/strum/blob/master/CHANGELOG.md">strum's
changelog</a>.</em></p>
<blockquote>
<h2>0.28.0</h2>
<ul>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/461">#461</a>:
Allow any kind of passthrough attributes on
<code>EnumDiscriminants</code>.</p>
<ul>
<li>Previously only list-style attributes (e.g.
<code>#[strum_discriminants(derive(...))]</code>) were supported. Now
path-only
(e.g. <code>#[strum_discriminants(non_exhaustive)]</code>) and
name/value (e.g. <code>#[strum_discriminants(doc =
&quot;foo&quot;)]</code>)
attributes are also supported.</li>
</ul>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/462">#462</a>:
Add missing <code>#[automatically_derived]</code> to generated impls not
covered by <a
href="https://redirect.github.com/Peternator7/strum/pull/444">#444</a>.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/466">#466</a>:
Bump MSRV to 1.71, required to keep up with updated <code>syn</code> and
<code>windows-sys</code> dependencies. This is a breaking change if
you're on an old version of rust.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/469">#469</a>:
Use absolute paths in generated proc macro code to avoid
potential name conflicts.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/465">#465</a>:
Upgrade <code>phf</code> dependency to v0.13.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/473">#473</a>:
Fix <code>cargo fmt</code> / <code>clippy</code> issues and add GitHub
Actions CI.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/477">#477</a>:
<code>strum::ParseError</code> now implements
<code>core::fmt::Display</code> instead
<code>std::fmt::Display</code> to make it <code>#[no_std]</code>
compatible. Note the <code>Error</code> trait wasn't available in core
until <code>1.81</code>
so <code>strum::ParseError</code> still only implements that in std.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/476">#476</a>:
<strong>Breaking Change</strong> - <code>EnumString</code> now
implements <code>From&lt;&amp;str&gt;</code>
(infallible) instead of <code>TryFrom&lt;&amp;str&gt;</code> when the
enum has a <code>#[strum(default)]</code> variant. This more accurately
reflects that parsing cannot fail in that case. If you need the old
<code>TryFrom</code> behavior, you can opt back in using
<code>parse_error_ty</code> and <code>parse_error_fn</code>:</p>
<pre lang="rust"><code>#[derive(EnumString)]
#[strum(parse_error_ty = strum::ParseError, parse_error_fn =
make_error)]
pub enum Color {
    Red,
    #[strum(default)]
    Other(String),
}
<p>fn make_error(x: &amp;str) -&gt; strum::ParseError {
strum::ParseError::VariantNotFound
}
</code></pre></p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/431">#431</a>:
Fix bug where <code>EnumString</code> ignored the
<code>parse_err_ty</code>
attribute when the enum had a <code>#[strum(default)]</code>
variant.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/Peternator7/strum/pull/474">#474</a>:
EnumDiscriminants will now copy <code>default</code> over from the
original enum to the Discriminant enum.</p>
<pre lang="rust"><code>#[derive(Debug, Default, EnumDiscriminants)]
#[strum_discriminants(derive(Default))] // &lt;- Remove this in 0.28.
enum MyEnum {
    #[default] // &lt;- Will be the #[default] on the MyEnumDiscriminant
    #[strum_discriminants(default)] // &lt;- Remove this in 0.28
    Variant0,
    Variant1 { a: NonDefault },
}
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/Peternator7/strum/commit/7376771128834d28bb9beba5c39846cba62e71ec"><code>7376771</code></a>
Peternator7/0.28 (<a
href="https://redirect.github.com/Peternator7/strum/issues/475">#475</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/26e63cd964a2e364331a5dd977d589bb9f649d8c"><code>26e63cd</code></a>
Display exists in core (<a
href="https://redirect.github.com/Peternator7/strum/issues/477">#477</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/9334c728eedaa8a992d1388a8f4564bbccad1934"><code>9334c72</code></a>
Make TryFrom and FromStr infallible if there's a default (<a
href="https://redirect.github.com/Peternator7/strum/issues/476">#476</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/0ccbbf823c16e827afc263182cd55e99e3b2a52e"><code>0ccbbf8</code></a>
Honor parse_err_ty attribute when the enum has a default variant (<a
href="https://redirect.github.com/Peternator7/strum/issues/431">#431</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/2c9e5a9259189ce8397f2f4967060240c6bafd74"><code>2c9e5a9</code></a>
Automatically add Default implementation to EnumDiscriminant if it
exists on ...</li>
<li><a
href="https://github.com/Peternator7/strum/commit/e241243e48359b8b811b8eaccdcfa1ae87138e0d"><code>e241243</code></a>
Fix existing cargo fmt + clippy issues and add GH actions (<a
href="https://redirect.github.com/Peternator7/strum/issues/473">#473</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/639b67fefd20eaead1c5d2ea794e9afe70a00312"><code>639b67f</code></a>
feat: allow any kind of passthrough attributes on
<code>EnumDiscriminants</code> (<a
href="https://redirect.github.com/Peternator7/strum/issues/461">#461</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/0ea1e2d0fd1460e7492ea32e6b460394d9199ff8"><code>0ea1e2d</code></a>
docs: Fix typo (<a
href="https://redirect.github.com/Peternator7/strum/issues/463">#463</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/36c051b91086b37d531c63ccf5a49266832a846d"><code>36c051b</code></a>
Upgrade <code>phf</code> to v0.13 (<a
href="https://redirect.github.com/Peternator7/strum/issues/465">#465</a>)</li>
<li><a
href="https://github.com/Peternator7/strum/commit/9328b38617dc6f4a3bc5fdac03883d3fc766cf34"><code>9328b38</code></a>
Use absolute paths in proc macro (<a
href="https://redirect.github.com/Peternator7/strum/issues/469">#469</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Peternator7/strum/compare/v0.27.2...v0.28.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=strum&package-manager=cargo&previous-version=0.27.2&new-version=0.28.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
Bumps the github-actions group with 2 updates:
[cargo-bins/cargo-binstall](https://github.com/cargo-bins/cargo-binstall)
and
[docker/build-push-action](https://github.com/docker/build-push-action).

Updates `cargo-bins/cargo-binstall` from 1.17.6 to 1.17.7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/cargo-bins/cargo-binstall/releases">cargo-bins/cargo-binstall's
releases</a>.</em></p>
<blockquote>
<h2>v1.17.7</h2>
<p><em>Binstall is a tool to fetch and install Rust-based executables as
binaries. It aims to be a drop-in replacement for <code>cargo
install</code> in most cases. Install it today with <code>cargo install
cargo-binstall</code>, from the binaries below, or if you already have
it, upgrade with <code>cargo binstall cargo-binstall</code>.</em></p>
<h4>In this release:</h4>
<ul>
<li>Upgrade dependencies</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/1800853f2578f8c34492ec76154caef8e163fbca"><code>1800853</code></a>
release: cargo-binstall v1.17.7 (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2497">#2497</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/86b11b4b790980e8a929892cc2e264e00d6185d9"><code>86b11b4</code></a>
chore: release (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2495">#2495</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/7b996da12e86e42fae8972a3a7a9579b58920ffd"><code>7b996da</code></a>
build(deps): bump toml from 1.0.4+spec-1.1.0 to 1.0.6+spec-1.1.0 in the
deps ...</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/2676f09268d4228bf5658a7a59b13e665520a8da"><code>2676f09</code></a>
dep: Upgrade transitive dependencies (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2494">#2494</a>)</li>
<li>See full diff in <a
href="https://github.com/cargo-bins/cargo-binstall/compare/v1.17.6...v1.17.7">compare
view</a></li>
</ul>
</details>
<br />

Updates `docker/build-push-action` from 6 to 7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/build-push-action/releases">docker/build-push-action's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<ul>
<li>Node 24 as default runtime (requires <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Actions
Runner v2.327.1</a> or later) by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1470">docker/build-push-action#1470</a></li>
<li>Remove deprecated <code>DOCKER_BUILD_NO_SUMMARY</code> and
<code>DOCKER_BUILD_EXPORT_RETENTION_DAYS</code> envs by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1473">docker/build-push-action#1473</a></li>
<li>Remove legacy export-build tool support for build summary by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1474">docker/build-push-action#1474</a></li>
<li>Switch to ESM and update config/test wiring by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1466">docker/build-push-action#1466</a></li>
<li>Bump <code>@​actions/core</code> from 1.11.1 to 3.0.0 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1454">docker/build-push-action#1454</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.62.1 to 0.79.0 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1453">docker/build-push-action#1453</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1472">docker/build-push-action#1472</a>
<a
href="https://redirect.github.com/docker/build-push-action/pull/1479">docker/build-push-action#1479</a></li>
<li>Bump minimatch from 3.1.2 to 3.1.5 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1463">docker/build-push-action#1463</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.19.2...v7.0.0">https://github.com/docker/build-push-action/compare/v6.19.2...v7.0.0</a></p>
<h2>v6.19.2</h2>
<ul>
<li>Preserve port in <code>GIT_AUTH_TOKEN</code> host by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1458">docker/build-push-action#1458</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.19.1...v6.19.2">https://github.com/docker/build-push-action/compare/v6.19.1...v6.19.2</a></p>
<h2>v6.19.1</h2>
<ul>
<li>Derive <code>GIT_AUTH_TOKEN</code> host from GitHub server URL by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1456">docker/build-push-action#1456</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.19.0...v6.19.1">https://github.com/docker/build-push-action/compare/v6.19.0...v6.19.1</a></p>
<h2>v6.19.0</h2>
<ul>
<li>Scope default git auth token to <code>github.com</code> by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1451">docker/build-push-action#1451</a></li>
<li>Bump brace-expansion from 1.1.11 to 1.1.12 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1396">docker/build-push-action#1396</a></li>
<li>Bump form-data from 2.5.1 to 2.5.5 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1391">docker/build-push-action#1391</a></li>
<li>Bump js-yaml from 3.14.1 to 3.14.2 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1429">docker/build-push-action#1429</a></li>
<li>Bump lodash from 4.17.21 to 4.17.23 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1446">docker/build-push-action#1446</a></li>
<li>Bump tmp from 0.2.3 to 0.2.4 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1398">docker/build-push-action#1398</a></li>
<li>Bump undici from 5.28.4 to 5.29.0 in <a
href="https://redirect.github.com/docker/build-push-action/pull/1397">docker/build-push-action#1397</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.18.0...v6.19.0">https://github.com/docker/build-push-action/compare/v6.18.0...v6.19.0</a></p>
<h2>v6.18.0</h2>
<ul>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.61.0 to 0.62.1 in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1381">docker/build-push-action#1381</a></li>
</ul>
<blockquote>
<p>[!NOTE]
<a
href="https://docs.docker.com/build/ci/github-actions/build-summary/">Build
summary</a> is now supported with <a
href="https://docs.docker.com/build-cloud/">Docker Build Cloud</a>.</p>
</blockquote>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.17.0...v6.18.0">https://github.com/docker/build-push-action/compare/v6.17.0...v6.18.0</a></p>
<h2>v6.17.0</h2>
<ul>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.59.0 to 0.61.0 by
<a href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in
<a
href="https://redirect.github.com/docker/build-push-action/pull/1364">docker/build-push-action#1364</a></li>
</ul>
<blockquote>
<p>[!NOTE]
Build record is now exported using the <a
href="https://docs.docker.com/reference/cli/docker/buildx/history/export/"><code>buildx
history export</code></a> command instead of the legacy export-build
tool.</p>
</blockquote>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/build-push-action/compare/v6.16.0...v6.17.0">https://github.com/docker/build-push-action/compare/v6.16.0...v6.17.0</a></p>
<h2>v6.16.0</h2>
<ul>
<li>Handle no default attestations env var by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/build-push-action/pull/1343">docker/build-push-action#1343</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/docker/build-push-action/commit/d08e5c354a6adb9ed34480a06d141179aa583294"><code>d08e5c3</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1479">#1479</a>
from docker/dependabot/npm_and_yarn/docker/actions-t...</li>
<li><a
href="https://github.com/docker/build-push-action/commit/cbd2dff9a0f0ef650dcce9c635bb2f877ab37be5"><code>cbd2dff</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/build-push-action/commit/f76f51f12900bb84aa9d1a498f35870ef1f76675"><code>f76f51f</code></a>
chore(deps): Bump <code>@​docker/actions-toolkit</code> from 0.78.0 to
0.79.0</li>
<li><a
href="https://github.com/docker/build-push-action/commit/7d03e66b5f24d6b390ab64b132795fd3ef4152c8"><code>7d03e66</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1473">#1473</a>
from crazy-max/rm-deprecated-envs</li>
<li><a
href="https://github.com/docker/build-push-action/commit/98f853d923dd281a3bcbbb98a0712a91aa913322"><code>98f853d</code></a>
chore: update generated content</li>
<li><a
href="https://github.com/docker/build-push-action/commit/cadccf6e8c7385c86d9cb0800cf07672645cc238"><code>cadccf6</code></a>
remove deprecated envs</li>
<li><a
href="https://github.com/docker/build-push-action/commit/03fe8775e325e34fffbda44c73316f8287aea372"><code>03fe877</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1478">#1478</a>
from docker/dependabot/github_actions/docker/setup-b...</li>
<li><a
href="https://github.com/docker/build-push-action/commit/827e36650e1fa7386d09422b5ba3c068fdbe0a1d"><code>827e366</code></a>
chore(deps): Bump docker/setup-buildx-action from 3 to 4</li>
<li><a
href="https://github.com/docker/build-push-action/commit/e25db879d025485a4eebd64fea9bb88a43632da6"><code>e25db87</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1474">#1474</a>
from crazy-max/rm-export-build-tool</li>
<li><a
href="https://github.com/docker/build-push-action/commit/1ac2573b5c8b4e4621d5453ab2a99e83725242bd"><code>1ac2573</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/build-push-action/issues/1470">#1470</a>
from crazy-max/node24</li>
<li>Additional commits viewable in <a
href="https://github.com/docker/build-push-action/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Friedel Ziegelmayer <me@dignifiedquire.com>
## Description

The current default builder approach hardcodes the number 0 servers
directly, to make this more explicit, but still have a clean API for
examples everywhere this refactors the builder and bind API of the
endpoint.

## Breaking Changes

- `iroh::Endpoint::builder` now takes a preset
- `iroh::Endpoint::bind` now takes a preset
- `iroh::Endpoint::empty_builder` now assumes `RelayMode::Disabled` and
takes no arguments
- `iroh::EndpointBuilder::empty` now assumes `RelayMode::Disabled` and
takes no arguments


## Example

```rust
// Before
let endpoint = Endpoint::bind().await?;

// After
let endpoint = Endpoint::bind(presets::N0).await?;
```
…lt (#4012)

## Description

Partially reverts #3987 so we have more control over the default
`AddrFilter` from within the `PkarrPublisherBuilder`, and because we
need it for pkarr, we keep this consistent across publishing services.

As a bonus, now pure resolvers don't suddently have a builder method for
address filtering that cannot apply to them (but they can still be
wrapped in `FilteredAddressLookup`, even though that's less
discoverable).

Fixes #4009 

## Breaking Changes

- **behavioral**: `PkarrPublisher` and `DhtPublisher` will now by
default publish *only* the relay URL, instead of detecting if
`RelayMode::Disabled` was set and in such cases publishing IP addresses.
We recommend users to explicitly set
`.addr_mode(AddrFilter::unfiltered())` if they set
`relay_mode(RelayMode::Disabled)`, to re-enable publishing IP addresses
publicly.

---------

Co-authored-by: Franz Heinzmann <frando@unbiskant.org>
## Description

- Makes `AddrFilter` essentially a wrapper around `&Vec -> Cow<Vec>`
instead of `&BTreeSet -> Vec`.
- Reworks `EndpointInfo` and `EndpointData` APIs. Some docs were
outdated (e.g. claiming `with_relay_url(None)` would remove relays),
etc. Generally also removed `Deref` and `DerefMut` implementations from
`EndpointInfo -> EndpointData`.

## Breaking Changes

`iroh::address_lookup::EndpointInfo`:
- `EndpointInfo::with_relay_url` now takes `RelayUrl` instead of
`Option<RelayUrl>`
- `EndpointInfo::with_ip_addrs` now takes `Vec<SocketAddr>` instead of
`BTreeSet<SocketAddr>`.
- Removed `Deref` and `DerefMut` with `Target = EndpointData` from
`EndpointInfo`.
- Added `EndpointData::{addrs, relay_urls, user_data, ip_addrs}`.

`iroh::address_lookup::EndpointData`:
- `EndpointData::new` now takes a `Vec<TransportAddr>` instead of `impl
IntoIterator<Item = TransportAddr>` and keeps the ordering of addresses.
Use `EndpointAddr::from_iter` instead (although less performant).
- `EndpointData::with_user_data` now takes `UserData` instead of
`Option<UserData>`.
- `EndpointData::filtered_addrs` now returns `Cow<Vec<TransportAddr>>`
instead of `Vec<TransportAddr>`.
- Added `EndpointData::{add_relay_url, add_ip_addrs, apply_filter}`.
- Added `impl From<BTreeSet<{TransportAddr, SocketAddr}>> for
EndpointData`.
- Added `impl FromIterator<TransportAddr> for EndpointData`.

`iroh::address_lookup::AddrFilterFn`:
- Changed from being `BTreeSet`-based to `Vec`-based.
- Return type changed to `Cow<Vec<TransportAddr>>`
from`Vec<TransportAddr>`.

## Notes

There's some work required to keep the `EndpointData` transport
addresses deduplicated, and deduplicating a `Vec` is unfortunately
somewhat expensive and requires allocations, but I think it's better to
have this than not to.
I already saw some code in some publishing services that just keep
adding new information to a single `EndpointData` and keep publishing.
Without deduplication, this would go wrong. Maybe that should change
nonetheless, but that'd be a PR for another day.

## Change checklist
<!-- Remove any that are not relevant. -->
- [x] Self-review.
- [x] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [x] Tests if relevant.
## Description

Expose the new fn decrypt on noq.

Note that I am depending on a slightly outdated version of noq, because
main no longer compiles due to an unrelated change.

Also reexport the DecryptedInitial type.

## Breaking Changes

None

## Notes & open questions

<!-- Any notes, remarks or open questions you have to make about the PR.
-->

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)
## Description

- Introduces a `ring` feature flag that enables turning off the ring
dependency
- Introduces a `aws-lc-rs` feature flag that enables using aws-lc-rs as
the crypto provider for rustls for everything TLS in iroh
- Adds `iroh::endpoint::Builder::crypto_provider` allowing anyone to
configure custom crypto providers beyond ring and aws-lc-rs. This is a
required call when neither `ring` nor `aws-lc-rs` are enabled, but will
default to either (preferring ring) if the features are enabled.
- Adds `presets::Empty` and `presets::Minimal`. The latter sets the
minimal set of required options on the builder, but is only available on
the `ring` or `aws-lc-rs` feature flags.
- Removes `Endpoint::empty_builder` in favor of `Endpoint::builder`
together with either the `presets::Empty` or `presets::Minimal`.

Depends on n0-computer/noq#496

## Breaking Changes

- Added `iroh::endpoint::Builder::crypto_provider` for configuring the
crypto provider. After having built the Endpoint, you can get back the
crypto provider via `endpoint.tls_config().crypto_provider()`.
- Removed `Endpoint::empty_builder`. Use
`Endpoint::builder(presets::Empty)` or
`Endpoint::builder(presets::Minimal)` instead.
- **Behavioral**: If you don't call
`iroh::endpoint::Builder::crypto_provider`, you will get an error when
building in the call `Builder::bind()`.

## Notes & Open Questions

It's probably worth asking ourselves if we want to change the way we run
CI now.
Most of our tests are cfg-ed out when you disable *both* the ring and
aws-lc-rs features.
However, maybe we should add another test category that's like
`--no-default-features --feature ring/aws-lc-rs`?
We could call it `minimal` (and I guess we'd have to decide to use
either ring or aws-lc-rs).
## Description

aws-lc-sys requires cmake and NASM to build on Windows MSVC targets.
This adds a choco install step to both Windows CI jobs and ensure the
installed binaries are on PATH.

## Change checklist
<!-- Remove any that are not relevant. -->
- [x] Self-review.
## Description

When the network changes we should recover our connection and
holepunch again. Because quinn now tracks 4-tuples a lot of network
paths would turn into black holes because the source address would no
longer match.

This hooks up network changes to quinn so that it will close and open
new paths correctly when this happens. This should result in most
paths not being validated after a network change which in turn means
any new ADD_ADDRESS and REACH_OUT frames will be sent on the validated
path instead of a path that is no longer functional.

## Breaking Changes

n/a

## Notes & open questions

The first few commits do some renaming and documenting of stuff that's
not
strictly required. It was nicer and easier to build on top of that. If
you, the reviewer, would prefer I can split those off into a refactoring
PR and base this one on top of that.

## Change checklist

- [x] I still need to check if the server updates quinn so it can do
      the correct ADD_ADDRESS and REMOVE_ADDRESS stuff.
- [x] I still need to check the sequencing of the above so things
      happen in the correct order.
- [x] Investigate `endpoint_relay_connect_loop` test failure
- [ ] Self-review.
- [x] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.

---------

Co-authored-by: Diva Martínez <git@divma.net>
Co-authored-by: dignifiedquire <me@dignifiedquire.com>
## Description

Increase the bias so we can't accidentally get a wrong selection because
IP transport is super slow.

## Breaking Changes

None

## Notes & open questions

Should I make this a minute?

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)
…ange (#4039)

## Description

When a network change is detected but no default route is available
(interface just came up, gateway not yet assigned), the current code
fires `handle_network_change` immediately with no route, which marks all
IP paths as non-recoverable.

Poll with exponential backoff (100ms, 200ms, 400ms, 800ms, capped at 1s)
until a default route appears, then fire `handle_network_change` with
accurate interface state. This matches the observed behavior where Linux
takes 200ms-2s to assign a default route after interface UP.
…rt is… (#4048)

## Description

The test_ip_wins_over_custom is not just flaky. It just doesn't make
sense anymore with the changes we have made to the custom transports PR
to get it merged.

Basically once we have a custom transport we might not even get the ip
transport, ever. So the bias doesn't matter.

## Breaking Changes

None

## Notes & open questions

Note: we could fully enable this test again when we bring back the
backup custom transport feature. I also want to look into this some
more. This is just to get CI to pass again.

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)
## Description

- Increase `PATH_MAX_IDLE_TIMEOUT` from 6.5s to 15s — the previous value
left only 1.5s for recovery after a 5s outage, which is too tight for
real-world WiFi reconnects (2-5s) and cellular handoffs (2-10s)
- Add `RELAY_PATH_MAX_IDLE_TIMEOUT` (30s) matching the connection-level
timeout, since the relay actor handles transparent WebSocket
reconnection during outages
- Add `configure_path()` helper that sets the relay idle timeout on all
path creation sites (initial connection, `open_path`,
`PathEvent::Opened`)
- Clamp user-provided `default_path_max_idle_timeout` instead of
silently ignoring values above the limit

## Notes

- iroh 0.35 used 10s at the QUIC level with 45s DISCO session timeout
- tailscale uses 45s session timeout with 3s heartbeats at the WireGuard
level
- 15s is a compromise: 3x the 5s heartbeat interval, fast enough to
detect genuinely dead paths
## Description

After a major network change, send an immediate health check ping to the
relay server using an RTT-based timeout (3x last RTT, minimum 500ms)
instead of waiting for the next scheduled ping (up to 5s).

If the relay is healthy, the ping succeeds and nothing changes. If it's
broken, this detects it ~4.5s faster than the normal ping timeout,
triggering reconnection sooner.
## Description

Noq API has changed a bit regarding watchers, in
n0-computer/noq#547

This updates iroh to use the new API

## Breaking Changes

None

## Notes & open questions

<!-- Any notes, remarks or open questions you have to make about the PR.
-->

## Change checklist
<!-- Remove any that are not relevant. -->
- [ ] Self-review.
- [ ] Documentation updates following the [style
guide](https://rust-lang.github.io/rfcs/1574-more-api-documentation-conventions.html#appendix-a-full-conventions-text),
if relevant.
- [ ] Tests if relevant.
- [ ] All breaking changes documented.
- [ ] List all breaking changes in the above "Breaking Changes" section.
- [ ] Open an issue or PR on any number0 repos that are affected by this
breaking change. Give guidance on how the updates should be handled or
do the actual updates themselves. The major ones are:
    - [ ] [`quic-rpc`](https://github.com/n0-computer/quic-rpc)
    - [ ] [`iroh-gossip`](https://github.com/n0-computer/iroh-gossip)
    - [ ] [`iroh-blobs`](https://github.com/n0-computer/iroh-blobs)
    - [ ] [`dumbpipe`](https://github.com/n0-computer/dumbpipe)
    - [ ] [`sendme`](https://github.com/n0-computer/sendme)

---------

Co-authored-by: Philipp Krüger <philipp.krueger1@gmail.com>
## Description

Locks the version of wasm-bindgen-cli used to the one corresponding to
the lockfile version.
This aligns the ci script to what we use in noq and elsewhere.

Also updates wasm-bindgen to version 0.2.115 from 0.2.114.
@flub
Copy link
Copy Markdown
Contributor

flub commented Mar 30, 2026

does this still live?

dependabot Bot and others added 2 commits March 30, 2026 16:11
…updates (#4054)

Bumps the github-actions group with 3 updates in the / directory:
[android-actions/setup-android](https://github.com/android-actions/setup-android),
[cargo-bins/cargo-binstall](https://github.com/cargo-bins/cargo-binstall)
and
[actions/create-github-app-token](https://github.com/actions/create-github-app-token).

Updates `android-actions/setup-android` from 3 to 4
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/android-actions/setup-android/releases">android-actions/setup-android's
releases</a>.</em></p>
<blockquote>
<h2>v4.0.0</h2>
<p>Hello,</p>
<p>The long awaited update of setup-android.</p>
<ul>
<li>Migrate action to Node24 (by <a
href="https://github.com/TWiStErRob"><code>@​TWiStErRob</code></a>)</li>
<li>Add and default to cmdline-tools version 20.0 ( 14742923 )</li>
<li>Update CI runners (by <a
href="https://github.com/TWiStErRob"><code>@​TWiStErRob</code></a>)</li>
<li>Update README.md (by <a
href="https://github.com/vil02"><code>@​vil02</code></a>)</li>
<li>Update npm dependencies to solve CVE's</li>
</ul>
<p>Incrementing major version to safeguard incase node upgrade or
default cmdline-tools upgrade breaks something downstream.</p>
<h2>v3.2.2</h2>
<p>Add support for cmdline-tools versions 12, 13, and 16 by <a
href="https://github.com/warting"><code>@​warting</code></a> in <a
href="https://redirect.github.com/android-actions/setup-android/pull/493">android-actions/setup-android#493</a>
.</p>
<p>Updated npm dependencies</p>
<h2>v3.2.1</h2>
<p>Updated dependencies</p>
<h2>v3.2.0</h2>
<p>Implement 'packages' input argument, which allows choosing which
packages to install from Android SDK</p>
<h2>v3.1.0</h2>
<p>Allow installing different Android SDK versions.
Allow silent license agreement.</p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/android-actions/setup-android/commit/651bceb6f9ca583f16b8d75b62c36ded2ae6fc9c"><code>651bceb</code></a>
Migrate from ncc to esbuild</li>
<li><a
href="https://github.com/android-actions/setup-android/commit/144235e0587cf3d746e56d7bd53ca53a966e2000"><code>144235e</code></a>
Update actions steps. checkout to v5, node to v6, java to v5, codeql to
v4</li>
<li><a
href="https://github.com/android-actions/setup-android/commit/200c644fca72efa03f84ad0c0e0bba00e6faa6e2"><code>200c644</code></a>
Add cmdline-tools version 20.0 ( 14742923 )</li>
<li><a
href="https://github.com/android-actions/setup-android/commit/715acc5ce167ce4019cf2f743710d152080fd478"><code>715acc5</code></a>
Remove <code>@​actions/cache</code> dependency</li>
<li><a
href="https://github.com/android-actions/setup-android/commit/125835f877d12c4bf3f94ba8bc91deb608f0a0ed"><code>125835f</code></a>
Update (not all) deps, migrate eslint to new format. compile to
es2024</li>
<li><a
href="https://github.com/android-actions/setup-android/commit/c4c8fe5bcde35fd88354d5a39d4739cbaf13cc30"><code>c4c8fe5</code></a>
Encourage users to use latest version of
<code>actions/setup-java</code></li>
<li><a
href="https://github.com/android-actions/setup-android/commit/6a40db5374286262464a7f8bbe2b8fc4f820518c"><code>6a40db5</code></a>
Migrate from Node 20 to Node 24</li>
<li><a
href="https://github.com/android-actions/setup-android/commit/641d7f5e800c4f489cc8c002afdf15ba3d1da935"><code>641d7f5</code></a>
Maintain GHA runners</li>
<li>See full diff in <a
href="https://github.com/android-actions/setup-android/compare/v3...v4">compare
view</a></li>
</ul>
</details>
<br />

Updates `cargo-bins/cargo-binstall` from 1.17.7 to 1.17.8
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/cargo-bins/cargo-binstall/releases">cargo-bins/cargo-binstall's
releases</a>.</em></p>
<blockquote>
<h2>v1.17.8</h2>
<p><em>Binstall is a tool to fetch and install Rust-based executables as
binaries. It aims to be a drop-in replacement for <code>cargo
install</code> in most cases. Install it today with <code>cargo install
cargo-binstall</code>, from the binaries below, or if you already have
it, upgrade with <code>cargo binstall cargo-binstall</code>.</em></p>
<h4>In this release:</h4>
<ul>
<li>Upgrade dependencies</li>
</ul>
<h4>Other changes:</h4>
<ul>
<li>Prebuilt signing process is much safer now (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2503">#2503</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/113a77a4ce971c41332f2129c3d995df993cf746"><code>113a77a</code></a>
release: cargo-binstall v1.17.8 (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2510">#2510</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/84cba9190ef84d6353c6cb5100c75ec6aa2fc07c"><code>84cba91</code></a>
chore: release (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2500">#2500</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/9b6ba1f458ecbee39372454f95364a330b2d0fc5"><code>9b6ba1f</code></a>
build(deps): bump netdev from 0.40.1 to 0.41.0 in the deps group (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2509">#2509</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/ffa641859a513fe3dc33022eaa0530555c8f7c36"><code>ffa6418</code></a>
dep: Upgrade transitive dependencies (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2508">#2508</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/19eb7c7d1263891c1dd1c8ed054dfb770b4c18ef"><code>19eb7c7</code></a>
Rm unused minisign key deletion release-cli.yml (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2507">#2507</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/9421f8a15a64fca422cc446e9531a8828666abdd"><code>9421f8a</code></a>
build(deps): bump astral-tokio-tar from 0.5.6 to 0.6.0 (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2504">#2504</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/1f14acd92f72adee26b31fa26b6e046973c99cb1"><code>1f14acd</code></a>
Simplify release-pipeline: Sign pre-builts in one workflow (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2503">#2503</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/811fbb5195c7b675c508168ebfca4355176bc25f"><code>811fbb5</code></a>
Refactor run_tests.sh to duplicate cargo-binstall to tempfile (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2505">#2505</a>)</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/4c4aeb61ee54318eba5737b7c07aa509a2ed6d32"><code>4c4aeb6</code></a>
build(deps): bump tracing-subscriber from 0.3.22 to 0.3.23 in the deps
group ...</li>
<li><a
href="https://github.com/cargo-bins/cargo-binstall/commit/177016786487504ca641e7183a9b5bc668d88480"><code>1770167</code></a>
dep: Upgrade transitive dependencies (<a
href="https://redirect.github.com/cargo-bins/cargo-binstall/issues/2499">#2499</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/cargo-bins/cargo-binstall/compare/v1.17.7...v1.17.8">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/create-github-app-token` from 2 to 3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/create-github-app-token/releases">actions/create-github-app-token's
releases</a>.</em></p>
<blockquote>
<h2>v3.0.0</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v2.2.2...v3.0.0">3.0.0</a>
(2026-03-14)</h1>
<ul>
<li>feat!: node 24 support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/275">#275</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/2e564a0bb8e7cc2b907b2401a2afe177882d4325">2e564a0</a>)</li>
<li>fix!: require <code>NODE_USE_ENV_PROXY</code> for proxy support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/342">#342</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/4451bcbc139f8124b0bf04f968ea2586b17df458">4451bcb</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>remove custom proxy handling (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/143">#143</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/dce0ab05f36f30b22fd14289fd36655c618e4e8e">dce0ab0</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li>Custom proxy handling has been removed. If you use HTTP_PROXY or
HTTPS_PROXY, you must now also set NODE_USE_ENV_PROXY=1 on the action
step.</li>
<li>Requires <a
href="https://github.com/actions/runner/releases/tag/v2.327.1">Actions
Runner v2.327.1</a> or later if you are using a self-hosted runner.</li>
</ul>
<h2>v3.0.0-beta.6</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v3.0.0-beta.5...v3.0.0-beta.6">3.0.0-beta.6</a>
(2026-03-13)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> bump <code>@​actions/core</code> from 1.11.1
to 3.0.0 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/337">#337</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/b04413352d4644ac2131b9a90c074f5e93ca18a1">b044133</a>)</li>
<li><strong>deps:</strong> bump minimatch from 9.0.5 to 9.0.9 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/335">#335</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/5cbc65624c9ddc4589492bda7c8b146223e8c3e4">5cbc656</a>)</li>
<li><strong>deps:</strong> bump the production-dependencies group with 4
updates (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/336">#336</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/6bda5bc1410576b9a0879ce6076d53345485bba9">6bda5bc</a>)</li>
<li><strong>deps:</strong> bump undici from 7.16.0 to 7.18.2 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/323">#323</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/b4f638f48ee0dcdbb0bc646c48e4cb2a2de847fe">b4f638f</a>)</li>
</ul>
<h2>v3.0.0-beta.5</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v3.0.0-beta.4...v3.0.0-beta.5">3.0.0-beta.5</a>
(2026-03-13)</h1>
<ul>
<li>fix!: require <code>NODE_USE_ENV_PROXY</code> for proxy support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/342">#342</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/d53a1cdfde844c958786293adcaf739ecb8b5eb9">d53a1cd</a>)</li>
</ul>
<h3>BREAKING CHANGES</h3>
<ul>
<li>Custom proxy handling has been removed. If you use HTTP_PROXY or
HTTPS_PROXY, you must now also set NODE_USE_ENV_PROXY=1 on the action
step.</li>
</ul>
<h2>v3.0.0-beta.4</h2>
<h1><a
href="https://github.com/actions/create-github-app-token/compare/v3.0.0-beta.3...v3.0.0-beta.4">3.0.0-beta.4</a>
(2026-03-13)</h1>
<h3>Bug Fixes</h3>
<ul>
<li><strong>deps:</strong> bump <code>@​octokit/auth-app</code> from
7.2.1 to 8.0.1 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/257">#257</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/bef1eaf1c0ac2b148ee2a0a74c65fbe6db0631f1">bef1eaf</a>)</li>
<li><strong>deps:</strong> bump <code>@​octokit/request</code> from
9.2.3 to 10.0.2 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/256">#256</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/5d7307be63501c0070c634b0ae8fec74e8208130">5d7307b</a>)</li>
<li><strong>deps:</strong> bump glob from 10.4.5 to 10.5.0 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/305">#305</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/5480f4325a18c025ee16d7e081413854624e9edc">5480f43</a>)</li>
<li><strong>deps:</strong> bump p-retry from 6.2.1 to 7.1.0 (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/294">#294</a>)
(<a
href="https://github.com/actions/create-github-app-token/commit/dce3be8b284f45e65caed11a610e2bef738d15b4">dce3be8</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/actions/create-github-app-token/commit/f8d387b68d61c58ab83c6c016672934102569859"><code>f8d387b</code></a>
build(release): 3.0.0 [skip ci]</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/d2129bd463d4feb8723edeea9437baa7db58e41e"><code>d2129bd</code></a>
style: remove extra blank line in release workflow</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/77b94efc3e5f99a45abdd163fe04a4ebb95e98d6"><code>77b94ef</code></a>
build: refresh generated artifacts</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/3ab4c6689898955f913a485593b36b197c6dbbdc"><code>3ab4c66</code></a>
chore: move undici to devDependencies</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/739cf66feb937a443e4b6b7626bedd98f9fef6df"><code>739cf66</code></a>
docs: update README action versions</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/db40289976a36527816d4f6f45765fdee71f134b"><code>db40289</code></a>
build(deps): bump actions versions in test.yml</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/496a7ac4eb472eeac44d67818d1ce7f5e9e5fc97"><code>496a7ac</code></a>
test: migrate from AVA to Node.js native test runner (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/346">#346</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/3870dc3051e3f1fc3a2faa17bcbb00f31fe1dd6c"><code>3870dc3</code></a>
Rename end-to-end proxy job in test workflow</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/4451bcbc139f8124b0bf04f968ea2586b17df458"><code>4451bcb</code></a>
fix!: require <code>NODE_USE_ENV_PROXY</code> for proxy support (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/342">#342</a>)</li>
<li><a
href="https://github.com/actions/create-github-app-token/commit/dce0ab05f36f30b22fd14289fd36655c618e4e8e"><code>dce0ab0</code></a>
fix: remove custom proxy handling (<a
href="https://redirect.github.com/actions/create-github-app-token/issues/143">#143</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/actions/create-github-app-token/compare/v2...v3">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
@matheus23
Copy link
Copy Markdown
Member Author

Gave this a refresh and will merge.

Have you considered making this a command-line option?

It's now a command line option --workers-per-ep that you can set to 0 for multi-threaded, 1 for single-threaded, and any other n for n worker threads.

@github-actions
Copy link
Copy Markdown

Netsim report & logs for this PR have been generated and is available at: LOGS
This report will remain available for 3 days.

Last updated for commit: e4975e7

@matheus23 matheus23 merged commit d43fa0b into feat-multipath Mar 30, 2026
29 of 30 checks passed
@github-project-automation github-project-automation Bot moved this from 🏗 In progress to ✅ Done in iroh Mar 30, 2026
@matheus23 matheus23 deleted the matheus23/more-stable-iroh-bench branch March 30, 2026 16:00
@matheus23 matheus23 restored the matheus23/more-stable-iroh-bench branch March 30, 2026 16:08
matheus23 added a commit that referenced this pull request Mar 30, 2026
… each endpoint in iroh-bench (#4063)

(this is #3780 reopened, because
that had the wrong target branch)

## Description

When I look at qlog files of iroh-bench runs, I can see that PATH_ACK
processing is severely delayed when using a single-threaded tokio
runtime for each endpoint.
This disappears when I give iroh-bench two worker threads. This allows
the EndpointDriver and the ConnectionDriver to each run independently of
each other, thus the endpoint driver won't be delayed when processing
PATH_ACKs.
When the processing was delayed, this had an effect on the apparent RTT
and in turn on congestion control.

## Screenshots

Before: Note all the blue lines going in from waaaaay back in history
all into one place on the left (those are the PATH_ACKs that get handled
way too late):
<img width="1720" height="772" alt="image"
src="https://github.com/user-attachments/assets/688e19e5-63bb-4d1c-9256-43ce0911a4c0"
/>

After: The PATH_ACKs get handled in time, they're way more interspersed
with stream frames:
<img width="1720" height="772" alt="image"
src="https://github.com/user-attachments/assets/a33db88c-dde0-458d-8007-12c7f119165d"
/>

## Change checklist
<!-- Remove any that are not relevant. -->
- [x] Self-review.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.