courierust 1.0.9

A zero-dependency, self-contained HTTP/1.1 + HTTP/2 + HTTP/3 (QUIC) + WebSocket + gRPC stack with a from-scratch TLS 1.2/1.3, a work-stealing scheduler, RFC 9218 priority and JA3/JA4 fingerprints.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
# GitHub Action Benchmark

Generated by the benchmark workflow.

## Run

- Commit: 46852af6268b4a50dc583b9c0ef40c0c2d0496fe
- 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
- Complexity exit code: 0
- Cross-machine exit code: not-configured
- Fuzz exit code: 0
- Workflow run: [37227732964](https://github.com/blueokanna/Courierust/actions/runs/37227732964)

## 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).
- The complexity tables are scaling evidence, not a speed claim: the class is fitted from the largest measured sizes, and the paired `ratio` is only meaningful within one run.

## 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 | 12330.0 | 0.000 | 81.55 | 84.68 | 88.36 | 90.37 | 95.14 | 51.26 | 81.72 | 141.53 | 6.02 | 108.08 | 1.17 | 2000 |
| h1_sequential | h1 | sequential | 1k | 1 | 4 | 4000 | 11668.4 | 11.948 | 86.26 | 87.96 | 89.61 | 90.72 | 104.28 | 55.13 | 85.54 | 119.39 | 5.37 | 111.38 | 1.21 | 2000 |
| h1_sequential | h1 | sequential | 64k | 1 | 4 | 4000 | 8766.9 | 574.546 | 113.56 | 119.02 | 126.17 | 127.61 | 137.56 | 88.89 | 113.69 | 176.42 | 9.23 | 162.72 | 1.21 | 2000 |
| h1_parallel_w1 | h1 | parallel | 1k | 1 | 4 | 4000 | 11637.8 | 11.917 | 85.79 | 87.76 | 92.08 | 97.17 | 107.58 | 28.27 | 85.68 | 122.91 | 7.16 | 117.90 | 1.25 | 2000 |
| h1_parallel_w4 | h1 | parallel | 1k | 4 | 4 | 4000 | 31090.5 | 31.837 | 107.91 | 142.02 | 177.23 | 203.81 | 268.93 | 30.11 | 117.89 | 488.25 | 47.81 | 438.54 | 2.49 | 2000 |
| h1_parallel_w8 | h1 | parallel | 1k | 8 | 8 | 4000 | 41445.2 | 42.440 | 146.29 | 211.42 | 298.58 | 365.52 | 498.52 | 26.35 | 169.65 | 881.35 | 101.37 | 808.71 | 3.41 | 2000 |
| h2_multiplex_w1 | h2c | multiplex | 1k | 1 | 4 | 4000 | 9844.3 | 10.081 | 103.03 | 105.41 | 111.79 | 118.37 | 122.39 | 70.05 | 102.13 | 171.08 | 8.35 | 134.12 | 1.19 | 2000 |
| h2_multiplex_w8 | h2c | multiplex | 1k | 8 | 4 | 4000 | 37523.7 | 38.424 | 194.94 | 241.59 | 285.45 | 314.35 | 347.48 | 95.27 | 209.27 | 380.80 | 51.32 | 369.24 | 1.78 | 2000 |
| h2_multiplex_w32 | h2c | multiplex | 1k | 32 | 4 | 4000 | 60174.1 | 61.618 | 502.74 | 522.85 | 567.10 | 727.42 | 966.00 | 199.93 | 523.75 | 1137.44 | 88.02 | 1100.84 | 1.92 | 2016 |
| h2_multiplex_w1 | h2c | multiplex | 64k | 1 | 4 | 4000 | 6510.4 | 426.665 | 151.31 | 159.50 | 162.94 | 165.47 | 181.53 | 121.72 | 153.62 | 392.37 | 10.82 | 234.36 | 1.20 | 2000 |
| h2_multiplex_w8 | h2c | multiplex | 64k | 8 | 4 | 4000 | 12012.1 | 787.222 | 660.26 | 726.15 | 828.85 | 925.43 | 1114.05 | 182.01 | 667.07 | 1363.61 | 144.82 | 1271.47 | 1.69 | 2000 |
| h2_multiplex_w32 | h2c | multiplex | 64k | 32 | 4 | 4000 | 19285.6 | 1263.899 | 1598.30 | 1742.03 | 1820.32 | 1977.32 | 2904.72 | 350.56 | 1657.99 | 4610.05 | 304.34 | 4164.24 | 1.82 | 2016 |
| https_h2_sequential | https+h2 | sequential | empty | 1 | 4 | 2000 | 9446.9 | 0.000 | 104.55 | 117.49 | 118.98 | 120.03 | 128.02 | 76.04 | 105.76 | 149.84 | 11.92 | 136.66 | 1.22 | 2000 |
| https_h2_sequential | https+h2 | sequential | 1k | 1 | 4 | 2000 | 9280.2 | 9.503 | 106.50 | 110.94 | 118.34 | 122.02 | 132.47 | 84.66 | 107.68 | 252.86 | 8.70 | 150.10 | 1.24 | 2000 |
| https_h2_sequential | https+h2 | sequential | 64k | 1 | 4 | 2000 | 1907.3 | 124.998 | 523.26 | 533.77 | 541.27 | 546.95 | 557.03 | 491.11 | 524.21 | 640.36 | 13.38 | 607.17 | 1.06 | 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 | 23370.9 | 0.093 | 44.13 | 44.48 | 44.83 | 45.16 | 50.39 | 28.93 | 42.72 | 71.42 | 4.38 | 63.34 | 1.14 | 2000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 15779.7 | 16.158 | 60.47 | 75.17 | 77.00 | 77.87 | 82.18 | 27.36 | 63.28 | 122.66 | 9.91 | 91.20 | 1.36 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 7784.4 | 7.971 | 118.44 | 144.89 | 147.28 | 150.67 | 248.82 | 86.33 | 128.37 | 584.32 | 27.18 | 334.14 | 2.10 | 4000 |
| reqwest_client_to_courierust | server | h1 | reqwest | courierust | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 6313.6 | 6.465 | 159.67 | 164.04 | 167.65 | 171.29 | 179.25 | 120.42 | 158.31 | 226.94 | 9.23 | 208.25 | 1.12 | 4000 |
| reqwest_client_to_hyper | server | h1 | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 8825.3 | 9.037 | 112.79 | 114.59 | 125.90 | 129.24 | 146.21 | 84.92 | 113.27 | 351.23 | 9.84 | 169.39 | 1.30 | 4000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 1k | 8 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 61894.7 | 63.380 | 111.54 | 152.15 | 187.44 | 212.96 | 312.04 | 37.16 | 122.10 | 2759.32 | 94.51 | 899.77 | 2.80 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 1k | 8 | 4 | reqwest_pool_max_idle_per_host | 8 | 2 | valid | - | 4000 | 24203.3 | 24.784 | 328.05 | 350.31 | 373.48 | 395.96 | 522.39 | 101.03 | 326.09 | 1733.34 | 64.96 | 847.00 | 1.59 | 4000 |
| courierust_client_to_hyper | client | h1 | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 11196.8 | 733.795 | 83.18 | 100.98 | 102.30 | 103.33 | 115.17 | 62.26 | 89.24 | 150.76 | 11.74 | 127.28 | 1.38 | 4000 |
| reqwest_client_to_hyper | client | h1 | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 6636.5 | 434.928 | 153.69 | 165.45 | 167.39 | 169.14 | 184.77 | 111.05 | 150.62 | 235.86 | 17.19 | 196.07 | 1.20 | 4000 |
| reqwest_client_to_courierust | server | h1 | reqwest | courierust | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 5570.9 | 365.096 | 180.13 | 186.80 | 189.70 | 193.92 | 205.21 | 137.98 | 179.44 | 304.56 | 10.83 | 230.85 | 1.14 | 4000 |
| reqwest_client_to_hyper | server | h1 | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 6681.8 | 437.898 | 151.29 | 165.41 | 167.99 | 169.57 | 180.24 | 105.71 | 149.61 | 289.46 | 16.46 | 221.17 | 1.19 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 8383.1 | 8.584 | 118.03 | 125.59 | 127.44 | 131.88 | 143.63 | 94.08 | 119.23 | 157.94 | 8.86 | 149.08 | 1.22 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 6697.6 | 6.858 | 148.92 | 151.44 | 155.32 | 157.57 | 166.35 | 122.12 | 149.21 | 208.33 | 5.92 | 193.95 | 1.12 | 4000 |
| reqwest_client_to_courierust | server | h2c | reqwest | courierust | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 7422.5 | 7.601 | 134.07 | 136.52 | 140.26 | 142.42 | 152.86 | 107.38 | 134.62 | 527.95 | 9.47 | 195.58 | 1.14 | 4000 |
| reqwest_client_to_hyper | server | h2c | reqwest | hyper | 1k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 6612.5 | 6.771 | 150.20 | 153.45 | 157.27 | 159.47 | 172.48 | 117.60 | 151.12 | 620.23 | 15.00 | 373.87 | 1.15 | 4000 |
| courierust_h2_conn1xw32 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 39423.7 | 40.370 | 761.37 | 891.37 | 1041.77 | 1136.10 | 1402.39 | 126.42 | 776.36 | 2110.83 | 213.74 | 1779.15 | 1.84 | 4000 |
| courierust_h2_conn4xw8 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 4 | 2 | valid | - | 4000 | 46782.1 | 47.905 | 586.00 | 792.72 | 997.63 | 1146.34 | 1524.79 | 76.34 | 626.31 | 2492.04 | 293.32 | 2106.55 | 2.60 | 4000 |
| courierust_h2_conn8xw4 | client | h2c | courierust | hyper | 1k | 32 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 43130.5 | 44.166 | 627.51 | 847.07 | 1063.39 | 1234.34 | 1713.79 | 71.35 | 671.98 | 3414.48 | 329.18 | 2798.49 | 2.73 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 1k | 8 | 4 | courierust_max_connections_per_host | 8 | 2 | valid | - | 4000 | 31669.2 | 32.429 | 232.61 | 292.82 | 363.33 | 422.99 | 594.74 | 70.93 | 246.68 | 1298.15 | 105.92 | 990.55 | 2.56 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 1k | 8 | 4 | reqwest_pool_max_idle_per_host | 8 | 2 | valid | - | 4000 | 22659.9 | 23.204 | 336.43 | 405.34 | 470.14 | 523.81 | 636.37 | 95.12 | 347.12 | 1173.42 | 101.67 | 898.77 | 1.89 | 4000 |
| courierust_client_to_hyper | client | h2c | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 5800.3 | 380.131 | 168.27 | 172.10 | 194.86 | 202.77 | 209.28 | 125.42 | 172.31 | 322.49 | 13.18 | 240.60 | 1.24 | 4000 |
| reqwest_client_to_hyper | client | h2c | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 5257.2 | 344.534 | 189.58 | 193.57 | 201.39 | 208.24 | 221.72 | 156.77 | 190.11 | 257.86 | 9.67 | 237.04 | 1.17 | 4000 |
| reqwest_client_to_courierust | server | h2c | reqwest | courierust | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 5805.6 | 380.476 | 171.83 | 177.69 | 180.81 | 185.54 | 199.70 | 140.34 | 172.12 | 228.84 | 8.99 | 220.27 | 1.16 | 4000 |
| reqwest_client_to_hyper | server | h2c | reqwest | hyper | 64k | 1 | 4 | reqwest_pool_max_idle_per_host | 1 | 2 | valid | - | 4000 | 5092.0 | 333.708 | 195.07 | 203.29 | 210.38 | 217.03 | 237.01 | 142.36 | 196.26 | 310.53 | 12.80 | 278.01 | 1.21 | 4000 |
| courierust_h2c_large_body_to_hyper | client | h2c | courierust | hyper | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 64 | 678.4 | 44.460 | 1478.61 | 1522.43 | 1561.35 | 1572.54 | 1595.38 | 1365.81 | 1473.95 | 1681.62 | 66.05 | 1681.62 | 1.08 | 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 | 893.4 | 58.551 | 1015.09 | 1312.68 | 1357.61 | 1376.84 | 1395.23 | 872.70 | 1119.20 | 1411.06 | 182.38 | 1411.06 | 1.37 | 64 |
| courierust_h3_client_to_courierust | client | h3 | courierust-h3 | courierust-h3 | 1k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 4167.0 | 4.267 | 248.62 | 265.67 | 278.81 | 283.39 | 296.83 | 163.59 | 239.90 | 348.75 | 32.24 | 320.48 | 1.19 | 4000 |
| quinn_h3_client_to_courierust | client | h3 | quinn+h3 | courierust-h3 | 1k | 1 | 4 | quinn_single_connection | 1 | 2 | valid | - | 4000 | 3733.1 | 3.823 | 266.08 | 275.97 | 284.16 | 288.59 | 297.83 | 213.49 | 267.78 | 562.75 | 14.15 | 356.04 | 1.12 | 4000 |
| courierust_h3_client_to_courierust | client | h3 | courierust-h3 | courierust-h3 | 64k | 1 | 4 | courierust_max_connections_per_host | 1 | 2 | valid | - | 4000 | 1094.8 | 71.752 | 889.58 | 909.12 | 941.76 | 1203.32 | 1246.40 | 785.39 | 913.28 | 1346.94 | 93.65 | 1287.07 | 1.40 | 4000 |
| quinn_h3_client_to_courierust | client | h3 | quinn+h3 | courierust-h3 | 64k | 1 | 4 | quinn_single_connection | 1 | 2 | valid | - | 4000 | 885.0 | 57.998 | 1192.57 | 1217.46 | 1240.62 | 1255.37 | 1297.43 | 871.86 | 1129.86 | 1572.83 | 128.45 | 1433.75 | 1.09 | 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 | 1468.80 | - | - | - | - |
| idle_partial_herd | pool | linux | probe_blocked | false | 200 | 2 | na | - | - | - | - |
| slow_sender_herd | event | linux | ok | true | 16 | 2 | 233.78 | probe_ok | 10000 | 16 | 395.90 |

## 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 | - | 6.532 | - | - | - | - | - | - | - | - | - | - | - | - |
| h3_sequential | reuse | 1 | 1000 | 208.233 | - | 4802.3 | 207.5 | 222.0 | 233.2 | 246.1 | 143.59 | 208.11 | 365.22 | 18.04 | 262.48 | 1.19 | 1000 |
| h3_parallel | reuse | 8 | 1000 | 56.354 | - | 17745.0 | 440.2 | 466.7 | 495.1 | 590.2 | 225.82 | 444.24 | 1228.94 | 56.09 | 1030.83 | 1.34 | 1000 |

## Complexity (time and space)

- Each family is measured at several input sizes (three orders of magnitude), and every point is the minimum of three repeats — noise only ever makes a measurement slower, so the minimum is the right estimator and a noisy point would otherwise invent curvature that is not in the code.
- `class` is named by `median k`, the median of the adjacent-pair exponents, so the label describes the *typical* growth factor per 16× inside the measured range; `max k` is the worst pair, so one noisy pair cannot pass as a trend. `slope b` is the per-unit cost and `fixed a` the per-operation cost that does not scale with the input; R² is the fit quality (1.0 = exact).
- A range whose fixed term dwarfs its per-unit term is labelled `fixed-cost dominated` instead of quoting a sublinear-looking exponent that is really the constant; for those families read `slope b` (for example nanoseconds per extra header).
- Space is attributed per operation by a counting allocator compiled into the bench binary (allocation bytes and allocation calls), and per connection by a live-bytes/RSS delta between 1 and 65 idle keep-alive connections — the fixed process/runtime cost cancels out of a delta.
- `ratio` is Courierust divided by the reference at the same size: below 1 means Courierust is cheaper. Rows are comparable only within one run.

| family | implementation | operation | metric | fitted class | median k | max k | slope b | fixed a | R² | points |
|---|---|---|---|---|---:|---:|---:|---:|---:|---:|
| codec | courierust | encode_unmasked | time_ns | O(n) | 0.999 | 2.011 | 0.039264 | 16816.3233 | 0.2148 | 5 |
| codec | courierust | encode_unmasked | alloc_bytes | O(1) | 0.000 | 0.000 | 0.000000 | 0.0000 | 1.0000 | 5 |
| codec | tungstenite | encode_unmasked | time_ns | O(n) | 0.940 | 1.981 | 0.028084 | 17584.3561 | 0.1172 | 5 |
| codec | tungstenite | encode_unmasked | alloc_bytes | O(1) | 0.000 | 0.000 | 0.000000 | 0.0000 | 1.0000 | 5 |
| codec | courierust | encode_masked | time_ns | O(n) | 0.917 | 1.688 | 0.068078 | 16372.9621 | 0.4146 | 5 |
| codec | courierust | encode_masked | alloc_bytes | O(1) | 0.000 | 0.000 | 0.000000 | 0.0000 | 1.0000 | 5 |
| codec | tungstenite | encode_masked | time_ns | O(n) | 0.940 | 1.119 | 0.073730 | 271.4404 | 0.9995 | 5 |
| codec | tungstenite | encode_masked | alloc_bytes | O(n) | 1.000 | 1.000 | 1.000000 | 0.0000 | 1.0000 | 5 |
| http | courierust | get_roundtrip | time_ns | O(n^0.28) | 0.277 | 1.524 | 1.267833 | 5317.2081 | 0.9671 | 4 |
| http | courierust | get_roundtrip | alloc_bytes | O(n) | 0.976 | 0.998 | 1.999779 | 2441.9626 | 1.0000 | 4 |
| http | reqwest_hyper | get_roundtrip | time_ns | O(n^0.23) | 0.232 | 0.423 | 0.301905 | 140049.9410 | 0.9811 | 4 |
| http | reqwest_hyper | get_roundtrip | alloc_bytes | O(n) | 0.925 | 0.987 | 2.710828 | 34405.6715 | 0.9993 | 4 |
| headers | courierust | get_with_headers | time_ns | O(n^0.38) | 0.381 | 0.381 | 1408.854286 | 79722.3017 | 0.9986 | 3 |
| headers | courierust | get_with_headers | alloc_bytes | O(n) | 0.863 | 0.863 | 980.503095 | 4637.1933 | 1.0000 | 3 |
| headers | reqwest_hyper | get_with_headers | time_ns | O(1) | 0.053 | 0.053 | 248.211458 | 124400.0625 | 0.9620 | 3 |
| headers | reqwest_hyper | get_with_headers | alloc_bytes | O(n^0.60) | 0.596 | 0.596 | 1168.000000 | 24970.6400 | 1.0000 | 3 |
| deflate | courierust | deflate_reused_compressible | time_ns | O(n) | 0.998 | 0.998 | 0.819802 | 405.8950 | 1.0000 | 3 |
| deflate | courierust | deflate_reused_compressible | alloc_bytes | n/a | n/a | n/a | n/a | n/a | n/a | 1 |
| deflate | courierust | deflate_fresh_compressible | time_ns | O(n) | 1.005 | 1.005 | 0.936443 | 736.0626 | 1.0000 | 3 |
| deflate | courierust | deflate_fresh_compressible | alloc_bytes | O(n) | 0.867 | 0.867 | 4.093389 | 131406.3313 | 1.0000 | 3 |
| deflate | courierust | inflate_compressible | time_ns | O(n^0.65) | 0.647 | 0.647 | 0.132597 | 10780.3426 | 0.9955 | 3 |
| deflate | courierust | inflate_compressible | alloc_bytes | fixed-cost dominated | 0.000 | 0.000 | 0.000000 | 29.0000 | 1.0000 | 3 |
| deflate | courierust | deflate_reused_incompressible | time_ns | O(n^1.24) | 1.240 | 1.240 | 22.491589 | -25344.9317 | 1.0000 | 3 |
| deflate | courierust | deflate_reused_incompressible | alloc_bytes | O(1) | 0.000 | 0.000 | 0.000000 | 0.0000 | 1.0000 | 3 |
| deflate | courierust | deflate_fresh_incompressible | time_ns | O(n^1.19) | 1.194 | 1.194 | 25.296703 | -121876.3989 | 0.9999 | 3 |
| deflate | courierust | deflate_fresh_incompressible | alloc_bytes | O(n) | 0.960 | 0.960 | 16.000000 | 131048.0000 | 1.0000 | 3 |

### Constant factors (paired at the same size)

| family | operation | metric | n | courierust | reference | ratio (ours/reference) |
|---|---|---|---:|---:|---:|---:|
| codec | encode_unmasked | time_ns | 64 | 10.8102 | 16.6007 | 0.651 |
| codec | encode_unmasked | alloc_bytes | 64 | 0.0000 | 0.0000 | NaN |
| codec | encode_masked | time_ns | 64 | 29.9458 | 37.4798 | 0.799 |
| codec | encode_masked | alloc_bytes | 64 | 0.0000 | 64.0000 | 0.000 |
| codec | encode_unmasked | time_ns | 1024 | 20.7940 | 26.4445 | 0.786 |
| codec | encode_unmasked | alloc_bytes | 1024 | 0.0000 | 0.0000 | NaN |
| codec | encode_masked | time_ns | 1024 | 72.5405 | 79.2925 | 0.915 |
| codec | encode_masked | alloc_bytes | 1024 | 0.0000 | 1024.0000 | 0.000 |
| codec | encode_unmasked | time_ns | 16384 | 5492.0950 | 6425.9350 | 0.855 |
| codec | encode_unmasked | alloc_bytes | 16384 | 0.0000 | 0.0000 | NaN |
| codec | encode_masked | time_ns | 16384 | 922.6200 | 943.6100 | 0.978 |
| codec | encode_masked | alloc_bytes | 16384 | 0.0000 | 16384.0000 | 0.000 |
| codec | encode_unmasked | time_ns | 262144 | 87651.4750 | 87046.3250 | 1.007 |
| codec | encode_unmasked | alloc_bytes | 262144 | 0.0000 | 0.0000 | NaN |
| codec | encode_masked | time_ns | 262144 | 99562.4250 | 20977.3750 | 4.746 |
| codec | encode_masked | alloc_bytes | 262144 | 0.0000 | 262144.0000 | 0.000 |
| codec | encode_unmasked | time_ns | 1048576 | 43056.0500 | 31707.1250 | 1.358 |
| codec | encode_unmasked | alloc_bytes | 1048576 | 0.0000 | 0.0000 | NaN |
| codec | encode_masked | time_ns | 1048576 | 71697.9500 | 77247.3000 | 0.928 |
| codec | encode_masked | alloc_bytes | 1048576 | 0.0000 | 1048576.0000 | 0.000 |
| codec | utf8_validate | time_ns | 4608 | 1798.1935 | 1871.2750 | 0.961 |
| http | get_roundtrip | time_ns | 1024 | 84783.1672 | 130674.9970 | 0.649 |
| http | get_roundtrip | alloc_bytes | 1024 | 4585.5871 | 26714.0796 | 0.172 |
| http | get_roundtrip | time_ns | 16384 | 77198.1524 | 131391.0381 | 0.588 |
| http | get_roundtrip | alloc_bytes | 16384 | 35214.4095 | 51458.8381 | 0.684 |
| http | get_roundtrip | time_ns | 262144 | 166469.9600 | 249948.9200 | 0.666 |
| http | get_roundtrip | alloc_bytes | 262144 | 526533.8800 | 794887.4400 | 0.662 |
| http | get_roundtrip | time_ns | 1048576 | 1376662.1200 | 449152.8400 | 3.065 |
| http | get_roundtrip | alloc_bytes | 1048576 | 2099397.0000 | 2864889.3600 | 0.733 |
| headers | get_with_headers | time_ns | 4 | 86838.4950 | 124025.4450 | 0.700 |
| headers | get_with_headers | time_ns | 16 | 100413.0000 | 130080.7750 | 0.772 |
| headers | get_with_headers | time_ns | 64 | 170259.1700 | 139943.7300 | 1.217 |
| deflate | fresh_vs_reused_compressible | time_ns | 1024 | 3203.4750 | 1324.5700 | 2.419 |
| deflate | fresh_vs_reused_compressible | time_ns | 65536 | 60499.2750 | 54048.0250 | 1.119 |
| deflate | fresh_vs_reused_compressible | time_ns | 1048576 | 982766.3000 | 860035.5000 | 1.143 |
| deflate | fresh_vs_reused_incompressible | time_ns | 1024 | 9903.5600 | 8287.2500 | 1.195 |
| deflate | fresh_vs_reused_incompressible | time_ns | 65536 | 1423144.1000 | 1437367.3750 | 0.990 |
| deflate | fresh_vs_reused_incompressible | time_ns | 1048576 | 26410587.8000 | 23559491.2000 | 1.121 |

### Space: cost of one idle connection

| implementation | connections | live KiB/conn | RSS KiB/conn |
|---|---:|---:|---:|
| courierust_event | 65 | 10.04 | 36.06 |
| courierust_blocking | 65 | 32.70 | 16.12 |
| hyper_tokio | 65 | 18.91 | 10.56 |

### Time: selected scaling points

| family | implementation | operation | n (bytes) | ns/op |
|---|---|---|---:|---:|
| codec | courierust | encode_unmasked | 64 | 10.8102 |
| codec | tungstenite | encode_unmasked | 64 | 16.6007 |
| codec | courierust | encode_masked | 64 | 29.9458 |
| codec | tungstenite | encode_masked | 64 | 37.4798 |
| codec | courierust | encode_unmasked | 1024 | 20.7940 |
| codec | tungstenite | encode_unmasked | 1024 | 26.4445 |
| codec | courierust | encode_masked | 1024 | 72.5405 |
| codec | tungstenite | encode_masked | 1024 | 79.2925 |
| codec | courierust | encode_unmasked | 16384 | 5492.0950 |
| codec | tungstenite | encode_unmasked | 16384 | 6425.9350 |
| codec | courierust | encode_masked | 16384 | 922.6200 |
| codec | tungstenite | encode_masked | 16384 | 943.6100 |
| codec | courierust | encode_unmasked | 262144 | 87651.4750 |
| codec | tungstenite | encode_unmasked | 262144 | 87046.3250 |
| codec | courierust | encode_masked | 262144 | 99562.4250 |
| codec | tungstenite | encode_masked | 262144 | 20977.3750 |
| codec | courierust | encode_unmasked | 1048576 | 43056.0500 |
| codec | tungstenite | encode_unmasked | 1048576 | 31707.1250 |
| codec | courierust | encode_masked | 1048576 | 71697.9500 |
| codec | tungstenite | encode_masked | 1048576 | 77247.3000 |
| http | courierust | get_roundtrip | 1024 | 84783.1672 |
| http | reqwest_hyper | get_roundtrip | 1024 | 130674.9970 |
| http | courierust | get_roundtrip | 16384 | 77198.1524 |
| http | reqwest_hyper | get_roundtrip | 16384 | 131391.0381 |
| http | courierust | get_roundtrip | 262144 | 166469.9600 |
| http | reqwest_hyper | get_roundtrip | 262144 | 249948.9200 |
| http | courierust | get_roundtrip | 1048576 | 1376662.1200 |
| http | reqwest_hyper | get_roundtrip | 1048576 | 449152.8400 |

## 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 | 940 | 689 | 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 | 689 | 939 | 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 | 262 | 133 | 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 | 363 | 261 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| h2c | h2_multiplex_w1 | 64k | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 4001 | 1 | 1 | 8006 | 4004 | 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 | 20008 | 8005 | 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 | 1769 | 890 | 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 | 16893 | 1772 | 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 | 611 | 427 | 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 | 16928 | 679 | 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 | 85 | fuzz/corpus/h2_frame | command_exit_0 |
| hpack_block | ok | smoke | 21 | fuzz/corpus/hpack_block | command_exit_0 |
| h1_request | ok | smoke | 22 | fuzz/corpus/h1_request | command_exit_0 |
| h2_connection | ok | smoke | 24 | fuzz/corpus/h2_connection | command_exit_0 |
| ws_frame | ok | smoke | 21 | fuzz/corpus/ws_frame | command_exit_0 |
| ws_handshake | ok | smoke | 22 | fuzz/corpus/ws_handshake | command_exit_0 |
| ws_session | ok | smoke | 22 | fuzz/corpus/ws_session | 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=324.413|rps=12330.0|response_mbps=0.000|p50_us=81.55|p75_us=84.68|p90_us=88.36|p95_us=90.37|p99_us=95.14|min_us=51.26|mean_us=81.72|max_us=141.53|stddev_us=6.02|p999_us=108.08|tail_ratio=1.17|cv=0.07|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=342.807|rps=11668.4|response_mbps=11.948|p50_us=86.26|p75_us=87.96|p90_us=89.61|p95_us=90.72|p99_us=104.28|min_us=55.13|mean_us=85.54|max_us=119.39|stddev_us=5.37|p999_us=111.38|tail_ratio=1.21|cv=0.06|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=456.263|rps=8766.9|response_mbps=574.546|p50_us=113.56|p75_us=119.02|p90_us=126.17|p95_us=127.61|p99_us=137.56|min_us=88.89|mean_us=113.69|max_us=176.42|stddev_us=9.23|p999_us=162.72|tail_ratio=1.21|cv=0.08|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=343.706|rps=11637.8|response_mbps=11.917|p50_us=85.79|p75_us=87.76|p90_us=92.08|p95_us=97.17|p99_us=107.58|min_us=28.27|mean_us=85.68|max_us=122.91|stddev_us=7.16|p999_us=117.90|tail_ratio=1.25|cv=0.08|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=128.656|rps=31090.5|response_mbps=31.837|p50_us=107.91|p75_us=142.02|p90_us=177.23|p95_us=203.81|p99_us=268.93|min_us=30.11|mean_us=117.89|max_us=488.25|stddev_us=47.81|p999_us=438.54|tail_ratio=2.49|cv=0.41|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=96.513|rps=41445.2|response_mbps=42.440|p50_us=146.29|p75_us=211.42|p90_us=298.58|p95_us=365.52|p99_us=498.52|min_us=26.35|mean_us=169.65|max_us=881.35|stddev_us=101.37|p999_us=808.71|tail_ratio=3.41|cv=0.60|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=406.326|rps=9844.3|response_mbps=10.081|p50_us=103.03|p75_us=105.41|p90_us=111.79|p95_us=118.37|p99_us=122.39|min_us=70.05|mean_us=102.13|max_us=171.08|stddev_us=8.35|p999_us=134.12|tail_ratio=1.19|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_wait_errors=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=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_wait_errors=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=106.599|rps=37523.7|response_mbps=38.424|p50_us=194.94|p75_us=241.59|p90_us=285.45|p95_us=314.35|p99_us=347.48|min_us=95.27|mean_us=209.27|max_us=380.80|stddev_us=51.32|p999_us=369.24|tail_ratio=1.78|cv=0.25|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_wait_errors=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=1|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=940|h2_write_syscalls=689|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_wait_errors=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=689|h2_write_syscalls=939|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=66.474|rps=60174.1|response_mbps=61.618|p50_us=502.74|p75_us=522.85|p90_us=567.10|p95_us=727.42|p99_us=966.00|min_us=199.93|mean_us=523.75|max_us=1137.44|stddev_us=88.02|p999_us=1100.84|tail_ratio=1.92|cv=0.17|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_wait_errors=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=1|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=262|h2_write_syscalls=133|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_wait_errors=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=363|h2_write_syscalls=261|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=614.403|rps=6510.4|response_mbps=426.665|p50_us=151.31|p75_us=159.50|p90_us=162.94|p95_us=165.47|p99_us=181.53|min_us=121.72|mean_us=153.62|max_us=392.37|stddev_us=10.82|p999_us=234.36|tail_ratio=1.20|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=0|event_wait_errors=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=8006|h2_write_syscalls=4004|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_wait_errors=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=20008|h2_write_syscalls=8005|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=332.999|rps=12012.1|response_mbps=787.222|p50_us=660.26|p75_us=726.15|p90_us=828.85|p95_us=925.43|p99_us=1114.05|min_us=182.01|mean_us=667.07|max_us=1363.61|stddev_us=144.82|p999_us=1271.47|tail_ratio=1.69|cv=0.22|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_wait_errors=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=1769|h2_write_syscalls=890|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_wait_errors=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=16893|h2_write_syscalls=1772|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=207.409|rps=19285.6|response_mbps=1263.899|p50_us=1598.30|p75_us=1742.03|p90_us=1820.32|p95_us=1977.32|p99_us=2904.72|min_us=350.56|mean_us=1657.99|max_us=4610.05|stddev_us=304.34|p999_us=4164.24|tail_ratio=1.82|cv=0.18|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_wait_errors=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=611|h2_write_syscalls=427|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_wait_errors=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=16928|h2_write_syscalls=679|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=211.710|rps=9446.9|response_mbps=0.000|p50_us=104.55|p75_us=117.49|p90_us=118.98|p95_us=120.03|p99_us=128.02|min_us=76.04|mean_us=105.76|max_us=149.84|stddev_us=11.92|p999_us=136.66|tail_ratio=1.22|cv=0.11|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=215.513|rps=9280.2|response_mbps=9.503|p50_us=106.50|p75_us=110.94|p90_us=118.34|p95_us=122.02|p99_us=132.47|min_us=84.66|mean_us=107.68|max_us=252.86|stddev_us=8.70|p999_us=150.10|tail_ratio=1.24|cv=0.08|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=1048.593|rps=1907.3|response_mbps=124.998|p50_us=523.26|p75_us=533.77|p90_us=541.27|p95_us=546.95|p99_us=557.03|min_us=491.11|mean_us=524.21|max_us=640.36|stddev_us=13.38|p999_us=607.17|tail_ratio=1.06|cv=0.03|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=85.576|rps=23370.9|response_mbps=0.093|p50_us=44.13|p75_us=44.48|p90_us=44.83|p95_us=45.16|p99_us=50.39|min_us=28.93|mean_us=42.72|max_us=71.42|stddev_us=4.38|p999_us=63.34|tail_ratio=1.14|cv=0.10|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=253.489|rps=15779.7|response_mbps=16.158|p50_us=60.47|p75_us=75.17|p90_us=77.00|p95_us=77.87|p99_us=82.18|min_us=27.36|mean_us=63.28|max_us=122.66|stddev_us=9.91|p999_us=91.20|tail_ratio=1.36|cv=0.16|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=513.846|rps=7784.4|response_mbps=7.971|p50_us=118.44|p75_us=144.89|p90_us=147.28|p95_us=150.67|p99_us=248.82|min_us=86.33|mean_us=128.37|max_us=584.32|stddev_us=27.18|p999_us=334.14|tail_ratio=2.10|cv=0.21|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=633.556|rps=6313.6|response_mbps=6.465|p50_us=159.67|p75_us=164.04|p90_us=167.65|p95_us=171.29|p99_us=179.25|min_us=120.42|mean_us=158.31|max_us=226.94|stddev_us=9.23|p999_us=208.25|tail_ratio=1.12|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=453.245|rps=8825.3|response_mbps=9.037|p50_us=112.79|p75_us=114.59|p90_us=125.90|p95_us=129.24|p99_us=146.21|min_us=84.92|mean_us=113.27|max_us=351.23|stddev_us=9.84|p999_us=169.39|tail_ratio=1.30|cv=0.09|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=64.626|rps=61894.7|response_mbps=63.380|p50_us=111.54|p75_us=152.15|p90_us=187.44|p95_us=212.96|p99_us=312.04|min_us=37.16|mean_us=122.10|max_us=2759.32|stddev_us=94.51|p999_us=899.77|tail_ratio=2.80|cv=0.77|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=165.267|rps=24203.3|response_mbps=24.784|p50_us=328.05|p75_us=350.31|p90_us=373.48|p95_us=395.96|p99_us=522.39|min_us=101.03|mean_us=326.09|max_us=1733.34|stddev_us=64.96|p999_us=847.00|tail_ratio=1.59|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=357.244|rps=11196.8|response_mbps=733.795|p50_us=83.18|p75_us=100.98|p90_us=102.30|p95_us=103.33|p99_us=115.17|min_us=62.26|mean_us=89.24|max_us=150.76|stddev_us=11.74|p999_us=127.28|tail_ratio=1.38|cv=0.13|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=602.730|rps=6636.5|response_mbps=434.928|p50_us=153.69|p75_us=165.45|p90_us=167.39|p95_us=169.14|p99_us=184.77|min_us=111.05|mean_us=150.62|max_us=235.86|stddev_us=17.19|p999_us=196.07|tail_ratio=1.20|cv=0.11|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=718.013|rps=5570.9|response_mbps=365.096|p50_us=180.13|p75_us=186.80|p90_us=189.70|p95_us=193.92|p99_us=205.21|min_us=137.98|mean_us=179.44|max_us=304.56|stddev_us=10.83|p999_us=230.85|tail_ratio=1.14|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=598.642|rps=6681.8|response_mbps=437.898|p50_us=151.29|p75_us=165.41|p90_us=167.99|p95_us=169.57|p99_us=180.24|min_us=105.71|mean_us=149.61|max_us=289.46|stddev_us=16.46|p999_us=221.17|tail_ratio=1.19|cv=0.11|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=477.148|rps=8383.1|response_mbps=8.584|p50_us=118.03|p75_us=125.59|p90_us=127.44|p95_us=131.88|p99_us=143.63|min_us=94.08|mean_us=119.23|max_us=157.94|stddev_us=8.86|p999_us=149.08|tail_ratio=1.22|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=597.228|rps=6697.6|response_mbps=6.858|p50_us=148.92|p75_us=151.44|p90_us=155.32|p95_us=157.57|p99_us=166.35|min_us=122.12|mean_us=149.21|max_us=208.33|stddev_us=5.92|p999_us=193.95|tail_ratio=1.12|cv=0.04|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=538.902|rps=7422.5|response_mbps=7.601|p50_us=134.07|p75_us=136.52|p90_us=140.26|p95_us=142.42|p99_us=152.86|min_us=107.38|mean_us=134.62|max_us=527.95|stddev_us=9.47|p999_us=195.58|tail_ratio=1.14|cv=0.07|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=604.914|rps=6612.5|response_mbps=6.771|p50_us=150.20|p75_us=153.45|p90_us=157.27|p95_us=159.47|p99_us=172.48|min_us=117.60|mean_us=151.12|max_us=620.23|stddev_us=15.00|p999_us=373.87|tail_ratio=1.15|cv=0.10|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=101.462|rps=39423.7|response_mbps=40.370|p50_us=761.37|p75_us=891.37|p90_us=1041.77|p95_us=1136.10|p99_us=1402.39|min_us=126.42|mean_us=776.36|max_us=2110.83|stddev_us=213.74|p999_us=1779.15|tail_ratio=1.84|cv=0.28|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=85.503|rps=46782.1|response_mbps=47.905|p50_us=586.00|p75_us=792.72|p90_us=997.63|p95_us=1146.34|p99_us=1524.79|min_us=76.34|mean_us=626.31|max_us=2492.04|stddev_us=293.32|p999_us=2106.55|tail_ratio=2.60|cv=0.47|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=92.742|rps=43130.5|response_mbps=44.166|p50_us=627.51|p75_us=847.07|p90_us=1063.39|p95_us=1234.34|p99_us=1713.79|min_us=71.35|mean_us=671.98|max_us=3414.48|stddev_us=329.18|p999_us=2798.49|tail_ratio=2.73|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=126.306|rps=31669.2|response_mbps=32.429|p50_us=232.61|p75_us=292.82|p90_us=363.33|p95_us=422.99|p99_us=594.74|min_us=70.93|mean_us=246.68|max_us=1298.15|stddev_us=105.92|p999_us=990.55|tail_ratio=2.56|cv=0.43|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=176.523|rps=22659.9|response_mbps=23.204|p50_us=336.43|p75_us=405.34|p90_us=470.14|p95_us=523.81|p99_us=636.37|min_us=95.12|mean_us=347.12|max_us=1173.42|stddev_us=101.67|p999_us=898.77|tail_ratio=1.89|cv=0.29|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=689.615|rps=5800.3|response_mbps=380.131|p50_us=168.27|p75_us=172.10|p90_us=194.86|p95_us=202.77|p99_us=209.28|min_us=125.42|mean_us=172.31|max_us=322.49|stddev_us=13.18|p999_us=240.60|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=760.865|rps=5257.2|response_mbps=344.534|p50_us=189.58|p75_us=193.57|p90_us=201.39|p95_us=208.24|p99_us=221.72|min_us=156.77|mean_us=190.11|max_us=257.86|stddev_us=9.67|p999_us=237.04|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=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=688.990|rps=5805.6|response_mbps=380.476|p50_us=171.83|p75_us=177.69|p90_us=180.81|p95_us=185.54|p99_us=199.70|min_us=140.34|mean_us=172.12|max_us=228.84|stddev_us=8.99|p999_us=220.27|tail_ratio=1.16|cv=0.05|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=785.549|rps=5092.0|response_mbps=333.708|p50_us=195.07|p75_us=203.29|p90_us=210.38|p95_us=217.03|p99_us=237.01|min_us=142.36|mean_us=196.26|max_us=310.53|stddev_us=12.80|p999_us=278.01|tail_ratio=1.21|cv=0.07|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=94.340|rps=678.4|response_mbps=44.460|p50_us=1478.61|p75_us=1522.43|p90_us=1561.35|p95_us=1572.54|p99_us=1595.38|min_us=1365.81|mean_us=1473.95|max_us=1681.62|stddev_us=66.05|p999_us=1681.62|tail_ratio=1.08|cv=0.04|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=71.635|rps=893.4|response_mbps=58.551|p50_us=1015.09|p75_us=1312.68|p90_us=1357.61|p95_us=1376.84|p99_us=1395.23|min_us=872.70|mean_us=1119.20|max_us=1411.06|stddev_us=182.38|p999_us=1411.06|tail_ratio=1.37|cv=0.16|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=959.918|rps=4167.0|response_mbps=4.267|p50_us=248.62|p75_us=265.67|p90_us=278.81|p95_us=283.39|p99_us=296.83|min_us=163.59|mean_us=239.90|max_us=348.75|stddev_us=32.24|p999_us=320.48|tail_ratio=1.19|cv=0.13|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=1071.492|rps=3733.1|response_mbps=3.823|p50_us=266.08|p75_us=275.97|p90_us=284.16|p95_us=288.59|p99_us=297.83|min_us=213.49|mean_us=267.78|max_us=562.75|stddev_us=14.15|p999_us=356.04|tail_ratio=1.12|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=3653.469|rps=1094.8|response_mbps=71.752|p50_us=889.58|p75_us=909.12|p90_us=941.76|p95_us=1203.32|p99_us=1246.40|min_us=785.39|mean_us=913.28|max_us=1346.94|stddev_us=93.65|p999_us=1287.07|tail_ratio=1.40|cv=0.10|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=4519.887|rps=885.0|response_mbps=57.998|p50_us=1192.57|p75_us=1217.46|p90_us=1240.62|p95_us=1255.37|p99_us=1297.43|min_us=871.86|mean_us=1129.86|max_us=1572.83|stddev_us=128.45|p999_us=1433.75|tail_ratio=1.09|cv=0.11|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=1468.80
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=233.78|byte_delay_us=10000|wall_ms=395.90
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=6.532
RESULT|suite=h3|case=h3_sequential|protocol=h3|mode=reuse|payload=empty|bytes=0|workers=1|requests=1000|elapsed_ms=208.233|rps=4802.3|p50_us=207.5|p75_us=222.0|p90_us=233.2|p99_us=246.1|min_us=143.59|mean_us=208.11|max_us=365.22|stddev_us=18.04|p999_us=262.48|tail_ratio=1.19|cv=0.09|samples=1000
RESULT|suite=h3|case=h3_parallel|protocol=h3|mode=reuse|payload=empty|bytes=0|workers=8|requests=1000|elapsed_ms=56.354|rps=17745.0|p50_us=440.2|p75_us=466.7|p90_us=495.1|p99_us=590.2|min_us=225.82|mean_us=444.24|max_us=1228.94|stddev_us=56.09|p999_us=1030.83|tail_ratio=1.34|cv=0.13|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_wait_errors=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=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_wait_errors=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_wait_errors=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=1|h2_streams_active_peak=8|h2_streams_per_connection_peak=8|h2_read_syscalls=940|h2_write_syscalls=689|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_wait_errors=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=689|h2_write_syscalls=939|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_wait_errors=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=1|h2_streams_active_peak=32|h2_streams_per_connection_peak=32|h2_read_syscalls=262|h2_write_syscalls=133|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_wait_errors=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=363|h2_write_syscalls=261|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=0|event_wait_errors=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=8006|h2_write_syscalls=4004|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_wait_errors=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=20008|h2_write_syscalls=8005|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_wait_errors=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=1769|h2_write_syscalls=890|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_wait_errors=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=16893|h2_write_syscalls=1772|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_wait_errors=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=611|h2_write_syscalls=427|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_wait_errors=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=16928|h2_write_syscalls=679|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=85|corpus=fuzz/corpus/h2_frame|reason=command_exit_0
FUZZ|target=hpack_block|status=ok|runs=smoke|duration_s=21|corpus=fuzz/corpus/hpack_block|reason=command_exit_0
FUZZ|target=h1_request|status=ok|runs=smoke|duration_s=22|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
FUZZ|target=ws_frame|status=ok|runs=smoke|duration_s=21|corpus=fuzz/corpus/ws_frame|reason=command_exit_0
FUZZ|target=ws_handshake|status=ok|runs=smoke|duration_s=22|corpus=fuzz/corpus/ws_handshake|reason=command_exit_0
FUZZ|target=ws_session|status=ok|runs=smoke|duration_s=22|corpus=fuzz/corpus/ws_session|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.
~~~