Skip to content

chore: Bump deps and update lockfile#3663

Merged
larseggert merged 2 commits into
mozilla:mainfrom
larseggert:chore-bump-deps
Jun 2, 2026
Merged

chore: Bump deps and update lockfile#3663
larseggert merged 2 commits into
mozilla:mainfrom
larseggert:chore-bump-deps

Conversation

@larseggert
Copy link
Copy Markdown
Collaborator

As usual more fixes to the tool, too.

As usual more fixes to the tool, too.
Copilot AI review requested due to automatic review settings June 1, 2026 13:29
Comment thread test/lockfile_utils.py
@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 1, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 95.06%. Comparing base (5719cb3) to head (d91f879).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3663      +/-   ##
==========================================
- Coverage   95.18%   95.06%   -0.12%     
==========================================
  Files         111      116       +5     
  Lines       38160    38509     +349     
  Branches    38160    38509     +349     
==========================================
+ Hits        36321    36608     +287     
- Misses       1152     1202      +50     
- Partials      687      699      +12     
Flag Coverage Δ
freebsd 94.21% <ø> (-0.15%) ⬇️
linux 95.19% <ø> (+<0.01%) ⬆️
macos 95.13% <ø> (+<0.01%) ⬆️
windows 95.22% <ø> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
neqo-common 98.61% <ø> (ø)
neqo-http3 93.92% <ø> (ø)
neqo-qpack 95.62% <ø> (ø)
neqo-transport 95.90% <ø> (+0.05%) ⬆️
neqo-udp 84.69% <ø> (ø)
mtu 86.61% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Comment thread test/update_lockfile.py Outdated
Comment thread test/update_lockfile.py
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Good improvements to the lockfile tooling. The main changes:

  1. mio fork removed — the [patch.crates-io] for the kinetiknz/mio fork is dropped (per the existing TODO referencing bug 2024485), switching back to registry mio 1.2.0. This also sheds the backtrace dependency tree from tokio (addr2line, gimli, miniz_oxide, etc.).

  2. Lockfile scripts restructured around explicit invariantscompare_lockfile.py now checks three named invariants (A: no non-Gecko duplicates, B: advisory ahead-of-Gecko, C: hard behind-Gecko) with a clean hard-violation/warning split and clearer exit-code semantics. The refactoring into classify_version_relation and find_non_gecko_duplicates in lockfile_utils.py is a nice DRY improvement shared between both scripts.

  3. update_lockfile.py phased approach — the four-phase structure (free updates → Gecko alignment → dedup → ahead warnings) is well-organized. The --update-neqo-only flag removal is a behavior change (free updates are now unconditional), but this matches the stated goal. The _cargo_update_specs lockfile-restore fix on cargo failure is a good correctness improvement.

Two items flagged inline: dead is_ahead_of_gecko function in lockfile_utils.py, and the module docstring in update_lockfile.py claiming deps are never downgraded when the code does allow production-dep downgrades.

Minor observation: the new classify_version_relation and find_non_gecko_duplicates utility functions would benefit from unit tests — they encode non-trivial invariant logic (999-version handling, range-based dedup) that could regress silently.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR updates Rust dependencies (including removing the mio git patch) and significantly enhances the lockfile tooling used to keep Cargo.lock aligned with Gecko’s pinned versions, adding explicit alignment/dedup “invariants” and automation to resolve non-Gecko duplicate versions.

Changes:

  • Extend update-lockfile to (1) freely bump non-Gecko-pinned deps, (2) align shared deps with Gecko, (3) attempt to auto-collapse non-Gecko duplicate versions, and (4) report “ahead of Gecko” deps.
  • Update compare-lockfile to check and report three invariants (duplicate splits, ahead-of-Gecko advisory, behind-Gecko production hard violations).
  • Remove the mio [patch.crates-io] override and refresh Cargo.lock accordingly.

Reviewed changes

Copilot reviewed 5 out of 6 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
test/update_lockfile.py Reworks lockfile update flow into phases; adds auto-dedup of non-Gecko duplicates; improves reporting.
test/compare_lockfile.py Adds invariant-based validation/reporting and duplicate-split checks.
test/lockfile_utils.py Introduces shared helpers for version relation classification and non-Gecko duplicate detection.
test/README.md Updates documentation to reflect new update-lockfile behavior (no --update-neqo-only).
Cargo.toml Removes the mio git patch override.
Cargo.lock Updates locked dependency graph (including mio, tokio, socket2, windows-sys, etc.).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread test/compare_lockfile.py
Comment thread test/update_lockfile.py Outdated
Comment thread test/update_lockfile.py Outdated
@codspeed-hq
Copy link
Copy Markdown

codspeed-hq Bot commented Jun 1, 2026

Merging this PR will not alter performance

✅ 23 untouched benchmarks
🗄️ 1 archived benchmark run1


Comparing larseggert:chore-bump-deps (d91f879) with main (94e4eea)

Open in CodSpeed

Footnotes

  1. 1 benchmark was run, but is now archived. If it was deleted in another branch, consider rebasing to remove it from the report. Instead if it was added back, click here to restore it.

Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

Good PR. The main pieces:

  1. mio fork removal: Dropping the [patch.crates-io] for kinetiknz/mio (per bug 2024485) and switching back to registry mio 1.2.0 is a welcome cleanup. This also sheds the backtrace dependency tree from tokio (addr2line, gimli, miniz_oxide, object, rustc-demangle).

  2. Invariant-based structure in compare_lockfile.py: The three named invariants (A/B/C) with a clear hard-violation vs. warning split and well-defined exit-code semantics are a nice improvement over the old flat mismatch report.

  3. Phased update_lockfile.py: The four-phase flow (free updates → Gecko alignment → dedup → ahead warnings) reads well. The re-alignment loop with an attempted set to guarantee termination (lines 512–534) and the _cargo_update_specs restore-on-failure fix are solid correctness improvements.

  4. --update-neqo-only removal: Making free updates unconditional simplifies the UX and matches the intent.

Previous review findings (dead is_ahead_of_gecko, inaccurate docstrings, Phase 2 "upgrade-only" comment, filter_neqo_only_mismatches regression) are all resolved in the Fixes commit.

Three minor items flagged inline: a redundant docstring bullet, a stray blank line in Cargo.toml, and a suggestion for unit tests on the new invariant-logic helpers.

Comment thread test/update_lockfile.py
Comment thread Cargo.toml
Comment thread test/lockfile_utils.py
@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

Benchmark results

Significant performance differences relative to 94e4eea.

transfer/1-conn/10_000-parallel-1b-resp (aka. RPS): 💚 Performance has improved by -3.0899%.
       time:   [269.43 ms 271.40 ms 273.45 ms]
       thrpt:  [36.570 Kelem/s 36.846 Kelem/s 37.116 Kelem/s]
change:
       time:   [-4.1266% -3.0899% -1.9726] (p = 0.00 < 0.05)
       thrpt:  [+2.0123% +3.1884% +4.3042]
       Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
streams-flow-controlled/walltime/1-streams/each-4194304-bytes: 💚 Performance has improved by -1.3243%.
       time:   [32.100 ms 32.151 ms 32.202 ms]
       change: [-1.5759% -1.3243% -1.0717] (p = 0.00 < 0.05)
       Performance has improved.
All results
transfer/1-conn/1-100mb-resp (aka. Download): Change within noise threshold.
       time:   [177.18 ms 177.60 ms 178.06 ms]
       thrpt:  [561.62 MiB/s 563.07 MiB/s 564.38 MiB/s]
change:
       time:   [+0.1865% +0.6051% +1.0150] (p = 0.00 < 0.05)
       thrpt:  [-1.0048% -0.6015% -0.1861]
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS): 💚 Performance has improved by -3.0899%.
       time:   [269.43 ms 271.40 ms 273.45 ms]
       thrpt:  [36.570 Kelem/s 36.846 Kelem/s 37.116 Kelem/s]
change:
       time:   [-4.1266% -3.0899% -1.9726] (p = 0.00 < 0.05)
       thrpt:  [+2.0123% +3.1884% +4.3042]
       Performance has improved.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
transfer/1-conn/1-1b-resp (aka. HPS): No change in performance detected.
       time:   [38.446 ms 38.631 ms 38.839 ms]
       thrpt:  [25.747   B/s 25.886   B/s 26.011   B/s]
change:
       time:   [-0.5515% +0.1255% +0.7830] (p = 0.71 > 0.05)
       thrpt:  [-0.7769% -0.1253% +0.5546]
       No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
1 (1.00%) high mild
8 (8.00%) high severe
transfer/1-conn/1-100mb-req (aka. Upload): No change in performance detected.
       time:   [179.27 ms 179.61 ms 180.01 ms]
       thrpt:  [555.53 MiB/s 556.77 MiB/s 557.82 MiB/s]
change:
       time:   [-0.1241% +0.2575% +0.6061] (p = 0.18 > 0.05)
       thrpt:  [-0.6024% -0.2568% +0.1242]
       No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
1 (1.00%) low mild
6 (6.00%) high mild
1 (1.00%) high severe
streams/walltime/1-streams/each-1000-bytes: Change within noise threshold.
       time:   [568.55 µs 570.51 µs 572.80 µs]
       change: [+0.0340% +0.5900% +1.1187] (p = 0.04 < 0.05)
       Change within noise threshold.
Found 8 outliers among 100 measurements (8.00%)
1 (1.00%) high mild
7 (7.00%) high severe
streams/walltime/1000-streams/each-1-bytes: Change within noise threshold.
       time:   [11.401 ms 11.420 ms 11.439 ms]
       change: [+0.0762% +0.3181% +0.5620] (p = 0.01 < 0.05)
       Change within noise threshold.
streams/walltime/1000-streams/each-1000-bytes: Change within noise threshold.
       time:   [36.227 ms 36.273 ms 36.320 ms]
       change: [+0.5550% +0.7591% +0.9540] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
streams-flow-controlled/walltime/1-streams/each-4194304-bytes: 💚 Performance has improved by -1.3243%.
       time:   [32.100 ms 32.151 ms 32.202 ms]
       change: [-1.5759% -1.3243% -1.0717] (p = 0.00 < 0.05)
       Performance has improved.
streams-flow-controlled/walltime/10-streams/each-1048576-bytes: Change within noise threshold.
       time:   [86.194 ms 86.485 ms 86.839 ms]
       change: [-1.9233% -1.3388% -0.7785] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 10 outliers among 100 measurements (10.00%)
4 (4.00%) low mild
5 (5.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-false/varying-seeds: Change within noise threshold.
       time:   [20.439 ms 20.456 ms 20.476 ms]
       change: [-0.4187% -0.2330% -0.0774] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
transfer/walltime/pacing-true/varying-seeds: Change within noise threshold.
       time:   [20.979 ms 21.005 ms 21.043 ms]
       change: [-0.6261% -0.4676% -0.2648] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-false/same-seed: Change within noise threshold.
       time:   [20.552 ms 20.580 ms 20.624 ms]
       change: [-1.1455% -0.8770% -0.6097] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-true/same-seed: Change within noise threshold.
       time:   [20.781 ms 20.809 ms 20.852 ms]
       change: [-1.8825% -1.6518% -1.3986] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
1 (1.00%) high mild
1 (1.00%) high severe

Download data for profiler.firefox.com or download performance comparison data.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to main at 94e4eea.

neqo-pr as clientneqo-pr as server
neqo-pr vs. go-x-net: BP BA
neqo-pr vs. haproxy: BP BA
neqo-pr vs. kwik: BP BA
neqo-pr vs. linuxquic: ⚠️L1
neqo-pr vs. lsquic: baseline result missing
neqo-pr vs. msquic: A L1 C1
neqo-pr vs. mvfst: A BP BA
neqo-pr vs. neqo: A
neqo-pr vs. nginx: BP BA
neqo-pr vs. ngtcp2: CM
neqo-pr vs. picoquic: A
neqo-pr vs. quic-go: A
neqo-pr vs. quic-zig: B
neqo-pr vs. quiche: BP BA
neqo-pr vs. s2n-quic: BA CM
neqo-pr vs. tquic: S BP BA
neqo-pr vs. xquic: A ⚠️L1 C1
aioquic vs. neqo-pr: 🚀L1 CM
go-x-net vs. neqo-pr: ⚠️BP CM
kwik vs. neqo-pr: BP BA CM
msquic vs. neqo-pr: CM
mvfst vs. neqo-pr: Z A L1 C1 CM
neqo vs. neqo-pr: A
openssl vs. neqo-pr: LR M A CM
quic-go vs. neqo-pr: CM
quiche vs. neqo-pr: 🚀C1 CM
quinn vs. neqo-pr: V2 CM
s2n-quic vs. neqo-pr: CM
tquic vs. neqo-pr: CM
xquic vs. neqo-pr: M CM
All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Jun 1, 2026

Client/server transfer results

Performance differences relative to 94e4eea.

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server (params) Mean ± σ Min Max MiB/s ± σ Δ baseline Δ baseline
quiche-neqo-cubic 179.4 ± 3.9 173.8 202.4 178.3 ± 8.2 💚 -2.2 -1.2%

Table above only shows statistically significant changes. See all results below.

All results

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server (params) Mean ± σ Min Max MiB/s ± σ Δ baseline Δ baseline
google-google-nopacing 460.8 ± 2.0 452.7 468.1 69.4 ± 16.0
google-neqo-cubic 264.7 ± 2.3 261.3 272.8 120.9 ± 13.9 -0.1 -0.1%
msquic-msquic-nopacing 133.5 ± 35.6 109.6 339.3 239.8 ± 0.9
msquic-neqo-cubic 151.3 ± 33.6 114.4 402.5 211.5 ± 1.0 -1.8 -1.2%
neqo-google-cubic 768.0 ± 3.3 763.0 781.9 41.7 ± 9.7 -0.2 -0.0%
neqo-msquic-cubic 145.2 ± 1.4 140.8 151.6 220.3 ± 22.9 -0.4 -0.3%
neqo-neqo-cubic 84.0 ± 2.5 79.1 90.9 380.7 ± 12.8 0.3 0.3%
neqo-neqo-cubic-nopacing 83.2 ± 2.2 78.7 88.8 384.6 ± 14.5 -0.3 -0.4%
neqo-neqo-newreno 83.8 ± 2.4 79.4 89.5 382.1 ± 13.3 -0.3 -0.4%
neqo-neqo-newreno-nopacing 83.2 ± 2.8 76.0 90.2 384.6 ± 11.4 0.1 0.1%
neqo-quiche-cubic 190.9 ± 2.2 186.2 195.5 167.6 ± 14.5 -0.3 -0.1%
neqo-s2n-cubic 215.8 ± 1.2 211.1 218.8 148.3 ± 26.7 -0.0 -0.0%
quiche-neqo-cubic 179.4 ± 3.9 173.8 202.4 178.3 ± 8.2 💚 -2.2 -1.2%
quiche-quiche-nopacing 138.5 ± 2.2 133.7 145.6 231.1 ± 14.5
s2n-neqo-cubic 215.0 ± 3.9 206.8 222.6 148.9 ± 8.2 0.3 0.2%
s2n-s2n-nopacing 292.5 ± 22.3 279.2 389.4 109.4 ± 1.4

Download data for profiler.firefox.com or download performance comparison data.

@larseggert larseggert enabled auto-merge June 2, 2026 06:07
@larseggert larseggert added this pull request to the merge queue Jun 2, 2026
Merged via the queue into mozilla:main with commit eae5fdf Jun 2, 2026
208 of 212 checks passed
@larseggert larseggert deleted the chore-bump-deps branch June 2, 2026 06:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants