Skip to content

ci: add windows-11-arm runner#2591

Draft
mxinden wants to merge 44 commits intomozilla:mainfrom
mxinden:ci-windows-arm
Draft

ci: add windows-11-arm runner#2591
mxinden wants to merge 44 commits intomozilla:mainfrom
mxinden:ci-windows-arm

Conversation

@mxinden
Copy link
Member

@mxinden mxinden commented Apr 17, 2025

@larseggert
Copy link
Collaborator

rustup not being there may be due to actions/partner-runner-images#77

Maybe we just install it?

@github-actions
Copy link
Contributor

github-actions bot commented Apr 17, 2025

Benchmark results

Performance differences relative to 847a598.

1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client: No change in performance detected.
       time:   [693.78 ms 697.61 ms 701.42 ms]
       thrpt:  [142.57 MiB/s 143.35 MiB/s 144.14 MiB/s]
change:
       time:   [-1.5580% -0.7959% +0.0525%] (p = 0.05 > 0.05)
       thrpt:  [-0.0524% +0.8022% +1.5826%]
1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client: No change in performance detected.
       time:   [352.25 ms 353.62 ms 354.98 ms]
       thrpt:  [28.171 Kelem/s 28.279 Kelem/s 28.389 Kelem/s]
change:
       time:   [-0.3659% +0.2205% +0.7982%] (p = 0.47 > 0.05)
       thrpt:  [-0.7918% -0.2200% +0.3673%]
1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client: No change in performance detected.
       time:   [25.488 ms 25.633 ms 25.785 ms]
       thrpt:  [38.782  elem/s 39.012  elem/s 39.234  elem/s]
change:
       time:   [-1.3696% -0.5205% +0.2719%] (p = 0.22 > 0.05)
       thrpt:  [-0.2712% +0.5232% +1.3886%]

Found 4 outliers among 100 measurements (4.00%)
4 (4.00%) high mild

1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client: 💚 Performance has improved.
       time:   [1.7915 s 1.8133 s 1.8361 s]
       thrpt:  [54.463 MiB/s 55.147 MiB/s 55.820 MiB/s]
change:
       time:   [-8.3956% -6.6210% -4.8312%] (p = 0.00 < 0.05)
       thrpt:  [+5.0765% +7.0904% +9.1650%]

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild

decode 4096 bytes, mask ff: No change in performance detected.
       time:   [12.070 µs 12.100 µs 12.138 µs]
       change: [-0.4081% -0.1094% +0.1954%] (p = 0.49 > 0.05)

Found 12 outliers among 100 measurements (12.00%)
3 (3.00%) low severe
2 (2.00%) low mild
1 (1.00%) high mild
6 (6.00%) high severe

decode 1048576 bytes, mask ff: No change in performance detected.
       time:   [3.1272 ms 3.1348 ms 3.1442 ms]
       change: [-0.7339% -0.2697% +0.1582%] (p = 0.26 > 0.05)

Found 6 outliers among 100 measurements (6.00%)
6 (6.00%) high severe

decode 4096 bytes, mask 7f: No change in performance detected.
       time:   [20.168 µs 20.224 µs 20.286 µs]
       change: [-0.3661% +0.0032% +0.4244%] (p = 0.98 > 0.05)

Found 21 outliers among 100 measurements (21.00%)
1 (1.00%) low severe
4 (4.00%) low mild
2 (2.00%) high mild
14 (14.00%) high severe

decode 1048576 bytes, mask 7f: No change in performance detected.
       time:   [5.2471 ms 5.2602 ms 5.2751 ms]
       change: [-0.3443% -0.0005% +0.3593%] (p = 1.00 > 0.05)

Found 14 outliers among 100 measurements (14.00%)
1 (1.00%) low mild
13 (13.00%) high severe

decode 4096 bytes, mask 3f: No change in performance detected.
       time:   [7.0074 µs 7.0185 µs 7.0385 µs]
       change: [-0.8880% -0.1196% +0.7775%] (p = 0.80 > 0.05)

Found 15 outliers among 100 measurements (15.00%)
5 (5.00%) low severe
2 (2.00%) low mild
1 (1.00%) high mild
7 (7.00%) high severe

decode 1048576 bytes, mask 3f: No change in performance detected.
       time:   [1.7922 ms 1.7980 ms 1.8051 ms]
       change: [-0.6316% -0.0830% +0.4601%] (p = 0.75 > 0.05)

Found 7 outliers among 100 measurements (7.00%)
1 (1.00%) high mild
6 (6.00%) high severe

1000 streams of 1 bytes/multistream: No change in performance detected.
       time:   [25.576 ms 25.602 ms 25.628 ms]
       change: [-0.0568% +0.0869% +0.2311%] (p = 0.23 > 0.05)

Found 57 outliers among 500 measurements (11.40%)
53 (10.60%) high mild
4 (0.80%) high severe

1000 streams of 1000 bytes/multistream: Change within noise threshold.
       time:   [143.92 ms 143.96 ms 143.99 ms]
       change: [+0.0182% +0.0530% +0.0891%] (p = 0.00 < 0.05)

Found 2 outliers among 500 measurements (0.40%)
2 (0.40%) high mild

coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [94.809 ns 95.147 ns 95.482 ns]
       change: [-0.4014% +0.0250% +0.4502%] (p = 0.91 > 0.05)

Found 13 outliers among 100 measurements (13.00%)
13 (13.00%) high mild

coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [112.69 ns 113.02 ns 113.37 ns]
       change: [-0.6434% -0.1758% +0.2601%] (p = 0.46 > 0.05)

Found 16 outliers among 100 measurements (16.00%)
1 (1.00%) low severe
2 (2.00%) low mild
13 (13.00%) high severe

coalesce_acked_from_zero 10+1 entries: No change in performance detected.
       time:   [111.94 ns 112.29 ns 112.74 ns]
       change: [-0.5043% +0.2238% +0.9630%] (p = 0.59 > 0.05)

Found 15 outliers among 100 measurements (15.00%)
4 (4.00%) low severe
4 (4.00%) low mild
7 (7.00%) high severe

coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [92.961 ns 93.453 ns 93.987 ns]
       change: [-0.5859% +0.4267% +1.4132%] (p = 0.41 > 0.05)

Found 6 outliers among 100 measurements (6.00%)
5 (5.00%) high mild
1 (1.00%) high severe

RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [117.33 ms 117.38 ms 117.44 ms]
       change: [+0.3764% +0.4410% +0.5103%] (p = 0.00 < 0.05)

Found 15 outliers among 100 measurements (15.00%)
1 (1.00%) low severe
5 (5.00%) low mild
9 (9.00%) high mild

SentPackets::take_ranges: No change in performance detected.
       time:   [8.2627 µs 8.5307 µs 8.7854 µs]
       change: [-3.2255% -0.6526% +2.0184%] (p = 0.63 > 0.05)

Found 23 outliers among 100 measurements (23.00%)
1 (1.00%) low severe
18 (18.00%) low mild
4 (4.00%) high mild

transfer/pacing-false/varying-seeds: Change within noise threshold.
       time:   [35.824 ms 35.885 ms 35.945 ms]
       change: [+0.7514% +1.0002% +1.2374%] (p = 0.00 < 0.05)
transfer/pacing-true/varying-seeds: Change within noise threshold.
       time:   [36.695 ms 36.799 ms 36.903 ms]
       change: [+0.1973% +0.6341% +1.0569%] (p = 0.00 < 0.05)
transfer/pacing-false/same-seed: Change within noise threshold.
       time:   [35.490 ms 35.542 ms 35.597 ms]
       change: [+0.5478% +0.7464% +0.9507%] (p = 0.00 < 0.05)

Found 4 outliers among 100 measurements (4.00%)
4 (4.00%) high mild

transfer/pacing-true/same-seed: Change within noise threshold.
       time:   [37.377 ms 37.444 ms 37.512 ms]
       change: [+0.2418% +0.4769% +0.7140%] (p = 0.00 < 0.05)

Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) low mild

Client/server transfer results

Performance differences relative to 847a598.

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

Client Server CC Pacing Mean ± σ Min Max MiB/s ± σ Δ main Δ main
neqo neqo reno on 329.9 ± 46.9 287.4 514.3 97.0 ± 0.7 -3.4 -1.0%
neqo neqo reno 345.5 ± 111.8 287.9 848.4 92.6 ± 0.3 -10.0 -2.8%
neqo neqo cubic on 330.1 ± 48.8 299.6 508.4 96.9 ± 0.7 8.0 2.5%
neqo neqo cubic 333.7 ± 51.3 294.7 498.3 95.9 ± 0.6 3.2 1.0%
google neqo reno on 769.7 ± 88.4 571.2 918.9 41.6 ± 0.4 8.0 1.0%
google neqo reno 771.5 ± 90.3 547.4 946.8 41.5 ± 0.4 11.7 1.5%
google neqo cubic on 775.1 ± 109.7 575.2 1185.1 41.3 ± 0.3 19.7 2.6%
google neqo cubic 757.9 ± 83.4 556.9 886.6 42.2 ± 0.4 -4.3 -0.6%
google google 575.5 ± 41.0 551.8 781.3 55.6 ± 0.8 2.7 0.5%
neqo msquic reno on 273.6 ± 42.3 243.9 430.1 117.0 ± 0.8 4.9 1.8%
neqo msquic reno 263.9 ± 18.6 243.4 312.4 121.2 ± 1.7 -9.9 -3.6%
neqo msquic cubic on 270.9 ± 36.5 245.6 434.1 118.1 ± 0.9 7.5 2.9%
neqo msquic cubic 267.9 ± 38.0 240.8 448.0 119.5 ± 0.8 0.5 0.2%
msquic msquic 196.8 ± 39.3 159.3 339.8 162.6 ± 0.8 0.1 0.1%

⬇️ Download logs

@larseggert
Copy link
Collaborator

This is now stuck on actions/partner-runner-images#90

@larseggert larseggert added the blocked Blocked on something else label Apr 24, 2025
@codecov
Copy link

codecov bot commented Jul 19, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.12%. Comparing base (4b3cc44) to head (818ff13).
⚠️ Report is 7 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2591      +/-   ##
==========================================
- Coverage   94.26%   94.12%   -0.14%     
==========================================
  Files         125      129       +4     
  Lines       37973    38342     +369     
  Branches    37973    38342     +369     
==========================================
+ Hits        35795    36091     +296     
- Misses       1339     1402      +63     
- Partials      839      849      +10     
Flag Coverage Δ
freebsd 82.42% <ø> (-10.85%) ⬇️
linux 94.26% <ø> (+0.02%) ⬆️
macos 94.13% <ø> (-0.02%) ⬇️
windows 94.24% <ø> (+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.31% <ø> (-0.60%) ⬇️
neqo-http3 93.91% <100.00%> (+0.02%) ⬆️
neqo-qpack 94.79% <ø> (ø)
neqo-transport 95.21% <ø> (-0.02%) ⬇️
neqo-udp 82.47% <ø> (-0.43%) ⬇️
mtu 86.61% <ø> (ø)

@larseggert
Copy link
Collaborator

There is a new version of the Win11 ARM image, but it's still shipping with the amd64 llvm toolchain.

@larseggert
Copy link
Collaborator

Now blocked because NSPR/NSS don't build on Windows/ARM. Sigh.

@github-actions
Copy link
Contributor

github-actions bot commented Sep 19, 2025

🐰 Bencher Report

Branchci-windows-arm
TestbedOn-prem

🚨 1 Alert

IterationBenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Upper Boundary
(Limit %)
3neqo-msquic-cubicLatency
milliseconds (ms)
📈 plot
🚷 threshold
🚨 alert (🔔)
159.62 ms
(+1.56%)Baseline: 157.16 ms
159.08 ms
(100.34%)

Click to view all benchmark results
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
google-neqo-cubic📈 view plot
🚷 view threshold
274.28 ms
(-1.85%)Baseline: 279.44 ms
286.11 ms
(95.87%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
msquic-neqo-cubic📈 view plot
🚷 view threshold
216.72 ms
(+4.04%)Baseline: 208.30 ms
240.34 ms
(90.17%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-google-cubic📈 view plot
🚷 view threshold
743.71 ms
(-3.06%)Baseline: 767.22 ms
789.20 ms
(94.24%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-msquic-cubic📈 view plot
🚷 view threshold
🚨 view alert (🔔)
159.62 ms
(+1.56%)Baseline: 157.16 ms
159.08 ms
(100.34%)

BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-neqo-cubic-nopacing📈 view plot
🚷 view threshold
96.69 ms
(+0.34%)Baseline: 96.36 ms
98.23 ms
(98.43%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-neqo-cubic📈 view plot
🚷 view threshold
98.32 ms
(+0.84%)Baseline: 97.50 ms
99.81 ms
(98.51%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-neqo-reno-nopacing📈 view plot
🚷 view threshold
97.36 ms
(+0.68%)Baseline: 96.71 ms
99.24 ms
(98.11%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-neqo-reno📈 view plot
🚷 view threshold
96.15 ms
(-1.38%)Baseline: 97.49 ms
99.65 ms
(96.48%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-quiche-cubic📈 view plot
🚷 view threshold
193.99 ms
(+0.81%)Baseline: 192.43 ms
195.22 ms
(99.37%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
neqo-s2n-cubic📈 view plot
🚷 view threshold
222.45 ms
(+0.80%)Baseline: 220.67 ms
224.26 ms
(99.19%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
quiche-neqo-cubic📈 view plot
🚷 view threshold
153.94 ms
(+0.10%)Baseline: 153.78 ms
156.51 ms
(98.36%)
BenchmarkLatencyBenchmark Result
milliseconds (ms)
(Result Δ%)
Upper Boundary
milliseconds (ms)
(Limit %)
s2n-neqo-cubic📈 view plot
🚷 view threshold
173.14 ms
(-0.40%)Baseline: 173.84 ms
177.40 ms
(97.60%)
🐰 View full continuous benchmarking report in Bencher

@github-actions
Copy link
Contributor

github-actions bot commented Sep 19, 2025

🐰 Bencher Report

Branchci-windows-arm
TestbedOn-prem

🚨 2 Alerts

BenchmarkMeasure
Units
ViewBenchmark Result
(Result Δ%)
Upper Boundary
(Limit %)
decode 1048576 bytes, mask 3fLatency
milliseconds (ms)
📈 plot
🚷 threshold
🚨 alert (🔔)
3.19 ms
(+82.82%)Baseline: 1.75 ms
2.44 ms
(130.78%)

decode 4096 bytes, mask 3fLatency
microseconds (µs)
📈 plot
🚷 threshold
🚨 alert (🔔)
12.52 µs
(+72.89%)Baseline: 7.24 µs
10.83 µs
(115.69%)

Click to view all benchmark results
BenchmarkLatencyBenchmark Result
nanoseconds (ns)
(Result Δ%)
Upper Boundary
nanoseconds (ns)
(Limit %)
1-conn/1-100mb-req/mtu-1504 (aka. Upload)/client📈 view plot
🚷 view threshold
206,750,000.00 ns
(-0.50%)Baseline: 207,784,721.19 ns
216,955,939.90 ns
(95.30%)
1-conn/1-100mb-resp/mtu-1504 (aka. Download)/client📈 view plot
🚷 view threshold
198,860,000.00 ns
(-1.56%)Baseline: 202,014,256.51 ns
211,741,996.80 ns
(93.92%)
1-conn/1-1b-resp/mtu-1504 (aka. HPS)/client📈 view plot
🚷 view threshold
38,524,000.00 ns
(+12.73%)Baseline: 34,174,594.80 ns
46,114,933.30 ns
(83.54%)
1-conn/10_000-parallel-1b-resp/mtu-1504 (aka. RPS)/client📈 view plot
🚷 view threshold
285,120,000.00 ns
(-1.32%)Baseline: 288,926,189.59 ns
302,132,017.61 ns
(94.37%)
1-streams/each-1000-bytes/simulated-time📈 view plot
🚷 view threshold
118,870,000.00 ns
(+0.05%)Baseline: 118,816,152.42 ns
120,511,375.01 ns
(98.64%)
1-streams/each-1000-bytes/wallclock-time📈 view plot
🚷 view threshold
581,520.00 ns
(-1.41%)Baseline: 589,838.29 ns
610,539.70 ns
(95.25%)
1000-streams/each-1-bytes/simulated-time📈 view plot
🚷 view threshold
2,331,900,000.00 ns
(-75.42%)Baseline: 9,488,156,877.32 ns
24,136,002,039.77 ns
(9.66%)
1000-streams/each-1-bytes/wallclock-time📈 view plot
🚷 view threshold
12,414,000.00 ns
(-7.05%)Baseline: 13,355,697.03 ns
15,178,786.71 ns
(81.79%)
1000-streams/each-1000-bytes/simulated-time📈 view plot
🚷 view threshold
16,396,000,000.00 ns
(-8.06%)Baseline: 17,833,628,252.79 ns
20,853,710,552.29 ns
(78.62%)
1000-streams/each-1000-bytes/wallclock-time📈 view plot
🚷 view threshold
50,039,000.00 ns
(-0.94%)Baseline: 50,516,011.15 ns
55,723,293.42 ns
(89.80%)
RxStreamOrderer::inbound_frame()📈 view plot
🚷 view threshold
110,250,000.00 ns
(+0.47%)Baseline: 109,735,743.49 ns
111,385,511.00 ns
(98.98%)
coalesce_acked_from_zero 1+1 entries📈 view plot
🚷 view threshold
89.68 ns
(+0.64%)Baseline: 89.11 ns
90.41 ns
(99.19%)
coalesce_acked_from_zero 10+1 entries📈 view plot
🚷 view threshold
105.49 ns
(-0.52%)Baseline: 106.04 ns
107.11 ns
(98.49%)
coalesce_acked_from_zero 1000+1 entries📈 view plot
🚷 view threshold
91.69 ns
(+0.86%)Baseline: 90.91 ns
95.26 ns
(96.25%)
coalesce_acked_from_zero 3+1 entries📈 view plot
🚷 view threshold
106.21 ns
(-0.30%)Baseline: 106.53 ns
107.53 ns
(98.77%)
decode 1048576 bytes, mask 3f📈 view plot
🚷 view threshold
🚨 view alert (🔔)
3,193,100.00 ns
(+82.82%)Baseline: 1,746,544.80 ns
2,441,571.23 ns
(130.78%)

decode 1048576 bytes, mask 7f📈 view plot
🚷 view threshold
2,598,700.00 ns
(-47.13%)Baseline: 4,914,819.33 ns
6,308,615.54 ns
(41.19%)
decode 1048576 bytes, mask ff📈 view plot
🚷 view threshold
1,842,600.00 ns
(-37.58%)Baseline: 2,951,985.69 ns
3,616,803.60 ns
(50.95%)
decode 4096 bytes, mask 3f📈 view plot
🚷 view threshold
🚨 view alert (🔔)
12,524.00 ns
(+72.89%)Baseline: 7,243.95 ns
10,825.19 ns
(115.69%)

decode 4096 bytes, mask 7f📈 view plot
🚷 view threshold
10,158.00 ns
(-47.05%)Baseline: 19,185.10 ns
24,634.26 ns
(41.24%)
decode 4096 bytes, mask ff📈 view plot
🚷 view threshold
7,237.30 ns
(-34.91%)Baseline: 11,118.22 ns
13,650.88 ns
(53.02%)
sent::Packets::take_ranges📈 view plot
🚷 view threshold
4,533.90 ns
(-3.19%)Baseline: 4,683.36 ns
4,925.01 ns
(92.06%)
transfer/pacing-false/same-seed/simulated-time/run📈 view plot
🚷 view threshold
23,941,000,000.00 ns
(-5.28%)Baseline: 25,274,386,194.03 ns
26,198,006,728.55 ns
(91.38%)
transfer/pacing-false/same-seed/wallclock-time/run📈 view plot
🚷 view threshold
23,501,000.00 ns
(-7.16%)Baseline: 25,313,871.27 ns
27,092,530.23 ns
(86.74%)
transfer/pacing-false/varying-seeds/simulated-time/run📈 view plot
🚷 view threshold
23,941,000,000.00 ns
(-4.66%)Baseline: 25,111,589,552.24 ns
25,778,572,951.39 ns
(92.87%)
transfer/pacing-false/varying-seeds/wallclock-time/run📈 view plot
🚷 view threshold
23,483,000.00 ns
(-7.76%)Baseline: 25,458,761.19 ns
27,322,591.82 ns
(85.95%)
transfer/pacing-true/same-seed/simulated-time/run📈 view plot
🚷 view threshold
23,676,000,000.00 ns
(-6.52%)Baseline: 25,326,604,477.61 ns
26,422,725,793.16 ns
(89.60%)
transfer/pacing-true/same-seed/wallclock-time/run📈 view plot
🚷 view threshold
23,722,000.00 ns
(-10.40%)Baseline: 26,474,578.36 ns
28,853,597.15 ns
(82.22%)
transfer/pacing-true/varying-seeds/simulated-time/run📈 view plot
🚷 view threshold
23,676,000,000.00 ns
(-4.99%)Baseline: 24,920,208,955.22 ns
25,629,840,254.81 ns
(92.38%)
transfer/pacing-true/varying-seeds/wallclock-time/run📈 view plot
🚷 view threshold
23,904,000.00 ns
(-7.91%)Baseline: 25,957,063.43 ns
27,916,652.27 ns
(85.63%)
🐰 View full continuous benchmarking report in Bencher

Copilot AI review requested due to automatic review settings September 23, 2025 12:15
Copy link
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 adds support for Windows ARM64 runners in GitHub Actions CI by introducing the windows-11-arm runner to the workflow matrices. The change enables cross-platform testing on the newly available Windows ARM64 hosted runners from GitHub.

  • Adds windows-11-arm to the OS matrix across multiple workflow files
  • Configures MSVC toolchain for ARM64 architecture support
  • Updates NSS build configuration to handle ARM64-specific environment variables

Reviewed Changes

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

Show a summary per file
File Description
.github/workflows/firefox.yml Adds windows-11-arm to the OS matrix for Firefox builds
.github/workflows/clippy.yml Adds windows-11-arm to the OS matrix for Clippy checks
.github/workflows/check.yml Adds windows-11-arm to matrix and includes ARM release builds
.github/actions/rust/action.yml Configures MSVC for ARM64 cross-compilation
.github/actions/nss/action.yml Updates NSS build with ARM64 support and environment configuration

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copilot AI review requested due to automatic review settings September 23, 2025 12:17
Copy link
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

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copilot AI review requested due to automatic review settings September 24, 2025 13:06
Copy link
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

Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Copilot AI review requested due to automatic review settings September 24, 2025 14:00
Copy link
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

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

@github-actions
Copy link
Contributor

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to 836046b.

neqo-latest as client

neqo-latest as server

All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-latest as client

neqo-latest as server

@larseggert
Copy link
Collaborator

@Not-Nik have you managed to get NSS to compile on Windows/ARM in the meantime? Any pointers?

@Not-Nik
Copy link

Not-Nik commented Dec 11, 2025

Not any further than we got in previous discussions, unfortunately.

@larseggert larseggert force-pushed the ci-windows-arm branch 3 times, most recently from 131bfed to bcd225d Compare February 24, 2026 09:19
@codspeed-hq
Copy link

codspeed-hq bot commented Feb 24, 2026

Merging this PR will degrade performance by 14.5%

❌ 6 regressed benchmarks
✅ 45 untouched benchmarks
⏩ 11 skipped benchmarks1

⚠️ Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
WallTime neqo-google 1.6 s 1.7 s -3.94%
WallTime neqo-s2n 512.3 ms 599.2 ms -14.5%
WallTime s2n-s2n 614.3 ms 652.6 ms -5.86%
WallTime msquic-neqo 417.9 ms 437.2 ms -4.42%
WallTime quiche-neqo 372.7 ms 400.4 ms -6.9%
WallTime quiche-quiche 328.8 ms 356.8 ms -7.83%

Comparing mxinden:ci-windows-arm (b13e3d8) with main (1368851)

Open in CodSpeed

Footnotes

  1. 11 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@larseggert larseggert force-pushed the ci-windows-arm branch 22 times, most recently from 81c042d to 31f780c Compare February 25, 2026 12:41
@github-actions
Copy link
Contributor

Failed Interop Tests

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

neqo-pr as clientneqo-pr as server
neqo-pr vs. aioquic: A 🚀L1 C1
neqo-pr vs. go-x-net: A BP BA
neqo-pr vs. haproxy: 🚀M A 🚀L1 C1 BP BA
neqo-pr vs. kwik: BP BA
neqo-pr vs. linuxquic: A L1 🚀C1
neqo-pr vs. lsquic: L1 C1
neqo-pr vs. msquic: A L1 C1
neqo-pr vs. mvfst: A ⚠️L1 C1 🚀BA
neqo-pr vs. neqo: Z
neqo-pr vs. nginx: A 🚀L1 C1 BP BA
neqo-pr vs. ngtcp2: A CM
neqo-pr vs. picoquic: A ⚠️L1
neqo-pr vs. quic-go: A 🚀L1
neqo-pr vs. quiche: A C1 BP BA
neqo-pr vs. quinn: A ⚠️C1
neqo-pr vs. s2n-quic: A 🚀BP ⚠️L1 BA CM
neqo-pr vs. tquic: S A BP BA
neqo-pr vs. xquic: A 🚀BA ⚠️L1
aioquic vs. neqo-pr: Z CM
go-x-net vs. neqo-pr: CM
kwik vs. neqo-pr: Z BP BA CM
lsquic vs. neqo-pr: Z
msquic vs. neqo-pr: Z ⚠️BP CM
mvfst vs. neqo-pr: Z A L1 C1 CM
neqo vs. neqo-pr: Z
openssl vs. neqo-pr: LR M A CM
picoquic vs. neqo-pr: Z
quic-go vs. neqo-pr: 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: 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
Contributor

Client/server transfer results

Performance differences relative to 1368851.

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 ± σ Δ main Δ main
neqo-neqo-cubic 97.3 ± 4.3 89.5 109.8 328.9 ± 7.4 💚 -1.3 -1.3%
neqo-neqo-newreno 99.2 ± 4.9 89.4 108.8 322.7 ± 6.5 💔 1.7 1.7%
neqo-neqo-newreno-nopacing 96.9 ± 3.8 90.5 106.0 330.1 ± 8.4 💔 1.2 1.2%
s2n-neqo-cubic 175.2 ± 5.1 166.1 190.9 182.7 ± 6.3 💔 1.5 0.9%

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 ± σ Δ main Δ main
google-google-nopacing 455.6 ± 4.0 449.9 470.3 70.2 ± 8.0
google-neqo-cubic 271.5 ± 4.8 263.2 290.3 117.9 ± 6.7 -0.8 -0.3%
msquic-msquic-nopacing 175.4 ± 53.7 137.1 443.1 182.5 ± 0.6
msquic-neqo-cubic 199.1 ± 57.6 153.3 619.7 160.7 ± 0.6 -0.5 -0.3%
neqo-google-cubic 755.4 ± 5.0 749.0 773.8 42.4 ± 6.4 -0.5 -0.1%
neqo-msquic-cubic 159.6 ± 3.9 153.8 168.1 200.5 ± 8.2 0.2 0.1%
neqo-neqo-cubic 97.3 ± 4.3 89.5 109.8 328.9 ± 7.4 💚 -1.3 -1.3%
neqo-neqo-cubic-nopacing 96.1 ± 3.8 87.0 103.2 333.0 ± 8.4 0.1 0.1%
neqo-neqo-newreno 99.2 ± 4.9 89.4 108.8 322.7 ± 6.5 💔 1.7 1.7%
neqo-neqo-newreno-nopacing 96.9 ± 3.8 90.5 106.0 330.1 ± 8.4 💔 1.2 1.2%
neqo-quiche-cubic 192.6 ± 4.3 186.7 206.0 166.2 ± 7.4 -0.5 -0.2%
neqo-s2n-cubic 219.8 ± 3.9 212.1 226.4 145.6 ± 8.2 0.0 0.0%
quiche-neqo-cubic 152.6 ± 5.7 135.5 170.8 209.7 ± 5.6 -1.2 -0.8%
quiche-quiche-nopacing 143.7 ± 4.8 136.3 156.8 222.6 ± 6.7
s2n-neqo-cubic 175.2 ± 5.1 166.1 190.9 182.7 ± 6.3 💔 1.5 0.9%
s2n-s2n-nopacing 251.2 ± 28.2 232.8 353.3 127.4 ± 1.1

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

@github-actions
Copy link
Contributor

Benchmark results

Significant performance differences relative to 1368851.

transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1504: 💔 Performance has regressed by +2.0992%.
       time:   [282.14 ms 284.27 ms 286.41 ms]
       thrpt:  [34.916 Kelem/s 35.178 Kelem/s 35.443 Kelem/s]
change:
       time:   [+1.0117% +2.0992% +3.0971] (p = 0.00 < 0.05)
       thrpt:  [-3.0041% -2.0560% -1.0015]
       Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
All results
transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1504: No change in performance detected.
       time:   [199.26 ms 199.59 ms 199.94 ms]
       thrpt:  [500.14 MiB/s 501.03 MiB/s 501.85 MiB/s]
change:
       time:   [-0.4771% -0.2226% +0.0219] (p = 0.07 > 0.05)
       thrpt:  [-0.0219% +0.2231% +0.4793]
       No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) high mild
1 (1.00%) high severe
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1504: 💔 Performance has regressed by +2.0992%.
       time:   [282.14 ms 284.27 ms 286.41 ms]
       thrpt:  [34.916 Kelem/s 35.178 Kelem/s 35.443 Kelem/s]
change:
       time:   [+1.0117% +2.0992% +3.0971] (p = 0.00 < 0.05)
       thrpt:  [-3.0041% -2.0560% -1.0015]
       Performance has regressed.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
transfer/1-conn/1-1b-resp (aka. HPS)/mtu-1504: No change in performance detected.
       time:   [38.534 ms 38.695 ms 38.877 ms]
       thrpt:  [25.722   B/s 25.843   B/s 25.951   B/s]
change:
       time:   [-0.4869% +0.0810% +0.6560] (p = 0.79 > 0.05)
       thrpt:  [-0.6518% -0.0809% +0.4893]
       No change in performance detected.
Found 7 outliers among 100 measurements (7.00%)
1 (1.00%) high mild
6 (6.00%) high severe
transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1504: No change in performance detected.
       time:   [201.52 ms 201.90 ms 202.31 ms]
       thrpt:  [494.30 MiB/s 495.29 MiB/s 496.22 MiB/s]
change:
       time:   [-0.1916% +0.0553% +0.3050] (p = 0.66 > 0.05)
       thrpt:  [-0.3041% -0.0553% +0.1920]
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
decode 4096 bytes, mask ff: No change in performance detected.
       time:   [4.5115 µs 4.5192 µs 4.5274 µs]
       change: [-0.5731% -0.1588% +0.1844] (p = 0.44 > 0.05)
       No change in performance detected.
Found 7 outliers among 100 measurements (7.00%)
1 (1.00%) low mild
4 (4.00%) high mild
2 (2.00%) high severe
decode 1048576 bytes, mask ff: No change in performance detected.
       time:   [1.1599 ms 1.1618 ms 1.1638 ms]
       change: [-0.4558% -0.0184% +0.4320] (p = 0.94 > 0.05)
       No change in performance detected.
Found 15 outliers among 100 measurements (15.00%)
9 (9.00%) low severe
5 (5.00%) high mild
1 (1.00%) high severe
decode 4096 bytes, mask 7f: No change in performance detected.
       time:   [5.7867 µs 5.7950 µs 5.8036 µs]
       change: [-0.3947% -0.1374% +0.1088] (p = 0.29 > 0.05)
       No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
6 (6.00%) high mild
3 (3.00%) high severe
decode 1048576 bytes, mask 7f: No change in performance detected.
       time:   [1.4849 ms 1.4871 ms 1.4894 ms]
       change: [-0.1799% +0.0432% +0.2611] (p = 0.71 > 0.05)
       No change in performance detected.
decode 4096 bytes, mask 3f: No change in performance detected.
       time:   [5.5340 µs 5.5417 µs 5.5497 µs]
       change: [-0.4532% -0.1008% +0.2222] (p = 0.57 > 0.05)
       No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
2 (2.00%) high mild
2 (2.00%) high severe
decode 1048576 bytes, mask 3f: No change in performance detected.
       time:   [1.4151 ms 1.4194 ms 1.4259 ms]
       change: [-0.1472% +0.2076% +0.7896] (p = 0.39 > 0.05)
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
streams/simulated/1-streams/each-1000-bytes: No change in performance detected.
       time:   [129.68 ms 129.68 ms 129.68 ms]
       thrpt:  [7.5304 KiB/s 7.5306 KiB/s 7.5308 KiB/s]
change:
       time:   [-0.0053% -0.0015% +0.0024] (p = 0.44 > 0.05)
       thrpt:  [-0.0024% +0.0015% +0.0053]
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
streams/simulated/1000-streams/each-1-bytes: No change in performance detected.
       time:   [2.5360 s 2.5362 s 2.5365 s]
       thrpt:  [394.24   B/s 394.28   B/s 394.33   B/s]
change:
       time:   [-0.0299% -0.0151% +0.0008] (p = 0.06 > 0.05)
       thrpt:  [-0.0008% +0.0151% +0.0300]
       No change in performance detected.
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) high mild
streams/simulated/1000-streams/each-1000-bytes: No change in performance detected.
       time:   [6.5856 s 6.5958 s 6.6082 s]
       thrpt:  [147.78 KiB/s 148.06 KiB/s 148.29 KiB/s]
change:
       time:   [-0.1332% +0.0795% +0.2860] (p = 0.47 > 0.05)
       thrpt:  [-0.2852% -0.0795% +0.1333]
       No change in performance detected.
Found 4 outliers among 100 measurements (4.00%)
4 (4.00%) high severe
streams/walltime/1-streams/each-1000-bytes: No change in performance detected.
       time:   [584.29 µs 588.25 µs 593.81 µs]
       change: [-0.4149% +0.3055% +1.4148] (p = 0.54 > 0.05)
       No change in performance detected.
Found 8 outliers among 100 measurements (8.00%)
8 (8.00%) high severe
streams/walltime/1000-streams/each-1-bytes: No change in performance detected.
       time:   [12.369 ms 12.388 ms 12.407 ms]
       change: [-0.4717% +0.1227% +0.5381] (p = 0.71 > 0.05)
       No change in performance detected.
streams/walltime/1000-streams/each-1000-bytes: No change in performance detected.
       time:   [45.083 ms 45.148 ms 45.224 ms]
       change: [-0.3349% -0.1419% +0.0427] (p = 0.15 > 0.05)
       No change in performance detected.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
coalesce_acked_from_zero 1+1 entries: No change in performance detected.
       time:   [91.914 ns 92.894 ns 94.529 ns]
       change: [-0.3832% +0.5341% +1.6183] (p = 0.36 > 0.05)
       No change in performance detected.
Found 9 outliers among 100 measurements (9.00%)
5 (5.00%) high mild
4 (4.00%) high severe
coalesce_acked_from_zero 3+1 entries: No change in performance detected.
       time:   [110.05 ns 110.43 ns 110.81 ns]
       change: [-0.0266% +0.5821% +1.2516] (p = 0.07 > 0.05)
       No change in performance detected.
Found 17 outliers among 100 measurements (17.00%)
1 (1.00%) high mild
16 (16.00%) high severe
coalesce_acked_from_zero 10+1 entries: No change in performance detected.
       time:   [109.16 ns 109.54 ns 110.00 ns]
       change: [-0.5016% -0.0259% +0.4253] (p = 0.91 > 0.05)
       No change in performance detected.
Found 16 outliers among 100 measurements (16.00%)
6 (6.00%) low severe
1 (1.00%) low mild
3 (3.00%) high mild
6 (6.00%) high severe
coalesce_acked_from_zero 1000+1 entries: No change in performance detected.
       time:   [94.733 ns 99.740 ns 110.71 ns]
       change: [-0.2774% +2.4214% +7.8582] (p = 0.28 > 0.05)
       No change in performance detected.
Found 16 outliers among 100 measurements (16.00%)
6 (6.00%) high mild
10 (10.00%) high severe
RxStreamOrderer::inbound_frame(): Change within noise threshold.
       time:   [108.77 ms 108.84 ms 108.92 ms]
       change: [+0.6415% +0.7950% +0.9322] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 29 outliers among 100 measurements (29.00%)
5 (5.00%) low severe
13 (13.00%) low mild
7 (7.00%) high mild
4 (4.00%) high severe
sent::Packets::take_ranges: No change in performance detected.
       time:   [4.5250 µs 4.6209 µs 4.7068 µs]
       change: [-3.5978% -0.5075% +2.7618] (p = 0.75 > 0.05)
       No change in performance detected.
Found 2 outliers among 100 measurements (2.00%)
2 (2.00%) high mild
transfer/simulated/pacing-false/varying-seeds: No change in performance detected.
       time:   [23.941 s 23.941 s 23.941 s]
       thrpt:  [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/simulated/pacing-true/varying-seeds: No change in performance detected.
       time:   [23.676 s 23.676 s 23.676 s]
       thrpt:  [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/simulated/pacing-false/same-seed: No change in performance detected.
       time:   [23.941 s 23.941 s 23.941 s]
       thrpt:  [171.09 KiB/s 171.09 KiB/s 171.09 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/simulated/pacing-true/same-seed: No change in performance detected.
       time:   [23.676 s 23.676 s 23.676 s]
       thrpt:  [173.01 KiB/s 173.01 KiB/s 173.01 KiB/s]
change:
       time:   [+0.0000% +0.0000% +0.0000] (p = NaN > 0.05)
       thrpt:  [+0.0000% +0.0000% +0.0000]
       No change in performance detected.
transfer/walltime/pacing-false/varying-seeds: Change within noise threshold.
       time:   [23.298 ms 23.328 ms 23.373 ms]
       change: [-1.3192% -1.1642% -0.9555] (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/varying-seeds: Change within noise threshold.
       time:   [23.854 ms 23.879 ms 23.914 ms]
       change: [-0.3252% -0.1943% -0.0240] (p = 0.01 < 0.05)
       Change within noise threshold.
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high severe
transfer/walltime/pacing-false/same-seed: Change within noise threshold.
       time:   [23.455 ms 23.471 ms 23.489 ms]
       change: [-0.8848% -0.7856% -0.6850] (p = 0.00 < 0.05)
       Change within noise threshold.
Found 3 outliers among 100 measurements (3.00%)
1 (1.00%) low mild
1 (1.00%) high mild
1 (1.00%) high severe
transfer/walltime/pacing-true/same-seed: Change within noise threshold.
       time:   [24.015 ms 24.033 ms 24.052 ms]
       change: [+0.0981% +0.2012% +0.3029] (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.

larseggert added a commit to larseggert/gyp-next that referenced this pull request Feb 25, 2026
Extend the MSVC toolchain integration to support Windows ARM64 targets.

(I know very little about gyp, so these changes may be a bit rough. They were enough to get NSS building on Windows 11/ARM in CI via mozilla/neqo#2591. Please let me know if anything needs changing!)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

blocked Blocked on something else

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants