# GitHub Action Benchmark
Generated by the benchmark workflow.
## Run
- Commit: 669c2cc3ed05cf57374d0307c762741df5f016de
- Ref: main
- Runner: Linux
- Throughput exit code: 0
- Comparison exit code: 0
- Concurrency exit code: 0
- Interop exit code: 0
- HTTP/3 exit code: 0
- Cross-machine exit code: not-configured
- Fuzz exit code: 0
- Workflow run: [33242236071](https://github.com/blueokanna/Courierust/actions/runs/33242236071)
## Evidence Rules
- Rows marked `invalid` are retained for auditability but are excluded from performance conclusions.
- The `*_h2c_large_body_to_hyper` rows measure a 1 MiB POST against the same hyper h2 server. Both clients are paced by the server 64 KiB initial flow-control window (WINDOW_UPDATE round trips), and reqwest retains a large fixed wait even in the async client — these rows are NOT valid for ratio claims.
- `quinn_h3_client_to_courierust` is reported `not_available` until the independent quinn+rustls QUIC/TLS handshake completes against the Courierust H3 server (a genuine interop gap, never faked).
- Loopback is not cross-machine evidence. The cross-machine table is evidence only when `target_scope=remote` and `status=ok`.
- TLS rows measure the built-in TLS 1.2/1.3 path; certificate, hostname, and ALPN checks must pass for the case to be valid. `negotiated_alpn` is reported; `session_resumption=n/a` because each TLSVERIFY row is a single handshake that does not measure resumption (the stack does implement TLS 1.3 session tickets).
- Fuzz status is evidence only for the recorded target, run count, and duration; an unconfigured target is not a pass.
- The `STATS` table is the reactor/connection/stream/syscall evidence behind the throughput rows (especially the h2 multi-worker scaling).
## Reading the numbers (correct interpretation)
- RPS and median latency are comparable only within a paired row (same client, server, payload, concurrency). Never divide across rows, clients or protocols to claim "N× faster".
- reqwest pays for a general async runtime, rich extensions (proxies, cookies, encodings, swappable connector/TLS backends) and a different pool policy: `pool_max_idle_per_host=N` caps idle *pooled* connections, not live ones — equivalent to Courierust `max_connections_per_host=N` only under sequential load.
- An H3 concurrent row whose P99/P99.9/tail_ratio sits far above its median (e.g. P99 jumping from ~200 µs to ms) is a signal to track, not noise. Candidates: UDP reactor, packet queue, congestion-window/ACK timers, QPACK/control flow, worker→reactor handoff, CI-runner scheduling. One run cannot localize the root cause, but it proves the H3 tail is not yet as tight as H2.
- The H1 server is built for event-driven protection (incomplete headers, idle keep-alive, slow senders); hyper is a mature async architecture. A short-request microbenchmark cannot dismiss the scheduling value — the concurrency/slow-connection rows measure production usability and resource isolation.
- H3 connection reuse plus cross-implementation interop (quinn+h3 → Courierust server) is stronger evidence than Courierust-to-Courierust.
## Throughput
| Case | Protocol | Mode | Payload | Workers | Server threads | Requests | RPS | Resp MB/s | P50 us | P75 us | P90 us | P95 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| h1_sequential | h1 | sequential | empty | 1 | 4 | 4000 | 14601.4 | 0.000 | 69.52 | 71.73 | 75.80 | 78.53 | 97.32 | 41.73 | 69.39 | 145.80 | 7.87 | 125.48 | 1.40 | 2000 |
| h1_sequential | h1 | sequential | 1k | 1 | 4 | 4000 | 14342.8 | 14.687 | 70.41 | 71.50 | 73.64 | 76.21 | 80.92 | 48.63 | 69.92 | 99.91 | 4.66 | 93.18 | 1.15 | 2000 |
| h1_sequential | h1 | sequential | 64k | 1 | 4 | 4000 | 9840.5 | 644.907 | 97.44 | 110.34 | 114.53 | 117.90 | 126.44 | 79.87 | 101.00 | 154.56 | 9.82 | 137.86 | 1.30 | 2000 |
| h1_parallel_w1 | h1 | parallel | 1k | 1 | 4 | 4000 | 14178.2 | 14.519 | 71.82 | 73.74 | 77.32 | 81.54 | 93.95 | 47.05 | 70.84 | 124.58 | 7.33 | 112.78 | 1.31 | 2000 |
| h1_parallel_w4 | h1 | parallel | 1k | 4 | 4 | 4000 | 34347.9 | 35.172 | 98.25 | 127.68 | 165.51 | 194.70 | 273.46 | 23.09 | 106.84 | 699.03 | 50.16 | 439.11 | 2.78 | 2000 |
| h1_parallel_w8 | h1 | parallel | 1k | 8 | 8 | 4000 | 48390.9 | 49.552 | 131.20 | 184.06 | 255.58 | 320.73 | 476.92 | 24.07 | 150.44 | 926.29 | 89.36 | 682.81 | 3.63 | 2000 |
| h2_multiplex_w1 | h2c | multiplex | 1k | 1 | 4 | 4000 | 11078.6 | 11.344 | 90.60 | 92.60 | 102.24 | 104.01 | 110.17 | 64.11 | 90.70 | 133.82 | 7.53 | 126.52 | 1.22 | 2000 |
| h2_multiplex_w8 | h2c | multiplex | 1k | 8 | 4 | 4000 | 42365.1 | 43.382 | 171.08 | 216.20 | 259.69 | 278.06 | 308.15 | 74.68 | 185.59 | 334.35 | 47.70 | 329.42 | 1.80 | 2000 |
| h2_multiplex_w32 | h2c | multiplex | 1k | 32 | 4 | 4000 | 73031.9 | 74.785 | 423.25 | 474.29 | 508.14 | 533.90 | 685.59 | 78.81 | 429.66 | 1017.98 | 75.97 | 940.87 | 1.62 | 2016 |
| h2_multiplex_w1 | h2c | multiplex | 64k | 1 | 4 | 4000 | 6645.8 | 435.539 | 156.04 | 158.25 | 159.97 | 162.11 | 171.26 | 114.77 | 150.55 | 240.34 | 10.50 | 184.73 | 1.10 | 2000 |
| h2_multiplex_w8 | h2c | multiplex | 64k | 8 | 4 | 4000 | 16614.2 | 1088.828 | 472.68 | 504.38 | 552.84 | 658.05 | 895.84 | 159.29 | 480.34 | 1020.98 | 96.83 | 978.72 | 1.90 | 2000 |
| h2_multiplex_w32 | h2c | multiplex | 64k | 32 | 4 | 4000 | 15135.7 | 991.933 | 2054.18 | 2319.80 | 2744.82 | 3015.69 | 3332.88 | 220.09 | 2075.37 | 4311.46 | 504.55 | 4189.07 | 1.62 | 2016 |
| https_h2_sequential | https+h2 | sequential | empty | 1 | 4 | 2000 | 10230.5 | 0.000 | 100.77 | 102.32 | 103.63 | 104.68 | 112.22 | 64.63 | 97.66 | 138.95 | 9.11 | 125.11 | 1.11 | 2000 |
| https_h2_sequential | https+h2 | sequential | 1k | 1 | 4 | 2000 | 9704.1 | 9.937 | 102.73 | 104.25 | 109.32 | 115.75 | 120.42 | 74.93 | 102.99 | 138.75 | 6.54 | 132.80 | 1.17 | 2000 |
| https_h2_sequential | https+h2 | sequential | 64k | 1 | 4 | 2000 | 2292.3 | 150.230 | 417.15 | 433.59 | 522.39 | 528.06 | 542.88 | 373.76 | 436.17 | 570.62 | 42.91 | 559.23 | 1.30 | 2000 |
## TLS Verification Evidence
| Protocol | Cert verified | Hostname verified | Negotiated ALPN | Session resumption | Cipher suite | Error |
| --- | --- | --- | --- | --- | --- | --- |
| https+h2 | true | true | h2 | n/a | 0x1303 | - |
| https+h2 | true | true | h2 | n/a | 0x1303 | - |
| https+h2 | true | true | h2 | n/a | 0x1303 | - |
## Cross-Library Comparison
| Case | Layer | Protocol | Client | Server | Payload | Workers | Server threads | Pool policy | Pool value | Reps | Status | Reason | Requests | RPS | Resp MB/s | P50 us | P75 us | P90 us | P95 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| raw_tcp_floor | transport | h1 | std_tcp | std_tcp | 4b | 1 | 1 | raw_tcp | 1 | 1 | valid | - | 2000 | 26239.4 | 0.105 | 39.93 | 40.59 | 41.25 | 41.78 | 48.45 | 21.56 | 38.05 | 68.38 | 4.49 | 56.58 | 1.21 | 2000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 18193.2 | 18.630 | 50.30 | 63.09 | 64.18 | 65.16 | 74.61 | 25.17 | 54.90 | 96.42 | 8.06 | 86.89 | 1.48 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8777.0 | 8.988 | 111.65 | 129.10 | 131.45 | 132.89 | 140.24 | 81.42 | 113.84 | 159.00 | 12.92 | 153.85 | 1.26 | 4000 |
| reqwest_client_to_courierust | server | h1 | reqwest | courierust | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 7132.7 | 7.304 | 140.65 | 144.11 | 150.49 | 153.14 | 162.51 | 103.68 | 140.09 | 277.74 | 8.58 | 187.34 | 1.16 | 4000 |
| reqwest_client_to_hyper | server | h1 | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8841.4 | 9.054 | 113.15 | 122.87 | 130.33 | 131.50 | 138.39 | 80.88 | 113.01 | 164.54 | 12.75 | 156.14 | 1.22 | 4000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 1k | 8 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 69556.2 | 71.226 | 96.60 | 138.86 | 169.55 | 193.34 | 295.74 | 29.13 | 108.77 | 1435.04 | 72.19 | 988.45 | 3.06 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 1k | 8 | 4 | reqwest_pool_max_idle_per_host | 8 | 2 | valid | - | 4000 | 25914.0 | 26.536 | 304.42 | 324.86 | 348.80 | 367.54 | 499.10 | 95.06 | 306.62 | 1266.01 | 61.35 | 934.72 | 1.64 | 4000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 12725.6 | 833.987 | 73.90 | 89.00 | 90.20 | 91.06 | 101.20 | 58.09 | 78.51 | 119.46 | 8.88 | 112.74 | 1.37 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8129.1 | 532.751 | 122.07 | 124.11 | 127.03 | 135.92 | 144.91 | 95.15 | 122.96 | 225.81 | 6.60 | 177.50 | 1.19 | 4000 |
| reqwest_client_to_courierust | server | h1 | reqwest | courierust | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 6113.2 | 400.637 | 162.41 | 167.94 | 175.10 | 179.92 | 190.20 | 128.41 | 163.46 | 443.02 | 10.29 | 220.75 | 1.17 | 4000 |
| reqwest_client_to_hyper | server | h1 | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 7636.8 | 500.486 | 128.71 | 137.96 | 142.48 | 145.65 | 159.77 | 101.31 | 130.87 | 208.73 | 10.27 | 176.53 | 1.24 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 9059.6 | 9.277 | 112.06 | 113.83 | 117.28 | 125.47 | 132.02 | 85.13 | 110.33 | 152.28 | 7.90 | 143.08 | 1.18 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 7246.2 | 7.420 | 137.37 | 142.25 | 144.66 | 148.37 | 160.50 | 111.82 | 137.92 | 172.83 | 6.70 | 170.51 | 1.17 | 4000 |
| reqwest_client_to_courierust | server | h2c | reqwest | courierust | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8182.5 | 8.379 | 121.36 | 125.44 | 128.50 | 131.28 | 144.65 | 102.45 | 122.13 | 219.10 | 6.79 | 174.29 | 1.19 | 4000 |
| reqwest_client_to_hyper | server | h2c | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 7234.4 | 7.408 | 137.49 | 140.92 | 144.10 | 146.64 | 161.46 | 118.03 | 138.15 | 192.35 | 6.12 | 182.42 | 1.17 | 4000 |
| courierust_h2_conn1xw32 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 43474.8 | 44.518 | 671.81 | 815.90 | 975.75 | 1078.61 | 1482.17 | 81.66 | 701.08 | 2742.86 | 236.57 | 2410.06 | 2.21 | 4000 |
| courierust_h2_conn4xw8 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 4 | 2 | valid | - | 4000 | 50007.4 | 51.208 | 548.33 | 736.10 | 937.22 | 1094.45 | 1547.35 | 93.23 | 592.23 | 3633.60 | 292.40 | 2261.95 | 2.82 | 4000 |
| courierust_h2_conn8xw4 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 46917.6 | 48.044 | 586.63 | 800.50 | 1017.62 | 1187.16 | 1588.99 | 97.31 | 630.62 | 2803.32 | 309.36 | 2311.39 | 2.71 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 1k | 8 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 34268.5 | 35.091 | 214.05 | 270.58 | 339.95 | 397.76 | 563.29 | 66.26 | 228.76 | 1039.85 | 94.46 | 805.76 | 2.63 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 1k | 8 | 4 | reqwest_pool_max_idle_per_host | 8 | 2 | valid | - | 4000 | 23744.9 | 24.315 | 325.26 | 388.06 | 452.21 | 494.66 | 587.01 | 127.01 | 333.27 | 919.48 | 91.33 | 706.06 | 1.80 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 5411.0 | 354.617 | 176.40 | 199.71 | 202.72 | 204.32 | 218.99 | 161.57 | 184.75 | 265.59 | 14.12 | 245.72 | 1.24 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 5626.9 | 368.761 | 176.95 | 184.96 | 189.16 | 196.10 | 207.99 | 141.18 | 177.63 | 231.11 | 10.75 | 221.06 | 1.18 | 4000 |
| reqwest_client_to_courierust | server | h2c | reqwest | courierust | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 6060.3 | 397.168 | 163.60 | 171.76 | 178.77 | 187.04 | 200.62 | 133.98 | 164.90 | 247.32 | 11.94 | 217.44 | 1.23 | 4000 |
| reqwest_client_to_hyper | server | h2c | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 5457.5 | 357.660 | 183.16 | 188.78 | 197.73 | 202.07 | 215.98 | 148.01 | 183.15 | 279.31 | 11.19 | 236.80 | 1.18 | 4000 |
| courierust_h2c_large_body_to_hyper | client | h2c | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 64 | 530.8 | 34.784 | 1945.22 | 1995.85 | 2062.17 | 2098.09 | 2142.07 | 1688.45 | 1884.02 | 2162.59 | 141.22 | 2162.59 | 1.10 | 64 |
| reqwest_async_h2c_large_body_to_hyper | client | h2c | reqwest-async | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 64 | 1005.0 | 65.861 | 948.83 | 979.63 | 1291.80 | 1326.74 | 1361.83 | 861.40 | 995.00 | 1371.73 | 141.81 | 1371.73 | 1.44 | 64 |
| courierust_h3_client_to_courierust | client | h3 | courierust-h3 | courierust-h3 | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 4819.6 | 4.935 | 208.24 | 216.66 | 222.77 | 230.27 | 256.65 | 142.90 | 207.38 | 379.79 | 15.90 | 283.43 | 1.23 | 4000 |
| quinn_h3_client_to_courierust | client | h3 | quinn+h3 | courierust-h3 | 1k | 1 | 4 | quinn_single_connection | 1 | 2 | valid | - | 4000 | 4039.9 | 4.137 | 246.84 | 255.00 | 262.21 | 267.51 | 286.19 | 199.89 | 247.41 | 428.42 | 13.54 | 338.95 | 1.16 | 4000 |
| courierust_h3_client_to_courierust | client | h3 | courierust-h3 | courierust-h3 | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 1173.7 | 76.923 | 847.03 | 863.81 | 879.18 | 890.76 | 1172.46 | 777.57 | 851.87 | 1555.54 | 47.14 | 1218.21 | 1.38 | 4000 |
| quinn_h3_client_to_courierust | client | h3 | quinn+h3 | courierust-h3 | 64k | 1 | 4 | quinn_single_connection | 1 | 2 | valid | - | 4000 | 929.7 | 60.931 | 1123.67 | 1148.80 | 1167.35 | 1177.41 | 1205.11 | 829.35 | 1075.44 | 2293.91 | 110.70 | 1235.33 | 1.07 | 4000 |
## Concurrency and Slow Connections
- These rows measure production usability and resource isolation: an event-driven scheduler must keep idle/partial/slow (Slowloris-style) connections off the worker pool while a fast probe still completes. The `pool` row is the diagnostic counter-model.
| Case | Model | Platform | Status | Event enabled | Connections | Worker threads | Probe us | Probe status | Byte delay us | Completed | Wall ms |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| idle_partial_herd | event | linux | probe_ok | true | 200 | 2 | 467.36 | - | - | - | - |
| idle_partial_herd | pool | linux | probe_blocked | false | 200 | 2 | na | - | - | - | - |
| slow_sender_herd | event | linux | ok | true | 16 | 2 | 160.43 | probe_ok | 10000 | 16 | 395.65 |
## HTTP/3 (QUIC)
- `h3_connect` is a cold request: QUIC handshake + TLS 1.3 + server Retry address validation on a fresh connection.
- `h3_sequential` and `h3_parallel` reuse the pooled per-authority QUIC connection (`mode=reuse`), so they measure the warm per-request cost of connection reuse.
| Case | Mode | Workers | Requests | Elapsed ms | Connect ms | RPS | P50 us | P75 us | P90 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| h3_connect | connect | 1 | 1 | - | 4.353 | - | - | - | - | - | - | - | - | - | - | - | - |
| h3_sequential | reuse | 1 | 1000 | 180.660 | - | 5535.2 | 178.9 | 184.5 | 191.4 | 213.0 | 130.73 | 180.57 | 252.61 | 10.04 | 251.18 | 1.19 | 1000 |
| h3_parallel | reuse | 8 | 1000 | 51.814 | - | 19299.9 | 407.3 | 431.1 | 458.2 | 527.0 | 267.36 | 411.44 | 619.22 | 37.52 | 601.87 | 1.29 | 1000 |
## Reactor / Connection / Stream Evidence
| Protocol | Case | Payload | Workers | Accepted conns | Active conns | Poll syscalls | Wakeups | Queue peak | H1 conns | H1 read | H1 write | H2 conns | H2 active | H2 streams | H2 stream peak | H2 stream/conn peak | H2 read | H2 write | H3 conns | H3 active | H3 streams | H3 active streams | H3 stream peak | H3 stream/conn peak | H3 queue peak | H3 UDP recv | H3 UDP send |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| h2c | h2_multiplex_w1 | 1k | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 4254 | 4003 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w1 | 1k | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 4003 | 4253 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 1k | 8 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 942 | 691 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 1k | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 691 | 941 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 1k | 32 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 407 | 394 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 1k | 32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 380 | 426 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w1 | 64k | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 10260 | 16008 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w1 | 64k | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 22276 | 10260 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 64k | 8 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 1130 | 16010 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w8 | 64k | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 8 | 8 | 19146 | 4446 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 64k | 32 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 478 | 16011 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w32 | 64k | 32 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 32 | 32 | 16667 | 1184 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
## Cross-Machine
| Role | Status | Scope | Protocol | Workers | Max connections | Requests | Bytes | RPS | Resp MB/s | P50 us | P95 us | P99 us | Min us | Mean us | Max us | Stddev us | P99.9 us | Tail | Samples | Reason |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| client | not_configured | remote | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | - | COURIERUST_REMOTE_URL_not_set |
## Fuzz
| Target | Status | Runs | Duration s | Corpus | Reason |
| --- | --- | --- | --- | --- | --- |
| h2_frame | ok | smoke | 69 | fuzz/corpus/h2_frame | command_exit_0 |
| hpack_block | ok | smoke | 22 | fuzz/corpus/hpack_block | command_exit_0 |
| h1_request | ok | smoke | 21 | fuzz/corpus/h1_request | command_exit_0 |
| h2_connection | ok | smoke | 24 | fuzz/corpus/h2_connection | command_exit_0 |
## Interop Validation
| Case | Result |
| --- | --- |
| courierust_client_h1_to_hyper_h1 | ok |
| courierust_client_h2c_to_hyper_h2 | ok |
| hyper_client_h1_to_courierust_h1 | ok |
| hyper_client_h2c_to_courierust_h2 | ok |
| reqwest_h1_to_courierust_h1 | ok |
| reqwest_h2c_to_courierust_h2 | ok |
| courierust_h2c_large_body_to_hyper_h2 | ok |
| courierust_h1_slow_reader_to_hyper_h1 | ok |
| tls_rejects_untrusted_certificate | ok |
| tls_rejects_hostname_mismatch | ok |
| tls_alpn_downgrade_to_h1 | ok |
| tls_h2_alpn_rejected | ok |
| h1_connection_close_honored | ok |
| courierust_h2_client_survives_peer_goaway | ok |
| h3_self_roundtrip | ok |
| h3_self_connection_reuse | ok |
| h3_self_large_body_flow_control | ok |
| h3_self_multiplex_concurrent | ok |
| suite | all_cases_passed |
## TLS Interop Matrix
| _No TLS interop evidence captured_ | | | | | |
## Captured Benchmark Output
### Throughput
~~~text
courierust throughput suite (loopback)
META|suite=throughput|requests=4000|server_threads=4|max_samples=2048
RESULT|suite=throughput|case=h1_sequential|protocol=h1|mode=sequential|payload=empty|bytes=0|workers=1|server_threads=4|requests=4000|elapsed_ms=273.947|rps=14601.4|response_mbps=0.000|p50_us=69.52|p75_us=71.73|p90_us=75.80|p95_us=78.53|p99_us=97.32|min_us=41.73|mean_us=69.39|max_us=145.80|stddev_us=7.87|p999_us=125.48|tail_ratio=1.40|cv=0.11|samples=2000
RESULT|suite=throughput|case=h1_sequential|protocol=h1|mode=sequential|payload=1k|bytes=1024|workers=1|server_threads=4|requests=4000|elapsed_ms=278.886|rps=14342.8|response_mbps=14.687|p50_us=70.41|p75_us=71.50|p90_us=73.64|p95_us=76.21|p99_us=80.92|min_us=48.63|mean_us=69.92|max_us=99.91|stddev_us=4.66|p999_us=93.18|tail_ratio=1.15|cv=0.07|samples=2000
RESULT|suite=throughput|case=h1_sequential|protocol=h1|mode=sequential|payload=64k|bytes=65536|workers=1|server_threads=4|requests=4000|elapsed_ms=406.483|rps=9840.5|response_mbps=644.907|p50_us=97.44|p75_us=110.34|p90_us=114.53|p95_us=117.90|p99_us=126.44|min_us=79.87|mean_us=101.00|max_us=154.56|stddev_us=9.82|p999_us=137.86|tail_ratio=1.30|cv=0.10|samples=2000
RESULT|suite=throughput|case=h1_parallel_w1|protocol=h1|mode=parallel|payload=1k|bytes=1024|workers=1|server_threads=4|requests=4000|elapsed_ms=282.123|rps=14178.2|response_mbps=14.519|p50_us=71.82|p75_us=73.74|p90_us=77.32|p95_us=81.54|p99_us=93.95|min_us=47.05|mean_us=70.84|max_us=124.58|stddev_us=7.33|p999_us=112.78|tail_ratio=1.31|cv=0.10|samples=2000
RESULT|suite=throughput|case=h1_parallel_w4|protocol=h1|mode=parallel|payload=1k|bytes=1024|workers=4|server_threads=4|requests=4000|elapsed_ms=116.455|rps=34347.9|response_mbps=35.172|p50_us=98.25|p75_us=127.68|p90_us=165.51|p95_us=194.70|p99_us=273.46|min_us=23.09|mean_us=106.84|max_us=699.03|stddev_us=50.16|p999_us=439.11|tail_ratio=2.78|cv=0.47|samples=2000
RESULT|suite=throughput|case=h1_parallel_w8|protocol=h1|mode=parallel|payload=1k|bytes=1024|workers=8|server_threads=8|requests=4000|elapsed_ms=82.660|rps=48390.9|response_mbps=49.552|p50_us=131.20|p75_us=184.06|p90_us=255.58|p95_us=320.73|p99_us=476.92|min_us=24.07|mean_us=150.44|max_us=926.29|stddev_us=89.36|p999_us=682.81|tail_ratio=3.63|cv=0.59|samples=2000
RESULT|suite=throughput|case=h2_multiplex_w1|protocol=h2c|mode=multiplex|payload=1k|bytes=1024|workers=1|server_threads=4|requests=4000|elapsed_ms=361.058|rps=11078.6|response_mbps=11.344|p50_us=90.60|p75_us=92.60|p90_us=102.24|p95_us=104.01|p99_us=110.17|min_us=64.11|mean_us=90.70|max_us=133.82|stddev_us=7.53|p999_us=126.52|tail_ratio=1.22|cv=0.08|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4254|h2_write_syscalls=4003|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4003|h2_write_syscalls=4253|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w8|protocol=h2c|mode=multiplex|payload=1k|bytes=1024|workers=8|server_threads=4|requests=4000|elapsed_ms=94.417|rps=42365.1|response_mbps=43.382|p50_us=171.08|p75_us=216.20|p90_us=259.69|p95_us=278.06|p99_us=308.15|min_us=74.68|mean_us=185.59|max_us=334.35|stddev_us=47.70|p999_us=329.42|tail_ratio=1.80|cv=0.26|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=942|h2_write_syscalls=691|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=691|h2_write_syscalls=941|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w32|protocol=h2c|mode=multiplex|payload=1k|bytes=1024|workers=32|server_threads=4|requests=4000|elapsed_ms=54.771|rps=73031.9|response_mbps=74.785|p50_us=423.25|p75_us=474.29|p90_us=508.14|p95_us=533.90|p99_us=685.59|min_us=78.81|mean_us=429.66|max_us=1017.98|stddev_us=75.97|p999_us=940.87|tail_ratio=1.62|cv=0.18|samples=2016
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=407|h2_write_syscalls=394|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=380|h2_write_syscalls=426|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w1|protocol=h2c|mode=multiplex|payload=64k|bytes=65536|workers=1|server_threads=4|requests=4000|elapsed_ms=601.884|rps=6645.8|response_mbps=435.539|p50_us=156.04|p75_us=158.25|p90_us=159.97|p95_us=162.11|p99_us=171.26|min_us=114.77|mean_us=150.55|max_us=240.34|stddev_us=10.50|p999_us=184.73|tail_ratio=1.10|cv=0.07|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=10260|h2_write_syscalls=16008|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=22276|h2_write_syscalls=10260|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w8|protocol=h2c|mode=multiplex|payload=64k|bytes=65536|workers=8|server_threads=4|requests=4000|elapsed_ms=240.758|rps=16614.2|response_mbps=1088.828|p50_us=472.68|p75_us=504.38|p90_us=552.84|p95_us=658.05|p99_us=895.84|min_us=159.29|mean_us=480.34|max_us=1020.98|stddev_us=96.83|p999_us=978.72|tail_ratio=1.90|cv=0.20|samples=2000
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=1130|h2_write_syscalls=16010|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=19146|h2_write_syscalls=4446|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=h2_multiplex_w32|protocol=h2c|mode=multiplex|payload=64k|bytes=65536|workers=32|server_threads=4|requests=4000|elapsed_ms=264.276|rps=15135.7|response_mbps=991.933|p50_us=2054.18|p75_us=2319.80|p90_us=2744.82|p95_us=3015.69|p99_us=3332.88|min_us=220.09|mean_us=2075.37|max_us=4311.46|stddev_us=504.55|p999_us=4189.07|tail_ratio=1.62|cv=0.24|samples=2016
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=478|h2_write_syscalls=16011|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=16667|h2_write_syscalls=1184|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
RESULT|suite=throughput|case=https_h2_sequential|protocol=https+h2|mode=sequential|payload=empty|bytes=0|workers=1|server_threads=4|requests=2000|elapsed_ms=195.494|rps=10230.5|response_mbps=0.000|p50_us=100.77|p75_us=102.32|p90_us=103.63|p95_us=104.68|p99_us=112.22|min_us=64.63|mean_us=97.66|max_us=138.95|stddev_us=9.11|p999_us=125.11|tail_ratio=1.11|cv=0.09|samples=2000
TLSVERIFY|protocol=https+h2|cert_verified=true|hostname_verified=true|negotiated_alpn=h2|session_resumption=n/a|cipher_suite=0x1303
RESULT|suite=throughput|case=https_h2_sequential|protocol=https+h2|mode=sequential|payload=1k|bytes=1024|workers=1|server_threads=4|requests=2000|elapsed_ms=206.098|rps=9704.1|response_mbps=9.937|p50_us=102.73|p75_us=104.25|p90_us=109.32|p95_us=115.75|p99_us=120.42|min_us=74.93|mean_us=102.99|max_us=138.75|stddev_us=6.54|p999_us=132.80|tail_ratio=1.17|cv=0.06|samples=2000
TLSVERIFY|protocol=https+h2|cert_verified=true|hostname_verified=true|negotiated_alpn=h2|session_resumption=n/a|cipher_suite=0x1303
RESULT|suite=throughput|case=https_h2_sequential|protocol=https+h2|mode=sequential|payload=64k|bytes=65536|workers=1|server_threads=4|requests=2000|elapsed_ms=872.477|rps=2292.3|response_mbps=150.230|p50_us=417.15|p75_us=433.59|p90_us=522.39|p95_us=528.06|p99_us=542.88|min_us=373.76|mean_us=436.17|max_us=570.62|stddev_us=42.91|p999_us=559.23|tail_ratio=1.30|cv=0.10|samples=2000
TLSVERIFY|protocol=https+h2|cert_verified=true|hostname_verified=true|negotiated_alpn=h2|session_resumption=n/a|cipher_suite=0x1303
total: complete
~~~
### Cross-Library Comparison
~~~text
courierust comparison suite (loopback, shared-peer matrix)
META|suite=compare|requests_per_repetition=2000|parallel_requests_per_repetition=2000|parallel_workers=8|repetitions=2|max_samples=2048
RESULT|suite=compare|case=raw_tcp_floor|layer=transport|protocol=h1|client=std_tcp|server=std_tcp|payload=4b|bytes=4|workers=1|server_threads=1|pool_policy=raw_tcp|pool_value=1|repetitions=1|status=valid|reason=-|requests=2000|elapsed_ms=76.221|rps=26239.4|response_mbps=0.105|p50_us=39.93|p75_us=40.59|p90_us=41.25|p95_us=41.78|p99_us=48.45|min_us=21.56|mean_us=38.05|max_us=68.38|stddev_us=4.49|p999_us=56.58|tail_ratio=1.21|cv=0.12|samples=2000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h1|client=courierust|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=219.862|rps=18193.2|response_mbps=18.630|p50_us=50.30|p75_us=63.09|p90_us=64.18|p95_us=65.16|p99_us=74.61|min_us=25.17|mean_us=54.90|max_us=96.42|stddev_us=8.06|p999_us=86.89|tail_ratio=1.48|cv=0.15|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h1|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=455.738|rps=8777.0|response_mbps=8.988|p50_us=111.65|p75_us=129.10|p90_us=131.45|p95_us=132.89|p99_us=140.24|min_us=81.42|mean_us=113.84|max_us=159.00|stddev_us=12.92|p999_us=153.85|tail_ratio=1.26|cv=0.11|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h1|client=reqwest|server=courierust|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=560.800|rps=7132.7|response_mbps=7.304|p50_us=140.65|p75_us=144.11|p90_us=150.49|p95_us=153.14|p99_us=162.51|min_us=103.68|mean_us=140.09|max_us=277.74|stddev_us=8.58|p999_us=187.34|tail_ratio=1.16|cv=0.06|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h1|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=452.419|rps=8841.4|response_mbps=9.054|p50_us=113.15|p75_us=122.87|p90_us=130.33|p95_us=131.50|p99_us=138.39|min_us=80.88|mean_us=113.01|max_us=164.54|stddev_us=12.75|p999_us=156.14|tail_ratio=1.22|cv=0.11|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h1|client=courierust|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=57.507|rps=69556.2|response_mbps=71.226|p50_us=96.60|p75_us=138.86|p90_us=169.55|p95_us=193.34|p99_us=295.74|min_us=29.13|mean_us=108.77|max_us=1435.04|stddev_us=72.19|p999_us=988.45|tail_ratio=3.06|cv=0.66|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h1|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=154.357|rps=25914.0|response_mbps=26.536|p50_us=304.42|p75_us=324.86|p90_us=348.80|p95_us=367.54|p99_us=499.10|min_us=95.06|mean_us=306.62|max_us=1266.01|stddev_us=61.35|p999_us=934.72|tail_ratio=1.64|cv=0.20|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h1|client=courierust|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=314.326|rps=12725.6|response_mbps=833.987|p50_us=73.90|p75_us=89.00|p90_us=90.20|p95_us=91.06|p99_us=101.20|min_us=58.09|mean_us=78.51|max_us=119.46|stddev_us=8.88|p999_us=112.74|tail_ratio=1.37|cv=0.11|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h1|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=492.058|rps=8129.1|response_mbps=532.751|p50_us=122.07|p75_us=124.11|p90_us=127.03|p95_us=135.92|p99_us=144.91|min_us=95.15|mean_us=122.96|max_us=225.81|stddev_us=6.60|p999_us=177.50|tail_ratio=1.19|cv=0.05|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h1|client=reqwest|server=courierust|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=654.318|rps=6113.2|response_mbps=400.637|p50_us=162.41|p75_us=167.94|p90_us=175.10|p95_us=179.92|p99_us=190.20|min_us=128.41|mean_us=163.46|max_us=443.02|stddev_us=10.29|p999_us=220.75|tail_ratio=1.17|cv=0.06|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h1|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=523.779|rps=7636.8|response_mbps=500.486|p50_us=128.71|p75_us=137.96|p90_us=142.48|p95_us=145.65|p99_us=159.77|min_us=101.31|mean_us=130.87|max_us=208.73|stddev_us=10.27|p999_us=176.53|tail_ratio=1.24|cv=0.08|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=441.521|rps=9059.6|response_mbps=9.277|p50_us=112.06|p75_us=113.83|p90_us=117.28|p95_us=125.47|p99_us=132.02|min_us=85.13|mean_us=110.33|max_us=152.28|stddev_us=7.90|p999_us=143.08|tail_ratio=1.18|cv=0.07|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h2c|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=552.015|rps=7246.2|response_mbps=7.420|p50_us=137.37|p75_us=142.25|p90_us=144.66|p95_us=148.37|p99_us=160.50|min_us=111.82|mean_us=137.92|max_us=172.83|stddev_us=6.70|p999_us=170.51|tail_ratio=1.17|cv=0.05|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h2c|client=reqwest|server=courierust|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=488.846|rps=8182.5|response_mbps=8.379|p50_us=121.36|p75_us=125.44|p90_us=128.50|p95_us=131.28|p99_us=144.65|min_us=102.45|mean_us=122.13|max_us=219.10|stddev_us=6.79|p999_us=174.29|tail_ratio=1.19|cv=0.06|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h2c|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=552.917|rps=7234.4|response_mbps=7.408|p50_us=137.49|p75_us=140.92|p90_us=144.10|p95_us=146.64|p99_us=161.46|min_us=118.03|mean_us=138.15|max_us=192.35|stddev_us=6.12|p999_us=182.42|tail_ratio=1.17|cv=0.04|samples=4000
RESULT|suite=compare|case=courierust_h2_conn1xw32|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=32|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=92.007|rps=43474.8|response_mbps=44.518|p50_us=671.81|p75_us=815.90|p90_us=975.75|p95_us=1078.61|p99_us=1482.17|min_us=81.66|mean_us=701.08|max_us=2742.86|stddev_us=236.57|p999_us=2410.06|tail_ratio=2.21|cv=0.34|samples=4000
RESULT|suite=compare|case=courierust_h2_conn4xw8|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=32|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=4|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=79.988|rps=50007.4|response_mbps=51.208|p50_us=548.33|p75_us=736.10|p90_us=937.22|p95_us=1094.45|p99_us=1547.35|min_us=93.23|mean_us=592.23|max_us=3633.60|stddev_us=292.40|p999_us=2261.95|tail_ratio=2.82|cv=0.49|samples=4000
RESULT|suite=compare|case=courierust_h2_conn8xw4|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=32|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=85.256|rps=46917.6|response_mbps=48.044|p50_us=586.63|p75_us=800.50|p90_us=1017.62|p95_us=1187.16|p99_us=1588.99|min_us=97.31|mean_us=630.62|max_us=2803.32|stddev_us=309.36|p999_us=2311.39|tail_ratio=2.71|cv=0.49|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=116.725|rps=34268.5|response_mbps=35.091|p50_us=214.05|p75_us=270.58|p90_us=339.95|p95_us=397.76|p99_us=563.29|min_us=66.26|mean_us=228.76|max_us=1039.85|stddev_us=94.46|p999_us=805.76|tail_ratio=2.63|cv=0.41|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h2c|client=reqwest|server=hyper|payload=1k|bytes=1024|workers=8|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=8|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=168.457|rps=23744.9|response_mbps=24.315|p50_us=325.26|p75_us=388.06|p90_us=452.21|p95_us=494.66|p99_us=587.01|min_us=127.01|mean_us=333.27|max_us=919.48|stddev_us=91.33|p999_us=706.06|tail_ratio=1.80|cv=0.27|samples=4000
RESULT|suite=compare|case=courierust_client_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=739.231|rps=5411.0|response_mbps=354.617|p50_us=176.40|p75_us=199.71|p90_us=202.72|p95_us=204.32|p99_us=218.99|min_us=161.57|mean_us=184.75|max_us=265.59|stddev_us=14.12|p999_us=245.72|tail_ratio=1.24|cv=0.08|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=client|protocol=h2c|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=710.877|rps=5626.9|response_mbps=368.761|p50_us=176.95|p75_us=184.96|p90_us=189.16|p95_us=196.10|p99_us=207.99|min_us=141.18|mean_us=177.63|max_us=231.11|stddev_us=10.75|p999_us=221.06|tail_ratio=1.18|cv=0.06|samples=4000
RESULT|suite=compare|case=reqwest_client_to_courierust|layer=server|protocol=h2c|client=reqwest|server=courierust|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=660.033|rps=6060.3|response_mbps=397.168|p50_us=163.60|p75_us=171.76|p90_us=178.77|p95_us=187.04|p99_us=200.62|min_us=133.98|mean_us=164.90|max_us=247.32|stddev_us=11.94|p999_us=217.44|tail_ratio=1.23|cv=0.07|samples=4000
RESULT|suite=compare|case=reqwest_client_to_hyper|layer=server|protocol=h2c|client=reqwest|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=732.943|rps=5457.5|response_mbps=357.660|p50_us=183.16|p75_us=188.78|p90_us=197.73|p95_us=202.07|p99_us=215.98|min_us=148.01|mean_us=183.15|max_us=279.31|stddev_us=11.19|p999_us=236.80|tail_ratio=1.18|cv=0.06|samples=4000
RESULT|suite=compare|case=courierust_h2c_large_body_to_hyper|layer=client|protocol=h2c|client=courierust|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=64|elapsed_ms=120.582|rps=530.8|response_mbps=34.784|p50_us=1945.22|p75_us=1995.85|p90_us=2062.17|p95_us=2098.09|p99_us=2142.07|min_us=1688.45|mean_us=1884.02|max_us=2162.59|stddev_us=141.22|p999_us=2162.59|tail_ratio=1.10|cv=0.07|samples=64
RESULT|suite=compare|case=reqwest_async_h2c_large_body_to_hyper|layer=client|protocol=h2c|client=reqwest-async|server=hyper|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=reqwest_pool_max_idle_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=64|elapsed_ms=63.684|rps=1005.0|response_mbps=65.861|p50_us=948.83|p75_us=979.63|p90_us=1291.80|p95_us=1326.74|p99_us=1361.83|min_us=861.40|mean_us=995.00|max_us=1371.73|stddev_us=141.81|p999_us=1371.73|tail_ratio=1.44|cv=0.14|samples=64
RESULT|suite=compare|case=courierust_h3_client_to_courierust|layer=client|protocol=h3|client=courierust-h3|server=courierust-h3|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=829.936|rps=4819.6|response_mbps=4.935|p50_us=208.24|p75_us=216.66|p90_us=222.77|p95_us=230.27|p99_us=256.65|min_us=142.90|mean_us=207.38|max_us=379.79|stddev_us=15.90|p999_us=283.43|tail_ratio=1.23|cv=0.08|samples=4000
RESULT|suite=compare|case=quinn_h3_client_to_courierust|layer=client|protocol=h3|client=quinn+h3|server=courierust-h3|payload=1k|bytes=1024|workers=1|server_threads=4|pool_policy=quinn_single_connection|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=990.117|rps=4039.9|response_mbps=4.137|p50_us=246.84|p75_us=255.00|p90_us=262.21|p95_us=267.51|p99_us=286.19|min_us=199.89|mean_us=247.41|max_us=428.42|stddev_us=13.54|p999_us=338.95|tail_ratio=1.16|cv=0.05|samples=4000
RESULT|suite=compare|case=courierust_h3_client_to_courierust|layer=client|protocol=h3|client=courierust-h3|server=courierust-h3|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=courierust_max_connections_per_host|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=3407.893|rps=1173.7|response_mbps=76.923|p50_us=847.03|p75_us=863.81|p90_us=879.18|p95_us=890.76|p99_us=1172.46|min_us=777.57|mean_us=851.87|max_us=1555.54|stddev_us=47.14|p999_us=1218.21|tail_ratio=1.38|cv=0.06|samples=4000
RESULT|suite=compare|case=quinn_h3_client_to_courierust|layer=client|protocol=h3|client=quinn+h3|server=courierust-h3|payload=64k|bytes=65536|workers=1|server_threads=4|pool_policy=quinn_single_connection|pool_value=1|repetitions=2|status=valid|reason=-|requests=4000|elapsed_ms=4302.305|rps=929.7|response_mbps=60.931|p50_us=1123.67|p75_us=1148.80|p90_us=1167.35|p95_us=1177.41|p99_us=1205.11|min_us=829.35|mean_us=1075.44|max_us=2293.91|stddev_us=110.70|p999_us=1235.33|tail_ratio=1.07|cv=0.10|samples=4000
total: complete
~~~
### Concurrency
~~~text
CONCURRENCY|case=idle_partial_herd|model=event|platform=linux|status=probe_ok|event_enabled=true|connections=200|worker_threads=2|probe_us=467.36
CONCURRENCY|case=idle_partial_herd|model=pool|platform=linux|status=probe_blocked|event_enabled=false|connections=200|worker_threads=2|probe_us=na|error=read: Resource temporarily unavailable (os error 11)
CONCURRENCY|case=slow_sender_herd|model=event|platform=linux|status=ok|event_enabled=true|connections=16|worker_threads=2|completed=16|probe_status=probe_ok|probe_us=160.43|byte_delay_us=10000|wall_ms=395.65
CONCURRENCY|suite=complete
~~~
### HTTP/3 (QUIC)
~~~text
RESULT|suite=h3|case=h3_connect|protocol=h3|mode=connect|payload=empty|bytes=0|workers=1|requests=1|connect_ms=4.353
RESULT|suite=h3|case=h3_sequential|protocol=h3|mode=reuse|payload=empty|bytes=0|workers=1|requests=1000|elapsed_ms=180.660|rps=5535.2|p50_us=178.9|p75_us=184.5|p90_us=191.4|p99_us=213.0|min_us=130.73|mean_us=180.57|max_us=252.61|stddev_us=10.04|p999_us=251.18|tail_ratio=1.19|cv=0.06|samples=1000
RESULT|suite=h3|case=h3_parallel|protocol=h3|mode=reuse|payload=empty|bytes=0|workers=8|requests=1000|elapsed_ms=51.814|rps=19299.9|p50_us=407.3|p75_us=431.1|p90_us=458.2|p99_us=527.0|min_us=267.36|mean_us=411.44|max_us=619.22|stddev_us=37.52|p999_us=601.87|tail_ratio=1.29|cv=0.09|samples=1000
~~~
### Reactor / Connection / Stream Evidence
~~~text
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4254|h2_write_syscalls=4003|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=1k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=4003|h2_write_syscalls=4253|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=1|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=942|h2_write_syscalls=691|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=1k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=691|h2_write_syscalls=941|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=407|h2_write_syscalls=394|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=1k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=380|h2_write_syscalls=426|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=10260|h2_write_syscalls=16008|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w1|payload=64k|workers=1|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=1|h2_streams_per_connection_peak=1|h2_read_syscalls=22276|h2_write_syscalls=10260|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=1130|h2_write_syscalls=16010|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w8|payload=64k|workers=8|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=19146|h2_write_syscalls=4446|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=1|connections_active=0|event_poll_syscalls=1|event_wakeups=1|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=478|h2_write_syscalls=16011|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
STATS|suite=throughput|protocol=h2c|case=h2_multiplex_w32|payload=64k|workers=32|connections_accepted=0|connections_active=0|event_poll_syscalls=0|event_wakeups=0|event_queue_depth_peak=0|h1_connections=0|h1_read_syscalls=0|h1_write_syscalls=0|h2_connections=1|h2_connections_active=1|h2_streams_total=4001|h2_streams_timed_out=0|h2_streams_active=0|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=16667|h2_write_syscalls=1184|h3_connections=0|h3_connections_active=0|h3_streams_total=0|h3_streams_active=0|h3_streams_active_peak=0|h3_streams_per_connection_peak=0|h3_queue_depth_peak=0|h3_udp_recv_syscalls=0|h3_udp_send_syscalls=0|h3_ack_deferred=0|h3_credit_stalls=0
~~~
### Cross-Machine
~~~text
NETWORK|role=client|status=not_configured|target_scope=remote|reason=COURIERUST_REMOTE_URL_not_set
~~~
### Fuzz
~~~text
FUZZ|target=h2_frame|status=ok|runs=smoke|duration_s=69|corpus=fuzz/corpus/h2_frame|reason=command_exit_0
FUZZ|target=hpack_block|status=ok|runs=smoke|duration_s=22|corpus=fuzz/corpus/hpack_block|reason=command_exit_0
FUZZ|target=h1_request|status=ok|runs=smoke|duration_s=21|corpus=fuzz/corpus/h1_request|reason=command_exit_0
FUZZ|target=h2_connection|status=ok|runs=smoke|duration_s=24|corpus=fuzz/corpus/h2_connection|reason=command_exit_0
~~~
### Interop Validation
~~~text
courierust vs mainstream HTTP stack — interop validation
INTEROP|case=courierust_client_h1_to_hyper_h1|ok
INTEROP|case=courierust_client_h2c_to_hyper_h2|ok
INTEROP|case=hyper_client_h1_to_courierust_h1|ok
INTEROP|case=hyper_client_h2c_to_courierust_h2|ok
INTEROP|case=reqwest_h1_to_courierust_h1|ok
INTEROP|case=reqwest_h2c_to_courierust_h2|ok
INTEROP|case=courierust_h2c_large_body_to_hyper_h2|ok
INTEROP|case=courierust_h1_slow_reader_to_hyper_h1|ok
INTEROP|case=tls_rejects_untrusted_certificate|ok
INTEROP|case=tls_rejects_hostname_mismatch|ok
INTEROP|case=tls_alpn_downgrade_to_h1|ok
INTEROP|case=tls_h2_alpn_rejected|ok
INTEROP|case=h1_connection_close_honored|ok
INTEROP|case=courierust_h2_client_survives_peer_goaway|ok
INTEROP|case=h3_self_roundtrip|ok
INTEROP|case=h3_self_connection_reuse|ok
INTEROP|case=h3_self_large_body_flow_control|ok
INTEROP|case=h3_self_multiplex_concurrent|ok
INTEROP|all_cases_passed
~~~
### TLS Interop
~~~text
No output was captured for this benchmark.
~~~