Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Improve Output type safety#2949

Open
djc wants to merge 23 commits intomainfrom
quic-output
Open

Improve Output type safety#2949
djc wants to merge 23 commits intomainfrom
quic-output

Conversation

@djc
Copy link
Member

@djc djc commented Feb 27, 2026

Breaks down some of the more dynamic aspects of the Output trait setup to bring back more type safety, hopefully without compromising too much on modularity.

Also less code, and up to 6.5% wins on no crypto benchmarks.

@djc djc requested a review from ctz February 27, 2026 22:08
@rustls-benchmarking
Copy link

rustls-benchmarking bot commented Feb 27, 2026

Benchmark results

Instruction counts

Significant differences

⚠️ There are significant instruction count differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_session_id_1.2_no_crypto_server 1204407 1125458 -78949 (-6.56%) 3.01%
handshake_session_id_1.2_no_crypto_client 1264414 1182183 -82231 (-6.50%) 1.91%
handshake_tickets_1.2_no_crypto_client 1343407 1261836 -81571 (-6.07%) 1.54%
handshake_no_resume_1.2_no_crypto_server 44590 42031 -2559 (-5.74%) 2.12%
handshake_tickets_1.2_no_crypto_server 1350604 1276442 -74162 (-5.49%) 1.95%
handshake_tickets_1.3_no_crypto_client 2485417 2364698 -120719 (-4.86%) 2.82%
handshake_no_resume_1.2_no_crypto_client 63240 60359 -2881 (-4.56%) 1.15%
handshake_session_id_1.3_no_crypto_client 2472858 2363729 -109129 (-4.41%) 2.83%
handshake_no_resume_1.3_no_crypto_server 66275 63513 -2762 (-4.17%) 2.83%
handshake_no_resume_1.3_no_crypto_client 75532 72869 -2663 (-3.53%) 2.50%
handshake_session_id_1.3_no_crypto_server 2346296 2264531 -81765 (-3.48%) 3.12%
handshake_session_id_ring_1.2_rsa_aes_server 3517965 3422517 -95448 (-2.71%) 1.13%
handshake_tickets_ring_1.2_rsa_aes_server 4109699 4000766 -108933 (-2.65%) 0.97%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_client 4018335 3929839 -88496 (-2.20%) 0.53%
handshake_session_id_ring_1.2_rsa_aes_client 3597308 3520952 -76356 (-2.12%) 0.58%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_server 3912810 3834684 -78126 (-2.00%) 1.00%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_client 4404109 4318897 -85212 (-1.93%) 0.51%
handshake_tickets_ring_1.2_rsa_aes_client 3983417 3908681 -74736 (-1.88%) 0.54%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_server 5018039 4942226 -75813 (-1.51%) 0.58%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 1497181 1474714 -22467 (-1.50%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 3833355 3795583 -37772 (-0.99%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_chacha_client 30738663 30635314 -103349 (-0.34%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_client 30830433 30727124 -103309 (-0.34%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_chacha_client 30831086 30728476 -102610 (-0.33%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_aes_client 30899843 30797896 -101947 (-0.33%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_aes_client 30902817 30800907 -101910 (-0.33%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_chacha_client 30734744 30636427 -98317 (-0.32%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_client 30826514 30728237 -98277 (-0.32%) 0.20%
handshake_tickets_ring_1.3_rsa_chacha_client 30861667 30767510 -94157 (-0.31%) 0.23%
handshake_tickets_ring_1.3_rsa_aes_client 30933997 30839888 -94109 (-0.30%) 0.23%
handshake_session_id_ring_1.3_ecdsap384_chacha_server 31849508 31754818 -94690 (-0.30%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_server 31972118 31877428 -94690 (-0.30%) 0.20%
handshake_session_id_ring_1.3_rsa_chacha_server 31830594 31738486 -92108 (-0.29%) 0.22%
handshake_session_id_ring_1.3_rsa_aes_server 31953204 31861096 -92108 (-0.29%) 0.22%
handshake_tickets_ring_1.3_rsa_chacha_server 32126422 32039981 -86441 (-0.27%) 0.24%
handshake_tickets_ring_1.3_rsa_aes_server 32229832 32143391 -86441 (-0.27%) 0.24%
handshake_tickets_ring_1.3_ecdsap256_chacha_server 32127581 32041978 -85603 (-0.27%) 0.25%
handshake_session_id_ring_1.3_rsa_chacha_client 30725450 30648975 -76475 (-0.25%) 0.23%
handshake_session_id_ring_1.3_rsa_aes_client 30817220 30740795 -76425 (-0.25%) 0.23%
handshake_tickets_ring_1.3_ecdsap384_chacha_server 32118820 32040832 -77988 (-0.24%) 0.24%
handshake_tickets_ring_1.3_ecdsap384_aes_server 32235738 32159023 -76715 (-0.24%) 0.24%
handshake_no_resume_ring_1.3_ecdsap256_chacha_server 1241953 1239045 -2908 (-0.23%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_chacha_server 31834918 31760545 -74373 (-0.23%) 0.22%
handshake_no_resume_ring_1.3_ecdsap256_aes_server 1240779 1237882 -2897 (-0.23%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_server 31957528 31883155 -74373 (-0.23%) 0.22%
handshake_tickets_ring_1.3_ecdsap256_chacha_client 30820752 30755728 -65024 (-0.21%) 0.20%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_tickets_1.3_no_crypto_server 2282150 2213947 -68203 (-2.99%) 3.01%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_server 11016567 11112006 95439 (0.87%) 0.95%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_server 11131599 11045036 -86563 (-0.78%) 1.11%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_server 10407350 10476916 69566 (0.67%) 1.15%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_client 49986175 49782487 -203688 (-0.41%) 0.72%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_client 49992314 49792696 -199618 (-0.40%) 0.49%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_server 42404917 42260266 -144651 (-0.34%) 0.45%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_client 49910056 49750415 -159641 (-0.32%) 0.83%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_client 49754573 49604082 -150491 (-0.30%) 0.63%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_server 41052979 40931505 -121474 (-0.30%) 0.33%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_server 42347870 42229244 -118626 (-0.28%) 0.59%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_server 42406252 42293908 -112344 (-0.26%) 0.31%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 9026615 9003260 -23355 (-0.26%) 0.85%
handshake_tickets_ring_1.3_ecdsap256_aes_server 32237705 32157692 -80013 (-0.25%) 0.25%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_client 49983114 49885299 -97815 (-0.20%) 0.61%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 2401203 2396642 -4561 (-0.19%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 2398090 2393724 -4366 (-0.18%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 1474860 1472231 -2629 (-0.18%) 0.21%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_server 42403057 42327938 -75119 (-0.18%) 0.31%
handshake_no_resume_ring_1.3_ecdsap256_chacha_client 3278591 3273077 -5514 (-0.17%) 0.24%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_server 41103018 41034284 -68734 (-0.17%) 0.45%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 3794775 3788706 -6069 (-0.16%) 0.23%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_client 1687159 1684487 -2672 (-0.16%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_server 41112169 41049366 -62803 (-0.15%) 0.41%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_server 42299488 42244055 -55433 (-0.13%) 0.31%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_client 49837283 49774220 -63063 (-0.13%) 0.57%
handshake_no_resume_ring_1.3_rsa_aes_client 2306769 2303947 -2822 (-0.12%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_client 2312417 2309595 -2822 (-0.12%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_client 49749277 49688568 -60709 (-0.12%) 0.73%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_server 41023384 40980282 -43102 (-0.11%) 0.42%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_server 41013263 40970939 -42324 (-0.10%) 0.45%
handshake_no_resume_ring_1.2_rsa_aes_client 2177617 2175458 -2159 (-0.10%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_server 41126013 41091444 -34569 (-0.08%) 0.54%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_client 2620529 2618460 -2069 (-0.08%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_client 49835808 49873114 37306 (0.07%) 0.49%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_client 2626928 2625192 -1736 (-0.07%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 9045314 9039549 -5765 (-0.06%) 1.15%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_client 58100294 58065739 -34555 (-0.06%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_server 42301157 42277204 -23953 (-0.06%) 0.29%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_client 49755659 49728276 -27383 (-0.06%) 0.67%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_client 49802656 49825312 22656 (0.05%) 0.63%
transfer_no_resume_ring_1.2_rsa_aes_client 57819560 57797209 -22351 (-0.04%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_client 57960305 57938531 -21774 (-0.04%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_client 57960305 57938542 -21763 (-0.04%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 58100399 58078636 -21763 (-0.04%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 58100434 58078762 -21672 (-0.04%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_aes_client 3274856 3273905 -951 (-0.03%) 0.25%
handshake_no_resume_ring_1.3_ecdsap384_chacha_server 7190243 7188225 -2018 (-0.03%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_aes_server 7188275 7186264 -2011 (-0.03%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_client 49656397 49668563 12166 (0.02%) 0.77%
transfer_no_resume_ring_1.3_ecdsap256_chacha_client 92487025 92465251 -21774 (-0.02%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_chacha_client 92487025 92465262 -21763 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 92558639 92536876 -21763 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 92558674 92537002 -21672 (-0.02%) 0.20%
handshake_no_resume_ring_1.3_rsa_aes_server 11073406 11070887 -2519 (-0.02%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_server 11079154 11076637 -2517 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 46082408 46072537 -9871 (-0.02%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_client 49688179 49678292 -9887 (-0.02%) 0.58%
transfer_no_resume_1.2_no_crypto_client 117024843 117002440 -22403 (-0.02%) 0.20%
transfer_no_resume_1.3_no_crypto_client 117073368 117051605 -21763 (-0.02%) 0.20%
handshake_no_resume_ring_1.2_rsa_aes_server 10916983 10914958 -2025 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 46081125 46072746 -8379 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_client 92554782 92542575 -12207 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_server 80249773 80239684 -10089 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 80260968 80251097 -9871 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 80260965 80251306 -9659 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_client 57993772 57989295 -4477 (-0.01%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_chacha_client 34719292 34717214 -2078 (-0.01%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_aes_client 34717548 34715484 -2064 (-0.01%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_server 45904654 45906504 1850 (0.00%) 0.20%
transfer_no_resume_ring_1.2_rsa_aes_server 45849777 45850958 1181 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_server 45906981 45905903 -1078 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_server 46034653 46033931 -722 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_chacha_server 80136741 80136303 -438 (-0.00%) 0.20%
transfer_no_resume_1.2_no_crypto_server 104813588 104813052 -536 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_server 46070926 46071144 218 (0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_server 45904781 45904603 -178 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_chacha_server 80136461 80136283 -178 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_client 57959827 57959955 128 (0.00%) 0.20%
transfer_no_resume_1.3_no_crypto_server 104850338 104850117 -221 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_chacha_client 92487187 92487315 128 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_chacha_server 80136334 80136264 -70 (-0.00%) 0.20%

Wall-time

Significant differences

⚠️ There are significant wall-time differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_tickets_1.2_no_crypto 459.06 µs 414.55 µs ✅ -44.52 µs (-9.70%) 7.78%
handshake_tickets_1.3_no_crypto 789.91 µs 718.34 µs ✅ -71.57 µs (-9.06%) 7.64%
handshake_session_id_1.3_no_crypto 806.86 µs 737.11 µs ✅ -69.76 µs (-8.65%) 8.12%
handshake_tickets_ring_1.2_rsa_aes 1.64 ms 1.58 ms ✅ -0.06 ms (-3.92%) 3.41%
handshake_session_id_ring_1.2_rsa_aes 1.53 ms 1.48 ms ✅ -0.05 ms (-3.08%) 2.55%
handshake_tickets_ring_1.3_ecdsap256_chacha 5.71 ms 5.61 ms ✅ -0.11 ms (-1.84%) 1.65%
handshake_tickets_ring_1.3_ecdsap256_aes 5.78 ms 5.67 ms ✅ -0.11 ms (-1.84%) 1.69%
handshake_session_id_ring_1.3_ecdsap256_chacha 5.65 ms 5.55 ms ✅ -0.10 ms (-1.72%) 1.66%
handshake_tickets_ring_1.3_rsa_aes 6.25 ms 6.15 ms ✅ -0.11 ms (-1.70%) 1.57%
handshake_session_id_ring_1.3_rsa_chacha 6.14 ms 6.05 ms ✅ -0.09 ms (-1.54%) 1.36%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_session_id_1.2_no_crypto 417.15 µs 382.21 µs -34.94 µs (-8.38%) 8.60%
handshake_no_resume_1.3_no_crypto 78.88 µs 74.36 µs -4.52 µs (-5.73%) 10.93%
handshake_no_resume_1.2_no_crypto 81.85 µs 77.51 µs -4.34 µs (-5.30%) 11.76%
handshake_tickets_aws_lc_rs_1.2_rsa_aes 1.88 ms 1.82 ms -0.06 ms (-3.00%) 6.17%
handshake_session_id_aws_lc_rs_1.2_rsa_aes 1.69 ms 1.65 ms -0.03 ms (-2.06%) 5.01%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes 4.91 ms 4.81 ms -0.10 ms (-2.01%) 6.32%
handshake_session_id_ring_1.3_ecdsap256_aes 5.70 ms 5.61 ms -0.10 ms (-1.70%) 1.91%
handshake_tickets_ring_1.3_rsa_chacha 6.21 ms 6.10 ms -0.10 ms (-1.67%) 1.83%
handshake_session_id_ring_1.3_rsa_aes 6.19 ms 6.09 ms -0.10 ms (-1.62%) 1.77%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes 5.59 ms 5.50 ms -0.09 ms (-1.60%) 5.49%
transfer_no_resume_ring_1.3_ecdsap256_aes 5.72 ms 5.63 ms -0.09 ms (-1.52%) 5.33%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes 7.62 ms 7.51 ms -0.12 ms (-1.52%) 2.34%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes 5.53 ms 5.45 ms -0.08 ms (-1.50%) 5.39%
transfer_no_resume_ring_1.3_rsa_aes 6.20 ms 6.11 ms -0.09 ms (-1.46%) 4.37%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes 541.92 µs 534.15 µs -7.76 µs (-1.43%) 3.01%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes 7.41 ms 7.30 ms -0.10 ms (-1.41%) 2.18%
handshake_tickets_aws_lc_rs_1.3_rsa_aes 8.25 ms 8.14 ms -0.12 ms (-1.39%) 2.28%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha 7.37 ms 7.27 ms -0.10 ms (-1.36%) 2.15%
handshake_session_id_aws_lc_rs_1.3_rsa_aes 8.05 ms 7.94 ms -0.11 ms (-1.33%) 2.05%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes 8.29 ms 8.18 ms -0.11 ms (-1.33%) 1.85%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha 7.58 ms 7.48 ms -0.10 ms (-1.33%) 2.18%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha 8.24 ms 8.13 ms -0.10 ms (-1.26%) 2.13%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes 8.08 ms 7.98 ms -0.10 ms (-1.25%) 1.95%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha 8.02 ms 7.92 ms -0.10 ms (-1.24%) 2.14%
handshake_no_resume_ring_1.3_ecdsap256_chacha 454.66 µs 449.06 µs -5.59 µs (-1.23%) 3.21%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha 8.26 ms 8.16 ms -0.10 ms (-1.22%) 2.14%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 525.87 µs 519.53 µs -6.34 µs (-1.21%) 3.31%
handshake_tickets_ring_1.3_ecdsap384_aes 8.87 ms 8.77 ms -0.10 ms (-1.13%) 1.26%
handshake_no_resume_ring_1.3_ecdsap256_aes 465.28 µs 460.04 µs -5.24 µs (-1.13%) 3.17%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes 5.33 ms 5.27 ms -0.06 ms (-1.12%) 4.83%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha 8.03 ms 7.94 ms -0.09 ms (-1.09%) 2.12%
handshake_tickets_ring_1.3_ecdsap384_chacha 8.82 ms 8.72 ms -0.10 ms (-1.08%) 1.19%
transfer_no_resume_ring_1.2_rsa_aes 6.10 ms 6.03 ms -0.06 ms (-1.05%) 4.42%
handshake_session_id_ring_1.3_ecdsap384_aes 8.80 ms 8.71 ms -0.09 ms (-1.04%) 1.26%
handshake_session_id_ring_1.3_ecdsap384_chacha 8.76 ms 8.67 ms -0.09 ms (-0.98%) 1.04%
transfer_no_resume_ring_1.3_ecdsap384_aes 8.82 ms 8.74 ms -0.08 ms (-0.88%) 3.16%
transfer_no_resume_1.3_no_crypto 12.09 ms 11.99 ms -0.10 ms (-0.80%) 3.14%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 13.38 ms 13.29 ms -0.10 ms (-0.71%) 2.58%
transfer_no_resume_ring_1.3_ecdsap256_chacha 13.27 ms 13.18 ms -0.09 ms (-0.70%) 2.22%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 14.06 ms 13.97 ms -0.09 ms (-0.62%) 2.35%
handshake_no_resume_ring_1.3_rsa_chacha 941.30 µs 935.69 µs -5.61 µs (-0.60%) 1.60%
transfer_no_resume_ring_1.3_rsa_chacha 13.75 ms 13.67 ms -0.08 ms (-0.59%) 2.09%
transfer_no_resume_ring_1.3_ecdsap384_chacha 16.38 ms 16.29 ms -0.09 ms (-0.55%) 1.69%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha 14.02 ms 13.94 ms -0.08 ms (-0.54%) 2.09%
handshake_no_resume_ring_1.3_rsa_aes 946.50 µs 941.78 µs -4.72 µs (-0.50%) 1.44%
handshake_no_resume_ring_1.2_rsa_aes 944.13 µs 939.46 µs -4.67 µs (-0.49%) 1.29%
transfer_no_resume_1.2_no_crypto 12.07 ms 12.13 ms 0.06 ms (0.49%) 2.62%
handshake_no_resume_ring_1.3_ecdsap384_chacha 3.57 ms 3.56 ms -0.01 ms (-0.24%) 1.00%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha 1.17 ms 1.17 ms 0.00 ms (0.24%) 5.74%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes 1.05 ms 1.05 ms 0.00 ms (0.22%) 7.45%
handshake_no_resume_ring_1.3_ecdsap384_aes 3.57 ms 3.57 ms -0.01 ms (-0.22%) 1.00%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes 1.16 ms 1.16 ms 0.00 ms (0.19%) 6.14%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 1.21 ms 1.21 ms -0.00 ms (-0.15%) 1.36%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes 1.23 ms 1.22 ms -0.00 ms (-0.06%) 1.43%

Memory usage

Key:

  • ∑: sum usage for entire benchmark run
  • 🔝: peak usage
  • B: bytes
  • a: allocations

Significant differences

⚠️ There are significant memory usage differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_session_id_1.2_no_crypto_client ∑ 125915B 571a
🔝 55041B 202a
∑ 124907B 571a
🔝 55041B 202a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.80%)
0.10%
handshake_tickets_1.2_no_crypto_client ∑ 127738B 577a
🔝 55038B 202a
∑ 126730B 577a
🔝 55038B 202a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.79%)
0.10%
handshake_tickets_1.2_no_crypto_server ∑ 128093B 592a
🔝 67783B 215a
∑ 127085B 592a
🔝 67279B 215a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.79%)
0.10%
handshake_tickets_1.3_no_crypto_server ∑ 130599B 658a
🔝 67941B 221a
∑ 129591B 658a
🔝 67437B 221a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.77%)
0.10%
handshake_session_id_1.3_no_crypto_client ∑ 132100B 639a
🔝 55041B 202a
∑ 131092B 639a
🔝 55041B 202a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.76%)
0.10%
handshake_tickets_1.3_no_crypto_client ∑ 132347B 639a
🔝 55038B 202a
∑ 131339B 639a
🔝 55038B 202a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.76%)
0.10%
handshake_session_id_1.2_no_crypto_server ∑ 142332B 567a
🔝 74501B 200a
∑ 141324B 567a
🔝 74501B 200a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.71%)
0.10%
handshake_session_id_1.3_no_crypto_server ∑ 145320B 663a
🔝 74501B 200a
∑ 144312B 663a
🔝 74501B 200a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.69%)
0.10%
handshake_session_id_ring_1.2_rsa_aes_client ∑ 149548B 615a
🔝 55225B 202a
∑ 148540B 615a
🔝 55225B 202a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.67%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_chacha_server ∑ 151017B 685a
🔝 73808B 230a
∑ 150009B 685a
🔝 73304B 230a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.67%)
0.10%
handshake_tickets_ring_1.2_rsa_aes_client ∑ 151331B 620a
🔝 55222B 202a
∑ 150323B 620a
🔝 55222B 202a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.67%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_aes_server ∑ 151002B 685a
🔝 73803B 230a
∑ 149997B 685a
🔝 73300B 230a
✅ ∑ -1005B +0a
🔝 -503B +0a (-0.67%)
0.10%
handshake_session_id_ring_1.3_ecdsap256_chacha_client ∑ 152462B 671a
🔝 55035B 202a
∑ 151452B 671a
🔝 55035B 202a
✅ ∑ -1010B +0a
🔝 +0B +0a (-0.66%)
0.10%
handshake_session_id_ring_1.3_ecdsap256_aes_client ∑ 152452B 671a
🔝 55032B 202a
∑ 151443B 671a
🔝 55032B 202a
✅ ∑ -1009B +0a
🔝 +0B +0a (-0.66%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_aes_server ∑ 152222B 685a
🔝 74435B 230a
∑ 151217B 685a
🔝 73932B 230a
✅ ∑ -1005B +0a
🔝 -503B +0a (-0.66%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_chacha_server ∑ 152234B 685a
🔝 74439B 230a
∑ 151229B 685a
🔝 73936B 230a
✅ ∑ -1005B +0a
🔝 -503B +0a (-0.66%)
0.10%
handshake_session_id_ring_1.3_ecdsap384_chacha_client ∑ 154254B 675a
🔝 55064B 202a
∑ 153245B 675a
🔝 55064B 202a
✅ ∑ -1009B +0a
🔝 +0B +0a (-0.65%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_chacha_client ∑ 154277B 673a
🔝 55032B 202a
∑ 153269B 673a
🔝 55032B 202a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.65%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_aes_client ∑ 154266B 673a
🔝 55029B 202a
∑ 153259B 673a
🔝 55029B 202a
✅ ∑ -1007B +0a
🔝 +0B +0a (-0.65%)
0.10%
handshake_session_id_ring_1.3_ecdsap384_aes_client ∑ 154243B 675a
🔝 55061B 202a
∑ 153237B 675a
🔝 55061B 202a
✅ ∑ -1006B +0a
🔝 +0B +0a (-0.65%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_aes_client ∑ 156058B 677a
🔝 55058B 202a
∑ 155051B 677a
🔝 55058B 202a
✅ ∑ -1007B +0a
🔝 +0B +0a (-0.65%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_chacha_client ∑ 156068B 677a
🔝 55061B 202a
∑ 155061B 677a
🔝 55061B 202a
✅ ∑ -1007B +0a
🔝 +0B +0a (-0.65%)
0.10%
handshake_tickets_ring_1.2_rsa_aes_server ∑ 158606B 644a
🔝 78479B 233a
∑ 157598B 644a
🔝 77975B 233a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.64%)
0.10%
handshake_session_id_ring_1.3_ecdsap256_chacha_server ∑ 164470B 689a
🔝 76190B 205a
∑ 163456B 689a
🔝 76190B 205a
✅ ∑ -1014B +0a
🔝 +0B +0a (-0.62%)
0.10%
handshake_session_id_ring_1.3_ecdsap256_aes_server ∑ 164458B 689a
🔝 76187B 205a
∑ 163447B 689a
🔝 76187B 205a
✅ ∑ -1011B +0a
🔝 +0B +0a (-0.61%)
0.10%
handshake_session_id_ring_1.3_ecdsap384_chacha_server ∑ 165690B 689a
🔝 76370B 205a
∑ 164679B 689a
🔝 76370B 205a
✅ ∑ -1011B +0a
🔝 +0B +0a (-0.61%)
0.10%
handshake_session_id_ring_1.3_ecdsap384_aes_server ∑ 165675B 689a
🔝 76367B 205a
∑ 164673B 689a
🔝 76367B 205a
✅ ∑ -1002B +0a
🔝 +0B +0a (-0.60%)
0.10%
handshake_tickets_ring_1.3_rsa_aes_server ∑ 168272B 709a
🔝 79588B 240a
∑ 167264B 709a
🔝 79084B 240a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.60%)
0.10%
handshake_tickets_ring_1.3_rsa_chacha_server ∑ 168281B 709a
🔝 79591B 240a
∑ 167273B 709a
🔝 79087B 240a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.60%)
0.10%
handshake_session_id_ring_1.3_rsa_aes_client ∑ 169695B 687a
🔝 59618B 243a
∑ 168687B 687a
🔝 59114B 243a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.59%)
0.10%
handshake_session_id_ring_1.3_rsa_chacha_client ∑ 169704B 687a
🔝 59621B 243a
∑ 168696B 687a
🔝 59117B 243a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.59%)
0.10%
handshake_tickets_ring_1.3_rsa_aes_client ∑ 171510B 689a
🔝 59843B 243a
∑ 170502B 689a
🔝 59339B 243a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.59%)
0.10%
handshake_tickets_ring_1.3_rsa_chacha_client ∑ 171519B 689a
🔝 59846B 243a
∑ 170511B 689a
🔝 59342B 243a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.59%)
0.10%
handshake_session_id_ring_1.2_rsa_aes_server ∑ 171737B 618a
🔝 79033B 215a
∑ 170729B 618a
🔝 79033B 215a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.59%)
0.10%
handshake_session_id_ring_1.3_rsa_aes_server ∑ 181725B 713a
🔝 79033B 215a
∑ 180717B 713a
🔝 79033B 215a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.55%)
0.10%
handshake_session_id_ring_1.3_rsa_chacha_server ∑ 181734B 713a
🔝 79036B 215a
∑ 180726B 713a
🔝 79036B 215a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.55%)
0.10%
handshake_no_resume_1.2_no_crypto_client ∑ 103894B 513a
🔝 52484B 294a
∑ 103390B 513a
🔝 52484B 294a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.49%)
0.10%
handshake_no_resume_1.3_no_crypto_client ∑ 105272B 514a
🔝 52484B 294a
∑ 104768B 514a
🔝 52484B 294a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.48%)
0.10%
handshake_no_resume_ring_1.3_ecdsap256_aes_client ∑ 114672B 530a
🔝 52511B 294a
∑ 114166B 530a
🔝 52511B 294a
✅ ∑ -506B +0a
🔝 +0B +0a (-0.44%)
0.10%
handshake_no_resume_ring_1.3_ecdsap256_chacha_client ∑ 114681B 530a
🔝 52520B 294a
∑ 114177B 530a
🔝 52520B 294a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.44%)
0.10%
handshake_no_resume_ring_1.3_ecdsap384_chacha_client ∑ 115393B 534a
🔝 52520B 294a
∑ 114888B 534a
🔝 52520B 294a
✅ ∑ -505B +0a
🔝 +0B +0a (-0.44%)
0.10%
handshake_no_resume_ring_1.3_ecdsap384_aes_client ∑ 115383B 534a
🔝 52511B 294a
∑ 114880B 534a
🔝 52511B 294a
✅ ∑ -503B +0a
🔝 +0B +0a (-0.44%)
0.10%
handshake_no_resume_1.2_no_crypto_server ∑ 116584B 502a
🔝 58780B 198a
∑ 116080B 502a
🔝 58780B 198a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.43%)
0.10%
handshake_no_resume_1.3_no_crypto_server ∑ 116819B 524a
🔝 58780B 198a
∑ 116315B 524a
🔝 58780B 198a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.43%)
0.10%
handshake_no_resume_ring_1.2_rsa_aes_client ∑ 119261B 545a
🔝 52493B 294a
∑ 118757B 545a
🔝 52493B 294a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.42%)
0.10%
handshake_no_resume_ring_1.3_rsa_aes_client ∑ 124852B 546a
🔝 52493B 294a
∑ 124348B 546a
🔝 52493B 294a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.40%)
0.10%
handshake_no_resume_ring_1.3_rsa_chacha_client ∑ 124861B 546a
🔝 52502B 294a
∑ 124357B 546a
🔝 52502B 294a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.40%)
0.10%
handshake_no_resume_ring_1.3_ecdsap256_aes_server ∑ 129824B 544a
🔝 60466B 203a
∑ 129314B 544a
🔝 60466B 203a
✅ ∑ -510B +0a
🔝 +0B +0a (-0.39%)
0.10%
handshake_no_resume_ring_1.3_ecdsap256_chacha_server ∑ 129833B 544a
🔝 60469B 203a
∑ 129329B 544a
🔝 60469B 203a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.39%)
0.10%
handshake_no_resume_ring_1.3_ecdsap384_chacha_server ∑ 131053B 544a
🔝 60649B 203a
∑ 130546B 544a
🔝 60649B 203a
✅ ∑ -507B +0a
🔝 +0B +0a (-0.39%)
0.10%
handshake_no_resume_ring_1.3_ecdsap384_aes_server ∑ 131041B 544a
🔝 60646B 203a
∑ 130540B 544a
🔝 60646B 203a
✅ ∑ -501B +0a
🔝 +0B +0a (-0.38%)
0.10%
handshake_no_resume_ring_1.2_rsa_aes_server ∑ 144189B 548a
🔝 63312B 213a
∑ 143685B 548a
🔝 63312B 213a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.35%)
0.10%
handshake_no_resume_ring_1.3_rsa_aes_server ∑ 147072B 568a
🔝 63312B 213a
∑ 146568B 568a
🔝 63312B 213a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.34%)
0.10%
handshake_no_resume_ring_1.3_rsa_chacha_server ∑ 147081B 568a
🔝 63315B 213a
∑ 146577B 568a
🔝 63315B 213a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.34%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_server ∑ 466442B 826a
🔝 209549B 218a
∑ 465334B 825a
🔝 209549B 218a
✅ ∑ -1108B -1a
🔝 +0B +0a (-0.24%)
0.10%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_client ∑ 438118B 754a
🔝 188062B 210a
∑ 437110B 754a
🔝 188062B 210a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.23%)
0.10%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_client ∑ 440045B 759a
🔝 188160B 242a
∑ 439037B 759a
🔝 188059B 210a
✅ ∑ -1008B +0a
🔝 -101B -32a (-0.23%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_server ∑ 455994B 834a
🔝 211505B 251a
∑ 454982B 834a
🔝 211000B 251a
✅ ∑ -1012B +0a
🔝 -505B +0a (-0.22%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_server ∑ 456057B 834a
🔝 211518B 251a
∑ 455049B 834a
🔝 211014B 251a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.22%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_server ∑ 458042B 839a
🔝 212170B 251a
∑ 457034B 839a
🔝 211666B 251a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.22%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_client ∑ 475927B 853a
🔝 192061B 261a
∑ 474882B 852a
🔝 191557B 261a
✅ ∑ -1045B -1a
🔝 -504B +0a (-0.22%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_client ∑ 472392B 849a
🔝 191331B 254a
∑ 471356B 848a
🔝 190827B 254a
✅ ∑ -1036B -1a
🔝 -504B +0a (-0.22%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_client ∑ 473215B 849a
🔝 191675B 261a
∑ 472179B 848a
🔝 191171B 261a
✅ ∑ -1036B -1a
🔝 -504B +0a (-0.22%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_client ∑ 472328B 849a
🔝 191334B 254a
∑ 471301B 848a
🔝 190830B 254a
✅ ∑ -1027B -1a
🔝 -504B +0a (-0.22%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_server ∑ 464231B 820a
🔝 209340B 218a
∑ 463223B 820a
🔝 209340B 218a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.22%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_server ∑ 466279B 825a
🔝 209552B 218a
∑ 465271B 825a
🔝 209552B 218a
✅ ∑ -1008B +0a
🔝 +0B +0a (-0.22%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_client ∑ 474985B 853a
🔝 191723B 254a
∑ 473977B 853a
🔝 191219B 254a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.21%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_client ∑ 475872B 853a
🔝 192064B 261a
∑ 474864B 853a
🔝 191560B 261a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.21%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_client ∑ 475031B 853a
🔝 191720B 254a
∑ 474032B 853a
🔝 191216B 254a
✅ ∑ -999B +0a
🔝 -504B +0a (-0.21%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_client ∑ 473251B 848a
🔝 191672B 261a
∑ 472262B 849a
🔝 191168B 261a
✅ ∑ -989B +1a
🔝 -504B +0a (-0.21%)
0.10%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_server ∑ 464226B 819a
🔝 209337B 218a
∑ 463286B 820a
🔝 209337B 218a
✅ ∑ -940B +1a
🔝 +0B +0a (-0.20%)
0.10%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_server ∑ 458105B 839a
🔝 212183B 251a
∑ 457193B 840a
🔝 211677B 251a
✅ ∑ -912B +1a
🔝 -506B +0a (-0.20%)
0.10%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_client ∑ 511828B 897a
🔝 193881B 254a
∑ 510820B 897a
🔝 193377B 254a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.20%)
0.10%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_client ∑ 511883B 897a
🔝 193878B 254a
∑ 510875B 897a
🔝 193374B 254a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.20%)
0.10%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_client ∑ 512715B 897a
🔝 194222B 261a
∑ 511707B 897a
🔝 193718B 261a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.20%)
0.10%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_client ∑ 512770B 897a
🔝 194219B 261a
∑ 511762B 897a
🔝 193715B 261a
✅ ∑ -1008B +0a
🔝 -504B +0a (-0.20%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client ∑ 411634B 657a
🔝 178847B 207a
∑ 411121B 657a
🔝 178847B 207a
✅ ∑ -513B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_client ∑ 407381B 674a
🔝 179037B 207a
∑ 406877B 674a
🔝 179037B 207a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client ∑ 411685B 658a
🔝 178844B 207a
∑ 411181B 658a
🔝 178844B 207a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client ∑ 413216B 661a
🔝 178873B 207a
∑ 412712B 661a
🔝 178873B 207a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client ∑ 413221B 662a
🔝 178876B 207a
∑ 412717B 662a
🔝 178876B 207a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server ∑ 417296B 628a
🔝 193619B 216a
∑ 416788B 628a
🔝 193619B 216a
✅ ∑ -508B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server ∑ 417251B 627a
🔝 193616B 216a
∑ 416747B 627a
🔝 193616B 216a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server ∑ 419444B 634a
🔝 193831B 216a
∑ 418940B 634a
🔝 193831B 216a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server ∑ 419463B 634a
🔝 193828B 216a
∑ 418959B 634a
🔝 193828B 216a
✅ ∑ -504B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_client ∑ 444091B 706a
🔝 182419B 261a
∑ 443587B 706a
🔝 181915B 261a
✅ ∑ -504B +0a
🔝 -504B +0a (-0.11%)
0.10%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_client ∑ 444114B 706a
🔝 182432B 261a
∑ 443610B 706a
🔝 181928B 261a
✅ ∑ -504B +0a
🔝 -504B +0a (-0.11%)
0.10%

Additional information

Historical results

Checkout details:

@djc djc marked this pull request as ready for review February 28, 2026 20:25
@djc djc changed the title conn: move Quic out of CommonState Improve Output type safety Feb 28, 2026
@codecov
Copy link

codecov bot commented Feb 28, 2026

Codecov Report

❌ Patch coverage is 95.86563% with 16 lines in your changes missing coverage. Please review.
✅ Project coverage is 92.72%. Comparing base (2d1dd8d) to head (f839570).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
rustls/src/conn/mod.rs 77.35% 12 Missing ⚠️
rustls/src/common_state.rs 94.87% 3 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2949      +/-   ##
==========================================
- Coverage   92.74%   92.72%   -0.03%     
==========================================
  Files          98       98              
  Lines       21944    21883      -61     
  Branches      622      623       +1     
==========================================
- Hits        20353    20290      -63     
- Misses       1446     1448       +2     
  Partials      145      145              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

fn test_quic_exporter() {
let provider = provider::DEFAULT_TLS13_PROVIDER;
for &kt in KeyType::all_for_provider(&provider) {
dbg!(kt);
Copy link
Member

Choose a reason for hiding this comment

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

intended/useful?

output.emit(Event::QuicEarlySecret(Some(
client_early_traffic_secret.clone(),
)));
quic.early_secret = Some(client_early_traffic_secret.clone());
Copy link
Member

Choose a reason for hiding this comment

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

Would be preferable for testability, I think, to have this access be via a trait, and be write-only. This also avoids the previous mire we were in where random other types were used for storage of values.

Comment on lines +345 to +353
if let Some(quic) = output.quic() {
quic.hs_secrets = Some(quic::Secrets::new(
client_secret.clone(),
server_secret.clone(),
self.ks.suite,
self.ks.suite.quic.unwrap(),
self.ks.side,
quic_version,
)));
quic.version,
));
Copy link
Member

Choose a reason for hiding this comment

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

Example of a two-way dependency, where the value output to quic.hs_secrets depends on the value read via output.quic() rather than the immutable version known by this object.

Copy link
Member Author

Choose a reason for hiding this comment

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

Remind me why this useful/necessary? Should we document it somewhere?

(I agree that it was very messy before, but at a much smaller scale I don't see many issues?)


fn start_traffic(&mut self);

fn send(&mut self) -> &mut SendPath;
Copy link
Member

Choose a reason for hiding this comment

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

Suggest extracting a trait here rather than using the concrete SendPath for testability? All methods on the trait should return unit.

Copy link
Member Author

Choose a reason for hiding this comment

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

Why should they all yield unit?

&mut self,
msg: &Message<'_>,
output: &mut dyn Output,
send: &mut SendPath,
Copy link
Member

Choose a reason for hiding this comment

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

This is not possible later, as the caller no longer has a SendPath to give. It has an impl Output {} which locks a Mutex and dispatches events into it.

@djc
Copy link
Member Author

djc commented Mar 2, 2026

Okay, so I should rework this to have specific traits for both SendPath and Quic?

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.

2 participants