Skip to content

chore: prepare v0.24.0#3481

Merged
omansfeld merged 1 commit intomozilla:mainfrom
omansfeld:prepare_v0.24.0
Mar 18, 2026
Merged

chore: prepare v0.24.0#3481
omansfeld merged 1 commit intomozilla:mainfrom
omansfeld:prepare_v0.24.0

Conversation

@omansfeld
Copy link
Copy Markdown
Collaborator

@omansfeld omansfeld commented Mar 16, 2026

I would like to cut a new release to get HyStart++ into Firefox, which would be the following changes:

Other most notable changes in that release would be SCONE (which will still be defaulted off):

And the QLOG changes:

Blocked on #3431
Blocked on #3460

@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.19%. Comparing base (7c5faa7) to head (53de273).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3481      +/-   ##
==========================================
- Coverage   94.29%   94.19%   -0.11%     
==========================================
  Files         127      131       +4     
  Lines       38739    39069     +330     
  Branches    38739    39069     +330     
==========================================
+ Hits        36528    36800     +272     
- Misses       1372     1420      +48     
- Partials      839      849      +10     
Flag Coverage Δ
freebsd 93.22% <ø> (-0.11%) ⬇️
linux 94.29% <ø> (+<0.01%) ⬆️
macos 94.18% <ø> (+<0.01%) ⬆️
windows 94.29% <ø> (+<0.01%) ⬆️

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

Components Coverage Δ
neqo-common 98.49% <ø> (ø)
neqo-crypto 86.90% <ø> (ø)
neqo-http3 93.91% <ø> (ø)
neqo-qpack 94.81% <ø> (ø)
neqo-transport 95.23% <ø> (ø)
neqo-udp 82.97% <ø> (+0.42%) ⬆️
mtu 86.61% <ø> (ø)

@larseggert
Copy link
Copy Markdown
Collaborator

We can't land SCONE without #3460 or an alternative @martinthomson is working on.

@larseggert larseggert added the blocked Blocked on something else label Mar 17, 2026
@omansfeld
Copy link
Copy Markdown
Collaborator Author

We can't land SCONE without #3460 or an alternative @martinthomson is working on.

I would really like to get HyStart++ in to get experimentation started. I see the linked PR already has a patch, so I assume it might merge soon?

If it might take a while, maybe we could do a release without SCONE?

@larseggert
Copy link
Copy Markdown
Collaborator

We can totally release without SCONE. We can also add a connection parameter for SCONE (without the fix) and default it to off for now. (@martinthomson prefers to not loop, and so is trying to get the SCONE spec to disallow multiple markings: ietf-wg-scone/scone#143)

@larseggert
Copy link
Copy Markdown
Collaborator

larseggert commented Mar 17, 2026

If possible, I would also like to include these in the next revision (still need landing):

@omansfeld
Copy link
Copy Markdown
Collaborator Author

The connection parameter was already added in #3450, it will now be getting defaulted to off with #3492.

If possible I would like to get a release out today because I need to start experimentation early next week and it will probably take a bit to get reviews for the release on the gecko side.

I'm also fine doing a dot release next week to get stuff in that didn't land today.

@larseggert larseggert removed the blocked Blocked on something else label Mar 18, 2026
@mxinden
Copy link
Copy Markdown
Member

mxinden commented Mar 18, 2026

If possible, I would also like to include these in the next revision (still need landing):

* [fix: Handle `ENOBUFS` in UDP send #3482](https://github.com/mozilla/neqo/pull/3482)

* [feat: emit `pacing_rate` and `ssthresh` in qlog #3435](https://github.com/mozilla/neqo/pull/3435)

* [feat: Enable the Apple fast datapath #3455](https://github.com/mozilla/neqo/pull/3455)

I reviewed each of them.

I suggest proceeding here. With #3460 merged, I don't think anything else is blocking Neqo v0.24.0. I suggest not blocking on any of the pending efforts. I am happy to cut another release once those merged.

@omansfeld omansfeld marked this pull request as ready for review March 18, 2026 16:40
Copilot AI review requested due to automatic review settings March 18, 2026 16:40
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

Prepares the Neqo workspace for the v0.24.0 release by bumping the workspace package version and updating the lockfile so member crate versions are consistent. This aligns with the release goal of shipping recent transport/CC, stats, SCONE, and qlog work into downstream consumers (e.g., Firefox).

Changes:

  • Bump [workspace.package] version from 0.23.1 to 0.24.0.
  • Update Cargo.lock entries for workspace crates to reflect 0.24.0.

Reviewed changes

Copilot reviewed 1 out of 2 changed files in this pull request and generated no comments.

File Description
Cargo.toml Updates the workspace package version to 0.24.0.
Cargo.lock Syncs lockfile workspace crate versions to 0.24.0.

You can also share your feedback on Copilot code review. Take the survey.

@omansfeld omansfeld enabled auto-merge March 18, 2026 16:44
@omansfeld omansfeld added this pull request to the merge queue Mar 18, 2026
Merged via the queue into mozilla:main with commit ef4ac2b Mar 18, 2026
181 of 186 checks passed
@omansfeld omansfeld deleted the prepare_v0.24.0 branch March 18, 2026 17:06
@github-actions
Copy link
Copy Markdown
Contributor

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to main at 7c5faa7.

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: S L1 C1 BP BA
neqo-pr vs. linuxquic: baseline result missing
neqo-pr vs. lsquic: run cancelled after 20 min
neqo-pr vs. msquic: A L1 C1
neqo-pr vs. mvfst: H DC LR M R Z 3 B U A L1 L2 C1 C2 6 BP BA
neqo-pr vs. neqo: Z A
neqo-pr vs. nginx: 🚀L1 BP BA
neqo-pr vs. ngtcp2: CM
neqo-pr vs. picoquic: A ⚠️C1
neqo-pr vs. quic-go: A
neqo-pr vs. quiche: BP BA
neqo-pr vs. s2n-quic: 🚀BP BA CM
neqo-pr vs. tquic: S BP BA
neqo-pr vs. xquic: A 🚀L1 ⚠️C1
aioquic vs. neqo-pr: Z CM
go-x-net vs. neqo-pr: CM
kwik vs. neqo-pr: Z BP BA CM
linuxquic vs. neqo-pr: Z
lsquic vs. neqo-pr: Z
msquic vs. neqo-pr: Z CM
mvfst vs. neqo-pr: Z A L1 C1 CM
neqo vs. neqo-pr: Z A ⚠️BP
openssl vs. neqo-pr: LR M A ⚠️BA CM
picoquic vs. neqo-pr: Z CM
quic-go vs. neqo-pr: 🚀Z ⚠️BP CM
quiche vs. neqo-pr: Z CM
quinn vs. neqo-pr: Z 🚀C1 V2 CM
s2n-quic vs. neqo-pr: 🚀BA CM
tquic vs. neqo-pr: Z CM
xquic vs. neqo-pr: baseline result missing
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

Client/server transfer results

Performance differences relative to 7c5faa7.

No significant performance differences.

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 451.6 ± 4.5 445.3 471.6 70.9 ± 7.1
google-neqo-cubic 268.4 ± 4.3 260.7 280.9 119.2 ± 7.4 -0.9 -0.3%
msquic-msquic-nopacing 178.6 ± 86.7 113.0 586.5 179.2 ± 0.4
msquic-neqo-cubic 185.5 ± 61.2 130.1 430.7 172.5 ± 0.5 -15.3 -7.6%
neqo-google-cubic 749.6 ± 4.4 742.2 758.7 42.7 ± 7.3 0.4 0.1%
neqo-msquic-cubic 153.6 ± 4.6 144.6 163.0 208.3 ± 7.0 -0.6 -0.4%
neqo-neqo-cubic 97.6 ± 5.0 88.1 108.3 327.7 ± 6.4 -0.4 -0.5%
neqo-neqo-cubic-nopacing 96.5 ± 4.4 87.6 106.9 331.6 ± 7.3 -0.9 -0.9%
neqo-neqo-newreno 96.1 ± 4.2 87.9 105.4 332.8 ± 7.6 0.2 0.2%
neqo-neqo-newreno-nopacing 96.9 ± 4.4 88.8 105.7 330.2 ± 7.3 0.3 0.3%
neqo-quiche-cubic 191.2 ± 3.3 186.3 203.2 167.4 ± 9.7 -0.4 -0.2%
neqo-s2n-cubic 217.2 ± 4.0 211.7 227.6 147.3 ± 8.0 -0.4 -0.2%
quiche-neqo-cubic 178.3 ± 4.6 169.7 186.6 179.5 ± 7.0 0.0 0.0%
quiche-quiche-nopacing 143.1 ± 4.5 135.9 155.8 223.6 ± 7.1
s2n-neqo-cubic 220.6 ± 5.1 210.4 232.3 145.1 ± 6.3 -0.8 -0.4%
s2n-s2n-nopacing 290.8 ± 4.8 282.9 314.1 110.0 ± 6.7

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

@github-actions
Copy link
Copy Markdown
Contributor

Benchmark results

No significant performance differences relative to ef4ac2b.

All results
transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1504: Change within noise threshold.
       time:   [201.74 ms 202.16 ms 202.65 ms]
       thrpt:  [493.47 MiB/s 494.67 MiB/s 495.69 MiB/s]
change:
       time:   [+0.4130% +0.6917% +0.9998] (p = 0.00 < 0.05)
       thrpt:  [-0.9899% -0.6869% -0.4113]
       Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
3 (3.00%) low mild
1 (1.00%) high severe
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1504: No change in performance detected.
       time:   [287.27 ms 289.22 ms 291.24 ms]
       thrpt:  [34.336 Kelem/s 34.576 Kelem/s 34.811 Kelem/s]
change:
       time:   [-0.4587% +0.5423% +1.5841] (p = 0.28 > 0.05)
       thrpt:  [-1.5594% -0.5394% +0.4608]
       No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
transfer/1-conn/1-1b-resp (aka. HPS)/mtu-1504: No change in performance detected.
       time:   [38.509 ms 38.627 ms 38.760 ms]
       thrpt:  [25.800   B/s 25.889   B/s 25.968   B/s]
change:
       time:   [-0.3421% +0.1676% +0.6945] (p = 0.52 > 0.05)
       thrpt:  [-0.6897% -0.1673% +0.3432]
       No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high severe
transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1504: Change within noise threshold.
       time:   [204.57 ms 205.11 ms 205.80 ms]
       thrpt:  [485.92 MiB/s 487.55 MiB/s 488.83 MiB/s]
change:
       time:   [+0.0491% +0.3837% +0.7311] (p = 0.03 < 0.05)
       thrpt:  [-0.7258% -0.3823% -0.0491]
       Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
1 (1.00%) low mild
2 (2.00%) high mild
2 (2.00%) high severe
streams/walltime/1-streams/each-1000-bytes: Change within noise threshold.
       time:   [586.43 µs 590.23 µs 596.04 µs]
       change: [+0.2403% +1.0312% +2.1325] (p = 0.01 < 0.05)
       Change within noise threshold.
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) high severe
streams/walltime/1000-streams/each-1-bytes: Change within noise threshold.
       time:   [12.499 ms 12.519 ms 12.540 ms]
       change: [+0.9552% +1.1928% +1.4351] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
streams/walltime/1000-streams/each-1000-bytes: Change within noise threshold.
       time:   [45.152 ms 45.251 ms 45.407 ms]
       change: [+0.0691% +0.3251% +0.7284] (p = 0.02 < 0.05)
       Change within noise threshold.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high severe
transfer/walltime/pacing-false/varying-seeds: Change within noise threshold.
       time:   [79.901 ms 80.004 ms 80.145 ms]
       change: [+2.1404% +2.2887% +2.4782] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low severe
1 (1.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-true/varying-seeds: Change within noise threshold.
       time:   [80.083 ms 80.199 ms 80.366 ms]
       change: [+0.4625% +0.6314% +0.8265] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severe
transfer/walltime/pacing-false/same-seed: Change within noise threshold.
       time:   [80.126 ms 80.218 ms 80.332 ms]
       change: [+0.1430% +0.2715% +0.4207] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 4 outliers among 100 measurements (4.00%)
1 (1.00%) low mild
1 (1.00%) high mild
2 (2.00%) high severe
transfer/walltime/pacing-true/same-seed: Change within noise threshold.
       time:   [80.005 ms 80.143 ms 80.314 ms]
       change: [+0.3554% +0.5476% +0.7445] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 7 outliers among 100 measurements (7.00%)
7 (7.00%) high severe

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

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.

4 participants