Skip to content

docs(README): add release documentation#3586

Merged
mxinden merged 1 commit intomozilla:mainfrom
mxinden:release-docs
May 4, 2026
Merged

docs(README): add release documentation#3586
mxinden merged 1 commit intomozilla:mainfrom
mxinden:release-docs

Conversation

@mxinden
Copy link
Copy Markdown
Member

@mxinden mxinden commented May 4, 2026

Simple documentation on how to release Neqo and downstream into Firefox.

Simple documentation on how to release Neqo and downstream into Firefox.
@mxinden mxinden requested a review from omansfeld May 4, 2026 11:19
Copilot AI review requested due to automatic review settings May 4, 2026 11:19
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

Adds a release playbook to the repository README that documents how to cut Neqo releases and land the corresponding dependency updates into Firefox.

Changes:

  • Documented Neqo semantic versioning expectations while <1.0 (minor vs patch meaning).
  • Added step-by-step guidance for minor releases from main (tagging, GitHub release, Bugzilla, Firefox vendoring/vetting, Phabricator submission).
  • Added step-by-step guidance for patch releases from long-lived vX.Y release branches.

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

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.

Clear, well-structured release runbook. The step-by-step flow for both minor and patch releases is easy to follow, and the cross-references to real Bugzilla/Phabricator examples are a nice touch for anyone doing this for the first time.

One optional suggestion inline about adding a CI verification step before publishing the GitHub release.

Comment thread README.md
@codecov
Copy link
Copy Markdown

codecov Bot commented May 4, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.85%. Comparing base (c032e66) to head (d2deb83).
⚠️ Report is 3 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3586      +/-   ##
==========================================
- Coverage   95.00%   94.85%   -0.15%     
==========================================
  Files         109      114       +5     
  Lines       37586    37931     +345     
  Branches    37586    37931     +345     
==========================================
+ Hits        35709    35980     +271     
- Misses       1187     1251      +64     
- Partials      690      700      +10     
Flag Coverage Δ
freebsd 93.97% <ø> (-0.13%) ⬇️
linux 95.00% <ø> (ø)
macos 94.95% <ø> (ø)
windows 95.00% <ø> (ø)

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.14% <ø> (ø)
neqo-transport 95.61% <100.00%> (ø)
neqo-udp 84.90% <ø> (ø)
mtu 86.61% <ø> (ø)

Copy link
Copy Markdown
Collaborator

@omansfeld omansfeld left a comment

Choose a reason for hiding this comment

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

Compared with my notes and looks good! Thanks for doing the write-up, specifically for uplifts, too.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented May 4, 2026

Benchmark results

No significant performance differences relative to 602dd4e.

All results
transfer/1-conn/1-100mb-resp (aka. Download): No change in performance detected.
       time:   [201.05 ms 201.37 ms 201.73 ms]
       thrpt:  [495.71 MiB/s 496.61 MiB/s 497.38 MiB/s]
change:
       time:   [-0.3307% -0.1233% +0.0979] (p = 0.27 > 0.05)
       thrpt:  [-0.0978% +0.1235% +0.3318]
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS): No change in performance detected.
       time:   [283.37 ms 285.34 ms 287.40 ms]
       thrpt:  [34.794 Kelem/s 35.045 Kelem/s 35.290 Kelem/s]
change:
       time:   [-1.7926% -0.8189% +0.2032] (p = 0.12 > 0.05)
       thrpt:  [-0.2028% +0.8256% +1.8253]
       No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild
transfer/1-conn/1-1b-resp (aka. HPS): Change within noise threshold.
       time:   [39.040 ms 39.235 ms 39.449 ms]
       thrpt:  [25.349   B/s 25.487   B/s 25.615   B/s]
change:
       time:   [+0.2023% +0.8751% +1.5459] (p = 0.01 < 0.05)
       thrpt:  [-1.5224% -0.8675% -0.2019]
       Change within noise threshold.
Found 12 outliers among 100 measurements (12.00%)
12 (12.00%) high severe
transfer/1-conn/1-100mb-req (aka. Upload): Change within noise threshold.
       time:   [203.29 ms 203.70 ms 204.17 ms]
       thrpt:  [489.79 MiB/s 490.92 MiB/s 491.90 MiB/s]
change:
       time:   [+0.2640% +0.6569% +1.0240] (p = 0.00 < 0.05)
       thrpt:  [-1.0136% -0.6526% -0.2633]
       Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
streams/walltime/1-streams/each-1000-bytes: Change within noise threshold.
       time:   [587.33 µs 588.94 µs 590.90 µs]
       change: [-1.4988% -1.0189% -0.5548] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 11 outliers among 100 measurements (11.00%)
6 (6.00%) high mild
5 (5.00%) high severe
streams/walltime/1000-streams/each-1-bytes: Change within noise threshold.
       time:   [12.235 ms 12.256 ms 12.278 ms]
       change: [-0.8136% -0.5018% -0.2169] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
streams/walltime/1000-streams/each-1000-bytes: No change in performance detected.
       time:   [44.505 ms 44.570 ms 44.637 ms]
       change: [-0.3500% -0.1824% +0.0235] (p = 0.06 > 0.05)
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
transfer/walltime/pacing-false/varying-seeds: Change within noise threshold.
       time:   [23.283 ms 23.314 ms 23.362 ms]
       change: [-1.0048% -0.8503% -0.6383] (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-true/varying-seeds: Change within noise threshold.
       time:   [23.560 ms 23.593 ms 23.639 ms]
       change: [-0.6627% -0.4544% -0.2170] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-false/same-seed: Change within noise threshold.
       time:   [23.398 ms 23.424 ms 23.461 ms]
       change: [-1.1559% -0.9971% -0.8225] (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:   [23.829 ms 23.853 ms 23.882 ms]
       change: [-1.1346% -0.9302% -0.7592] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 5 outliers among 100 measurements (5.00%)
4 (4.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 May 4, 2026

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to main at 602dd4e.

neqo-pr as clientneqo-pr as server
neqo-pr vs. aioquic: ⚠️L1
neqo-pr vs. go-x-net: BP BA
neqo-pr vs. haproxy: 🚀L1 BP BA
neqo-pr vs. kwik: BP BA
neqo-pr vs. linuxquic: run cancelled after 20 min
neqo-pr vs. lsquic: run cancelled after 20 min
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: 🚀L1 CM
neqo-pr vs. picoquic: A
neqo-pr vs. quic-go: A
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
aioquic vs. neqo-pr: CM
go-x-net vs. neqo-pr: 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
quic-zig vs. neqo-pr: DC 🚀BP CM
quiche vs. neqo-pr: 🚀BP CM
quinn vs. neqo-pr: V2 CM
s2n-quic vs. neqo-pr: ⚠️BA 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 May 4, 2026

Client/server transfer results

Performance differences relative to 602dd4e.

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
neqo-msquic-cubic 152.3 ± 7.5 145.0 177.2 210.1 ± 4.3 💔 2.5 1.7%
neqo-neqo-newreno 91.2 ± 2.6 86.7 99.6 350.8 ± 12.3 💚 -1.1 -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 455.2 ± 2.0 452.2 468.0 70.3 ± 16.0
google-neqo-cubic 269.0 ± 2.7 264.0 279.5 118.9 ± 11.9 -0.6 -0.2%
msquic-msquic-nopacing 125.4 ± 32.9 111.1 309.0 255.1 ± 1.0
msquic-neqo-cubic 153.2 ± 34.8 119.5 352.3 208.9 ± 0.9 4.3 2.9%
neqo-google-cubic 768.0 ± 3.0 763.0 781.1 41.7 ± 10.7 0.8 0.1%
neqo-msquic-cubic 152.3 ± 7.5 145.0 177.2 210.1 ± 4.3 💔 2.5 1.7%
neqo-neqo-cubic 91.7 ± 2.3 87.5 97.9 349.1 ± 13.9 -0.1 -0.1%
neqo-neqo-cubic-nopacing 91.0 ± 2.6 85.7 96.9 351.8 ± 12.3 0.5 0.5%
neqo-neqo-newreno 91.2 ± 2.6 86.7 99.6 350.8 ± 12.3 💚 -1.1 -1.2%
neqo-neqo-newreno-nopacing 90.7 ± 2.5 85.7 96.9 352.9 ± 12.8 -0.0 -0.0%
neqo-quiche-cubic 189.8 ± 2.9 184.4 200.6 168.6 ± 11.0 -0.2 -0.1%
neqo-s2n-cubic 215.5 ± 1.7 209.8 221.7 148.5 ± 18.8 -0.0 -0.0%
quiche-neqo-cubic 171.1 ± 3.1 164.6 179.7 187.0 ± 10.3 0.5 0.3%
quiche-quiche-nopacing 140.3 ± 2.5 135.1 149.3 228.1 ± 12.8
s2n-neqo-cubic 214.4 ± 3.4 206.2 224.5 149.2 ± 9.4 -0.5 -0.3%
s2n-s2n-nopacing 298.6 ± 33.2 276.8 392.0 107.2 ± 1.0

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

@mxinden mxinden enabled auto-merge May 4, 2026 16:52
@mxinden mxinden added this pull request to the merge queue May 4, 2026
@larseggert larseggert mentioned this pull request May 4, 2026
Merged via the queue into mozilla:main with commit 712eff2 May 4, 2026
191 checks passed
@mxinden mxinden deleted the release-docs branch May 4, 2026 18:16
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