Skip to content

conn: yield received plaintext from a lending iterator - #3149

Merged
djc merged 2 commits into
mainfrom
message-iter-next
Aug 5, 2026
Merged

djc merged 2 commits into
mainfrom
message-iter-next

Conversation

@djc

@djc djc commented Jul 14, 2026

Copy link
Copy Markdown
Member

@ctz early feedback?

@djc
djc requested a review from ctz July 14, 2026 12:51
@rustls-benchmarking

rustls-benchmarking Bot commented Jul 14, 2026

Copy link
Copy Markdown

Benchmark results

Instruction counts

Significant differences

⚠️ There are significant instruction count differences

Click to expand
Scenario Baseline Candidate Diff Threshold
transfer_no_resume_ring_1.2_rsa_aes_client 57745395 46995234 -10750161 (-18.62%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_client 57882366 47131973 -10750393 (-18.57%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_client 57959418 47196905 -10762513 (-18.57%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 58068539 47301049 -10767490 (-18.54%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 58068515 47301060 -10767455 (-18.54%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_client 57878481 47148705 -10729776 (-18.54%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_client 57878492 47148716 -10729776 (-18.54%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_client 58055737 47318754 -10736983 (-18.49%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 92526755 81760580 -10766175 (-11.64%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 92526779 81762558 -10764221 (-11.63%) 0.20%
transfer_no_resume_ring_1.3_rsa_chacha_client 92424446 81676415 -10748031 (-11.63%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_client 92513846 81761066 -10752780 (-11.62%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_chacha_client 92421201 81693368 -10727833 (-11.61%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_chacha_client 92421212 81693379 -10727833 (-11.61%) 0.20%
transfer_no_resume_1.2_no_crypto_client 116997294 106248419 -10748875 (-9.19%) 0.20%
transfer_no_resume_1.3_no_crypto_client 117024331 106275355 -10748976 (-9.19%) 0.20%
handshake_no_resume_1.2_no_crypto_server 38425 37815 -610 (-1.59%) 0.20%
handshake_session_id_1.2_no_crypto_server 842202 832543 -9659 (-1.15%) 0.20%
handshake_tickets_1.2_no_crypto_server 982541 972088 -10453 (-1.06%) 0.20%
handshake_no_resume_1.3_no_crypto_server 58058 57463 -595 (-1.02%) 0.20%
handshake_session_id_1.2_no_crypto_client 956585 948604 -7981 (-0.83%) 0.20%
handshake_tickets_1.2_no_crypto_client 1029010 1021018 -7992 (-0.78%) 0.20%
handshake_tickets_1.3_no_crypto_server 1820017 1807363 -12654 (-0.70%) 0.20%
handshake_session_id_1.3_no_crypto_server 1873709 1865362 -8347 (-0.45%) 0.20%
handshake_no_resume_1.3_no_crypto_client 66017 65797 -220 (-0.33%) 0.20%
handshake_session_id_ring_1.2_rsa_aes_server 3127370 3118113 -9257 (-0.30%) 0.20%
handshake_session_id_1.3_no_crypto_client 2016509 2010793 -5716 (-0.28%) 0.20%
handshake_tickets_1.3_no_crypto_client 2028476 2023485 -4991 (-0.25%) 0.20%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_server 3567157 3559016 -8141 (-0.23%) 0.20%
handshake_session_id_aws_lc_rs_1.2_rsa_aes_client 3684183 3675968 -8215 (-0.22%) 0.20%
handshake_session_id_ring_1.2_rsa_aes_client 3255720 3249095 -6625 (-0.20%) 0.20%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_server 10389826 10449289 59463 (0.57%) 1.26%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_server 10914100 10957003 42903 (0.39%) 1.16%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client 8774656 8804488 29832 (0.34%) 0.68%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_client 4065557 4058064 -7493 (-0.18%) 0.20%
handshake_tickets_aws_lc_rs_1.2_rsa_aes_server 4650075 4658449 8374 (0.18%) 0.23%
handshake_tickets_ring_1.2_rsa_aes_client 3636895 3631116 -5779 (-0.16%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_server 10967609 10982217 14608 (0.13%) 1.13%
handshake_no_resume_ring_1.3_ecdsap256_chacha_client 3260629 3264530 3901 (0.12%) 0.26%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_client 42160784 42113141 -47643 (-0.11%) 0.27%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha_server 37044717 37013303 -31414 (-0.08%) 0.20%
handshake_tickets_ring_1.2_rsa_aes_server 3678692 3676205 -2487 (-0.07%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_server 38385707 38362080 -23627 (-0.06%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_client 42401642 42426813 25171 (0.06%) 0.29%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_client 42420660 42398419 -22241 (-0.05%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client 3550990 3552848 1858 (0.05%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_aes_client 3261642 3263328 1686 (0.05%) 0.24%
handshake_session_id_ring_1.3_ecdsap384_chacha_server 31355391 31340165 -15226 (-0.05%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_server 31475571 31460345 -15226 (-0.05%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_client 42201647 42221946 20299 (0.05%) 0.27%
handshake_no_resume_1.2_no_crypto_client 55079 55054 -25 (-0.05%) 0.20%
handshake_no_resume_ring_1.3_rsa_aes_client 2293729 2292699 -1030 (-0.04%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_client 2299435 2298403 -1032 (-0.04%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_client 42397024 42415631 18607 (0.04%) 0.31%
handshake_tickets_ring_1.3_ecdsap384_aes_server 31742335 31728447 -13888 (-0.04%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 1349422 1348893 -529 (-0.04%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_aes_server 31740090 31728024 -12066 (-0.04%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_chacha_server 31360656 31349047 -11609 (-0.04%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_server 31480836 31469227 -11609 (-0.04%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 1351563 1351070 -493 (-0.04%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_chacha_server 31638619 31627770 -10849 (-0.03%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_server 38381134 38368215 -12919 (-0.03%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client 8795608 8798453 2845 (0.03%) 0.90%
handshake_tickets_aws_lc_rs_1.3_rsa_aes_server 38432403 38420085 -12318 (-0.03%) 0.20%
handshake_tickets_ring_1.3_rsa_chacha_server 31638375 31628872 -9503 (-0.03%) 0.20%
handshake_tickets_ring_1.3_rsa_aes_server 31739385 31729912 -9473 (-0.03%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes_server 38427073 38416074 -10999 (-0.03%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 2271176 2270529 -647 (-0.03%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_server 37127023 37137209 10186 (0.03%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes_client 2376060 2376665 605 (0.03%) 0.20%
handshake_session_id_ring_1.3_rsa_chacha_server 31357209 31349251 -7958 (-0.03%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_chacha_client 30245927 30238262 -7665 (-0.03%) 0.20%
handshake_session_id_ring_1.3_rsa_aes_server 31477389 31469431 -7958 (-0.03%) 0.20%
handshake_session_id_ring_1.3_ecdsap256_aes_client 30335297 30327632 -7665 (-0.03%) 0.20%
handshake_session_id_ring_1.3_rsa_chacha_client 30255696 30248168 -7528 (-0.02%) 0.20%
handshake_session_id_ring_1.3_rsa_aes_client 30345026 30337548 -7478 (-0.02%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha_client 42375877 42365645 -10232 (-0.02%) 0.35%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_server 37033285 37024500 -8785 (-0.02%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 2273817 2273301 -516 (-0.02%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_aes_client 42226296 42235509 9213 (0.02%) 0.29%
handshake_tickets_ring_1.3_ecdsap256_aes_client 30420006 30413415 -6591 (-0.02%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_chacha_client 30244424 30237917 -6507 (-0.02%) 0.20%
handshake_session_id_ring_1.3_ecdsap384_aes_client 30333774 30327297 -6477 (-0.02%) 0.20%
handshake_tickets_ring_1.3_rsa_chacha_client 30362667 30356215 -6452 (-0.02%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_server 46043822 46053537 9715 (0.02%) 0.20%
handshake_tickets_ring_1.3_rsa_aes_client 30432557 30426155 -6402 (-0.02%) 0.20%
handshake_no_resume_ring_1.3_ecdsap256_aes_server 1231434 1231181 -253 (-0.02%) 0.20%
handshake_no_resume_ring_1.2_rsa_aes_client 2165973 2165528 -445 (-0.02%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_aes_client 30419991 30413774 -6217 (-0.02%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha_client 42148576 42140281 -8295 (-0.02%) 0.30%
handshake_no_resume_ring_1.3_ecdsap256_chacha_server 1232649 1232413 -236 (-0.02%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_chacha_client 30349853 30344135 -5718 (-0.02%) 0.20%
handshake_tickets_ring_1.3_ecdsap384_chacha_client 30349843 30344284 -5559 (-0.02%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha_client 2382637 2383028 391 (0.02%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes_server 37115111 37120818 5707 (0.02%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha_client 42382928 42376955 -5973 (-0.01%) 0.29%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_client 42201565 42207395 5830 (0.01%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_server 38385347 38380114 -5233 (-0.01%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_server 37039156 37044082 4926 (0.01%) 0.20%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha_client 42162268 42167051 4783 (0.01%) 0.20%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes_server 37120231 37116033 -4198 (-0.01%) 0.20%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes_client 1679889 1680075 186 (0.01%) 0.20%
handshake_no_resume_ring_1.3_rsa_aes_server 11060597 11059404 -1193 (-0.01%) 0.20%
handshake_no_resume_ring_1.3_rsa_chacha_server 11066403 11065210 -1193 (-0.01%) 0.20%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_server 45988751 45993681 4930 (0.01%) 0.20%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes_server 38429421 38433122 3701 (0.01%) 0.20%
handshake_no_resume_ring_1.2_rsa_aes_server 10902351 10901585 -766 (-0.01%) 0.20%
transfer_no_resume_ring_1.3_rsa_aes_server 45837519 45839260 1741 (0.00%) 0.20%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha_client 42383017 42381530 -1487 (-0.00%) 0.27%
handshake_no_resume_ring_1.3_ecdsap384_aes_server 7180222 7179994 -228 (-0.00%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_chacha_server 7182216 7182007 -209 (-0.00%) 0.20%
transfer_no_resume_ring_1.2_rsa_aes_server 45724903 45724229 -674 (-0.00%) 0.20%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client 3555432 3555468 36 (0.00%) 0.54%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_server 46049141 46048806 -335 (-0.00%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_aes_client 34704584 34704356 -228 (-0.00%) 0.20%
handshake_no_resume_ring_1.3_ecdsap384_chacha_client 34706343 34706134 -209 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_server 80227700 80227365 -335 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_rsa_chacha_server 80083279 80083100 -179 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_aes_server 45840522 45840617 95 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap256_chacha_server 80085001 80085097 96 (0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_server 80232577 80232487 -90 (-0.00%) 0.20%
transfer_no_resume_1.3_no_crypto_server 104785090 104784988 -102 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_server 46049328 46049308 -20 (-0.00%) 0.20%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_server 80227888 80227867 -21 (-0.00%) 0.20%
handshake_tickets_ring_1.3_ecdsap256_chacha_server 31642513 31642521 8 (0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_aes_server 45840858 45840857 -1 (-0.00%) 0.20%
transfer_no_resume_ring_1.3_ecdsap384_chacha_server 80084698 80084699 1 (0.00%) 0.20%
transfer_no_resume_1.2_no_crypto_server 104779366 104779366 0 (0.00%) 0.20%

Wall-time

Significant differences

⚠️ There are significant wall-time differences

Click to expand
Scenario Baseline Candidate Diff Threshold
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes 5.46 ms 5.20 ms ✅ -0.26 ms (-4.84%) 4.76%
transfer_no_resume_ring_1.3_rsa_aes 6.10 ms 5.84 ms ✅ -0.26 ms (-4.34%) 3.54%
transfer_no_resume_ring_1.2_rsa_aes 6.01 ms 5.76 ms ✅ -0.25 ms (-4.18%) 3.27%
transfer_no_resume_ring_1.3_ecdsap384_aes 8.72 ms 8.44 ms ✅ -0.27 ms (-3.13%) 2.43%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 13.27 ms 13.01 ms ✅ -0.26 ms (-1.99%) 1.87%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 13.94 ms 13.68 ms ✅ -0.27 ms (-1.93%) 1.87%

Other differences

Click to expand
Scenario Baseline Candidate Diff Threshold
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes 4.78 ms 4.54 ms -0.24 ms (-5.07%) 5.17%
transfer_no_resume_ring_1.3_ecdsap256_aes 5.62 ms 5.36 ms -0.27 ms (-4.74%) 4.82%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes 5.41 ms 5.18 ms -0.24 ms (-4.35%) 4.73%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes 5.24 ms 5.03 ms -0.21 ms (-4.00%) 4.80%
handshake_no_resume_aws_lc_rs_1.3_rsa_aes 1.10 ms 1.14 ms 0.04 ms (3.18%) 7.55%
handshake_no_resume_aws_lc_rs_1.2_rsa_aes 1.02 ms 1.06 ms 0.03 ms (3.08%) 6.86%
handshake_no_resume_1.2_no_crypto 48.39 µs 49.83 µs 1.44 µs (2.97%) 9.59%
handshake_session_id_1.3_no_crypto 566.55 µs 581.18 µs 14.63 µs (2.58%) 5.18%
handshake_no_resume_1.3_no_crypto 45.47 µs 46.63 µs 1.15 µs (2.54%) 8.75%
handshake_session_id_aws_lc_rs_1.2_rsa_aes 1.53 ms 1.57 ms 0.04 ms (2.36%) 6.41%
handshake_tickets_aws_lc_rs_1.2_rsa_aes 1.68 ms 1.72 ms 0.04 ms (2.17%) 4.89%
transfer_no_resume_1.3_no_crypto 12.11 ms 11.86 ms -0.25 ms (-2.07%) 2.72%
handshake_no_resume_aws_lc_rs_1.3_rsa_chacha 1.12 ms 1.15 ms 0.02 ms (1.85%) 4.00%
handshake_tickets_1.3_no_crypto 553.75 µs 563.39 µs 9.63 µs (1.74%) 3.41%
transfer_no_resume_ring_1.3_rsa_chacha 13.66 ms 13.42 ms -0.24 ms (-1.72%) 1.77%
transfer_no_resume_ring_1.3_ecdsap256_chacha 13.16 ms 12.94 ms -0.22 ms (-1.70%) 1.89%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha 13.91 ms 13.68 ms -0.23 ms (-1.66%) 2.15%
transfer_no_resume_ring_1.3_ecdsap384_chacha 16.26 ms 16.03 ms -0.23 ms (-1.41%) 1.42%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_aes 478.86 µs 484.38 µs 5.52 µs (1.15%) 2.86%
handshake_session_id_1.2_no_crypto 292.56 µs 295.79 µs 3.23 µs (1.10%) 5.46%
handshake_no_resume_ring_1.3_ecdsap256_chacha 414.56 µs 419.05 µs 4.49 µs (1.08%) 1.90%
handshake_no_resume_ring_1.3_ecdsap256_aes 424.55 µs 428.57 µs 4.02 µs (0.95%) 1.95%
handshake_no_resume_aws_lc_rs_1.3_ecdsap256_chacha 464.32 µs 468.33 µs 4.01 µs (0.86%) 2.46%
handshake_session_id_aws_lc_rs_1.3_rsa_aes 6.96 ms 7.01 ms 0.05 ms (0.70%) 1.80%
handshake_no_resume_ring_1.3_rsa_chacha 899.39 µs 905.11 µs 5.71 µs (0.63%) 1.00%
handshake_tickets_aws_lc_rs_1.3_rsa_aes 7.16 ms 7.20 ms 0.04 ms (0.60%) 1.67%
handshake_tickets_1.2_no_crypto 317.82 µs 319.62 µs 1.80 µs (0.57%) 4.57%
handshake_no_resume_ring_1.2_rsa_aes 905.72 µs 910.71 µs 4.99 µs (0.55%) 1.00%
handshake_session_id_ring_1.3_rsa_chacha 5.75 ms 5.78 ms 0.03 ms (0.46%) 1.02%
handshake_no_resume_ring_1.3_rsa_aes 904.99 µs 908.94 µs 3.95 µs (0.44%) 1.00%
handshake_tickets_ring_1.3_rsa_aes 5.84 ms 5.87 ms 0.03 ms (0.43%) 1.06%
handshake_session_id_ring_1.3_ecdsap256_chacha 5.26 ms 5.28 ms 0.02 ms (0.42%) 1.11%
handshake_tickets_ring_1.3_rsa_chacha 5.81 ms 5.83 ms 0.02 ms (0.42%) 1.00%
handshake_session_id_aws_lc_rs_1.3_rsa_chacha 6.96 ms 6.99 ms 0.03 ms (0.40%) 1.41%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_aes 6.33 ms 6.36 ms 0.02 ms (0.38%) 1.97%
handshake_session_id_ring_1.3_rsa_aes 5.79 ms 5.81 ms 0.02 ms (0.37%) 1.00%
handshake_session_id_ring_1.3_ecdsap256_aes 5.31 ms 5.33 ms 0.02 ms (0.37%) 1.10%
handshake_tickets_aws_lc_rs_1.3_rsa_chacha 7.17 ms 7.19 ms 0.03 ms (0.36%) 1.15%
handshake_tickets_ring_1.3_ecdsap256_aes 5.37 ms 5.39 ms 0.02 ms (0.36%) 1.27%
handshake_tickets_ring_1.3_ecdsap256_chacha 5.32 ms 5.34 ms 0.02 ms (0.34%) 1.17%
handshake_session_id_aws_lc_rs_1.3_ecdsap256_chacha 6.29 ms 6.30 ms 0.02 ms (0.31%) 1.59%
handshake_session_id_ring_1.3_ecdsap384_chacha 8.35 ms 8.38 ms 0.02 ms (0.29%) 1.00%
handshake_tickets_ring_1.3_ecdsap384_aes 8.45 ms 8.48 ms 0.02 ms (0.27%) 1.00%
handshake_tickets_ring_1.3_ecdsap384_chacha 8.42 ms 8.44 ms 0.02 ms (0.26%) 1.00%
handshake_session_id_ring_1.3_ecdsap384_aes 8.39 ms 8.41 ms 0.02 ms (0.25%) 1.00%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_chacha 6.96 ms 6.98 ms 0.02 ms (0.22%) 1.53%
transfer_no_resume_1.2_no_crypto 11.93 ms 11.96 ms 0.02 ms (0.21%) 1.94%
handshake_session_id_aws_lc_rs_1.3_ecdsap384_aes 7.00 ms 7.01 ms 0.01 ms (0.19%) 1.78%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_aes 6.53 ms 6.54 ms 0.01 ms (0.18%) 1.72%
handshake_tickets_aws_lc_rs_1.3_ecdsap256_chacha 6.49 ms 6.50 ms 0.01 ms (0.18%) 1.61%
handshake_no_resume_ring_1.3_ecdsap384_chacha 3.51 ms 3.52 ms 0.01 ms (0.17%) 1.00%
handshake_session_id_ring_1.2_rsa_aes 1.36 ms 1.36 ms -0.00 ms (-0.15%) 1.18%
handshake_no_resume_ring_1.3_ecdsap384_aes 3.52 ms 3.52 ms 0.00 ms (0.14%) 1.00%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_aes 1.17 ms 1.17 ms -0.00 ms (-0.13%) 1.21%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_aes 7.20 ms 7.21 ms 0.01 ms (0.13%) 1.73%
handshake_tickets_aws_lc_rs_1.3_ecdsap384_chacha 7.17 ms 7.18 ms 0.01 ms (0.08%) 1.43%
handshake_tickets_ring_1.2_rsa_aes 1.44 ms 1.44 ms 0.00 ms (0.04%) 1.55%
handshake_no_resume_aws_lc_rs_1.3_ecdsap384_chacha 1.15 ms 1.15 ms 0.00 ms (0.01%) 1.00%

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
transfer_no_resume_ring_1.3_ecdsap256_aes_client ∑ 11188397B 1379a
🔝 607495B 220a
∑ 702461B 738a
🔝 591047B 219a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-93.72%)
0.10%
transfer_no_resume_ring_1.3_ecdsap256_chacha_client ∑ 11188407B 1379a
🔝 607498B 220a
∑ 702886B 751a
🔝 591050B 219a
✅ ∑ -10485521B -628a
🔝 -16448B -1a (-93.72%)
0.10%
transfer_no_resume_ring_1.3_ecdsap384_aes_client ∑ 11189108B 1383a
🔝 607884B 220a
∑ 703172B 742a
🔝 591436B 219a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-93.72%)
0.10%
transfer_no_resume_ring_1.3_ecdsap384_chacha_client ∑ 11189118B 1383a
🔝 607887B 220a
∑ 703245B 744a
🔝 591439B 219a
✅ ∑ -10485873B -639a
🔝 -16448B -1a (-93.71%)
0.10%
transfer_no_resume_ring_1.2_rsa_aes_client ∑ 11192838B 1393a
🔝 607209B 218a
∑ 706902B 752a
🔝 590761B 217a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-93.68%)
0.10%
transfer_no_resume_1.2_no_crypto_client ∑ 11192855B 2641a
🔝 603564B 212a
∑ 706919B 2000a
🔝 587116B 211a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-93.68%)
0.10%
transfer_no_resume_1.3_no_crypto_client ∑ 11194374B 2643a
🔝 604427B 212a
∑ 708438B 2002a
🔝 587979B 211a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-93.67%)
0.10%
transfer_no_resume_ring_1.3_rsa_aes_client ∑ 11198578B 1395a
🔝 610042B 220a
∑ 712642B 754a
🔝 593594B 219a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-93.64%)
0.10%
transfer_no_resume_ring_1.3_rsa_chacha_client ∑ 11198587B 1395a
🔝 610045B 220a
∑ 712651B 754a
🔝 593597B 219a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-93.64%)
0.10%
transfer_no_resume_aws_lc_rs_1.2_rsa_aes_client ∑ 11480964B 1522a
🔝 740472B 228a
∑ 995028B 881a
🔝 724024B 227a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-91.33%)
0.10%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_aes_client ∑ 11485460B 1507a
🔝 742108B 231a
∑ 999552B 867a
🔝 725660B 230a
✅ ∑ -10485908B -640a
🔝 -16448B -1a (-91.30%)
0.10%
transfer_no_resume_aws_lc_rs_1.3_ecdsap256_chacha_client ∑ 11485437B 1507a
🔝 742095B 231a
∑ 999977B 881a
🔝 725647B 230a
✅ ∑ -10485460B -626a
🔝 -16448B -1a (-91.29%)
0.10%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_chacha_client ∑ 11487033B 1512a
🔝 742484B 231a
∑ 1001078B 870a
🔝 726036B 230a
✅ ∑ -10485955B -642a
🔝 -16448B -1a (-91.29%)
0.10%
transfer_no_resume_aws_lc_rs_1.3_ecdsap384_aes_client ∑ 11487037B 1511a
🔝 742497B 231a
∑ 1001101B 870a
🔝 726049B 230a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-91.28%)
0.10%
transfer_no_resume_aws_lc_rs_1.3_rsa_aes_client ∑ 11517926B 1556a
🔝 744655B 231a
∑ 1031990B 915a
🔝 728207B 230a
✅ ∑ -10485936B -641a
🔝 -16448B -1a (-91.04%)
0.10%
transfer_no_resume_aws_lc_rs_1.3_rsa_chacha_client ∑ 11517903B 1556a
🔝 744642B 231a
∑ 1031999B 916a
🔝 728194B 230a
✅ ∑ -10485904B -640a
🔝 -16448B -1a (-91.04%)
0.10%
handshake_session_id_1.2_no_crypto_client ∑ 120995B 572a
🔝 55041B 202a
∑ 120835B 572a
🔝 55041B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.13%)
0.10%
handshake_tickets_1.2_no_crypto_client ∑ 122818B 578a
🔝 55038B 202a
∑ 122658B 578a
🔝 55038B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.13%)
0.10%
handshake_tickets_1.2_no_crypto_server ∑ 123204B 590a
🔝 67349B 215a
∑ 123044B 590a
🔝 67269B 215a
✅ ∑ -160B +0a
🔝 -80B +0a (-0.13%)
0.10%
handshake_tickets_1.3_no_crypto_server ∑ 125483B 656a
🔝 67507B 221a
∑ 125323B 656a
🔝 67427B 221a
✅ ∑ -160B +0a
🔝 -80B +0a (-0.13%)
0.10%
handshake_session_id_1.3_no_crypto_client ∑ 127356B 642a
🔝 55041B 202a
∑ 127196B 642a
🔝 55041B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.13%)
0.10%
handshake_tickets_1.3_no_crypto_client ∑ 127603B 642a
🔝 55038B 202a
∑ 127443B 642a
🔝 55038B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.13%)
0.10%
handshake_session_id_1.2_no_crypto_server ∑ 137443B 565a
🔝 74501B 200a
∑ 137283B 565a
🔝 74501B 200a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.12%)
0.10%
handshake_session_id_1.3_no_crypto_server ∑ 140268B 661a
🔝 74501B 200a
∑ 140108B 661a
🔝 74501B 200a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_aes_server ∑ 145676B 683a
🔝 73331B 230a
∑ 145513B 683a
🔝 73250B 230a
✅ ∑ -163B +0a
🔝 -81B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_chacha_server ∑ 146902B 683a
🔝 73965B 230a
∑ 146739B 683a
🔝 73884B 230a
✅ ∑ -163B +0a
🔝 -81B +0a (-0.11%)
0.10%
handshake_session_id_ring_1.2_rsa_aes_client ∑ 144580B 616a
🔝 55225B 202a
∑ 144420B 616a
🔝 55225B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_chacha_server ∑ 145682B 683a
🔝 73333B 230a
∑ 145522B 683a
🔝 73253B 230a
✅ ∑ -160B +0a
🔝 -80B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.2_rsa_aes_client ∑ 146363B 621a
🔝 55222B 202a
∑ 146203B 621a
🔝 55222B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_aes_server ∑ 146896B 683a
🔝 73963B 230a
∑ 146736B 683a
🔝 73883B 230a
✅ ∑ -160B +0a
🔝 -80B +0a (-0.11%)
0.10%
handshake_session_id_ring_1.3_ecdsap256_chacha_client ∑ 147684B 674a
🔝 55035B 202a
∑ 147524B 674a
🔝 55035B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_aes_client ∑ 149492B 676a
🔝 55029B 202a
∑ 149331B 676a
🔝 55029B 202a
✅ ∑ -161B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_session_id_ring_1.3_ecdsap384_aes_client ∑ 149468B 678a
🔝 55061B 202a
∑ 149308B 678a
🔝 55061B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap256_chacha_client ∑ 149500B 676a
🔝 55032B 202a
∑ 149340B 676a
🔝 55032B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_session_id_ring_1.3_ecdsap256_aes_client ∑ 147675B 674a
🔝 55032B 202a
∑ 147517B 674a
🔝 55032B 202a
✅ ∑ -158B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_chacha_client ∑ 151292B 680a
🔝 55061B 202a
∑ 151131B 680a
🔝 55061B 202a
✅ ∑ -161B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_session_id_ring_1.3_ecdsap384_chacha_client ∑ 149476B 678a
🔝 55064B 202a
∑ 149317B 678a
🔝 55064B 202a
✅ ∑ -159B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.3_ecdsap384_aes_client ∑ 151284B 680a
🔝 55058B 202a
∑ 151124B 680a
🔝 55058B 202a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.11%)
0.10%
handshake_tickets_ring_1.2_rsa_aes_server ∑ 153581B 642a
🔝 78005B 233a
∑ 153421B 642a
🔝 77925B 233a
✅ ∑ -160B +0a
🔝 -80B +0a (-0.10%)
0.10%
handshake_session_id_ring_1.3_ecdsap256_chacha_server ∑ 159284B 687a
🔝 76190B 205a
∑ 159124B 687a
🔝 76190B 205a
✅ ∑ -160B +0a
🔝 +0B +0a (-0.10%)
0.10%

Additional information

Historical results

Checkout details:

@ctz ctz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I suggest we do the first two commits separately, as aren't really controversial

Comment thread rustls/src/conn/mod.rs
@djc
djc force-pushed the message-iter-next branch from 6a0d430 to 51fef7d Compare July 14, 2026 15:28
@djc djc mentioned this pull request Jul 14, 2026
@djc
djc force-pushed the message-iter-next branch 2 times, most recently from 9034a9c to 2771cd7 Compare July 15, 2026 10:48
Comment thread examples/src/bin/tlsserver-mio.rs Outdated
@djc
djc force-pushed the message-iter-next branch 6 times, most recently from 9773fad to 939c298 Compare July 16, 2026 08:20
@djc
djc marked this pull request as ready for review July 16, 2026 08:21
@djc
djc force-pushed the message-iter-next branch from 939c298 to c26f3c2 Compare July 16, 2026 08:22
@djc
djc requested a review from ctz July 16, 2026 08:23
@djc
djc force-pushed the message-iter-next branch from c26f3c2 to d2aae01 Compare July 16, 2026 08:42
@codecov

codecov Bot commented Jul 16, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 93.28859% with 10 lines in your changes missing coverage. Please review.
✅ Project coverage is 95.31%. Comparing base (74c41a4) to head (42521b0).

Files with missing lines Patch % Lines
rustls-util/src/stream.rs 82.97% 4 Missing and 4 partials ⚠️
rustls/src/conn/mod.rs 96.66% 1 Missing and 1 partial ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3149      +/-   ##
==========================================
- Coverage   95.35%   95.31%   -0.04%     
==========================================
  Files          99       99              
  Lines       23183    23143      -40     
  Branches      671      672       +1     
==========================================
- Hits        22106    22059      -47     
- Misses        925      928       +3     
- Partials      152      156       +4     

☔ View full report in Codecov by Harness.
📢 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.

Comment thread rustls/src/conn/mod.rs Outdated
Comment thread rustls/src/conn/mod.rs Outdated
@djc
djc force-pushed the message-iter-next branch from d2aae01 to cce76cd Compare July 16, 2026 10:25
Comment thread rustls/src/conn/mod.rs
Comment thread rustls/src/conn/mod.rs
@djc
djc force-pushed the message-iter-next branch from cce76cd to 5260ed0 Compare July 16, 2026 10:32
@djc
djc force-pushed the message-iter-next branch 2 times, most recently from f7a9e8f to 615aa41 Compare July 31, 2026 09:52
Comment thread rustls-util/src/stream.rs Outdated
#[test]
fn streamowned_can_be_created_for_client_and_tcpstream() {
type _Test = StreamOwned<ClientConnection, TcpStream>;
type _Test = StreamOwned<ClientConnection, ServerSide, TcpStream>;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

this is wrong. (can the bound be put on the struct?)

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

What do you mean by putting the bound on the struct?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Fixed.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Bare in mind first my confidence with rust type golf is low. Can trait Connection require each impl exposes its Side: SideData value as an associated item? Then it doesn't need to be restated here, and any references to it can be C::Side instead.

@djc djc Aug 5, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

Bare in mind first my confidence with rust type golf is low. Can trait Connection require each impl exposes its Side: SideData value as an associated item? Then it doesn't need to be restated here, and any references to it can be C::Side instead.

It could but I think it would preclude the use of dyn Connection which we're using in some places, which makes it a larger change at the least (and probably triggers some of the monomorphization things you tend to dislike).

Comment thread rustls-util/src/stream.rs Outdated
let iter = server.process_new_packets(&mut server_input);
let mut received = Vec::with_capacity(16);
let state = iter.handle_all(&mut received).unwrap();
assert!(state.peer_has_closed());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

assert_eq!(received, b"from-client!"); here or similar -- it is important that peer_has_closed() does not overtake appdata.

in addition tests that do not consume the whole of iter should see no peer_has_closed() here for the same reason.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

assert_eq!(received, b"from-client!"); here or similar -- it is important that peer_has_closed() does not overtake appdata.

Done.

in addition tests that do not consume the whole of iter should see no peer_has_closed() here for the same reason.

Did you see concrete instances of this?

Comment thread rustls/src/conn/mod.rs Outdated
Comment thread rustls/src/conn/mod.rs
Comment thread rustls/src/conn/mod.rs
Comment thread rustls/src/conn/mod.rs Outdated
@djc
djc force-pushed the message-iter-next branch from 615aa41 to 42521b0 Compare August 5, 2026 08:52
@djc
djc enabled auto-merge August 5, 2026 08:59
@djc

djc commented Aug 5, 2026

Copy link
Copy Markdown
Member Author

With your approval, going to merge this. Happy to take further feedback of course, and noting to

  • Check whether we could/should make the Side an associated type on Connection

next.

@djc
djc added this pull request to the merge queue Aug 5, 2026
Merged via the queue into main with commit f7abe98 Aug 5, 2026
33 of 34 checks passed
@djc
djc deleted the message-iter-next branch August 5, 2026 09:07
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