Skirr prototype: local HTTP/1 comparison One worker pinned to CPU 0; wrk on CPUs 4-7; identical apps and Python. Access logs, request IDs, compression, caches and lifespan disabled. Server allocator/GC defaults retained; Skirr does not alter application GC policy. Medians of three five-second runs, each preceded by one-second warmup. CPU governor/energy settings unchanged; shared laptop with dynamic clocks. No TLS, HTTP/2, WebSockets or pipelining in the throughput workload. Exact body/status checked before/after each run, not on every wrk response. P99 below is median per-run wrk P99, not a pooled percentile. Timeout counter includes completed responses outside the 3s histogram. These measurements do not establish production readiness or general superiority. Connections: 64 Versions: {"fastapi": "0.143.1", "peregrine-server": "1.1.7", "uvloop": "0.23.0", "weft-server": "0.1.0"} Workload Server Req/s P99 ms IO failures >3s HTTP errors PSS MiB RPS range fastapi_json peregrine 9,429 9.33 0 0 0 55.4 9,392-9,496 fastapi_json skirr 8,669 14.39 0 0 0 38.3 8,653-8,671 fastapi_json skirr-before 8,379 12.51 0 0 0 38.6 8,326-8,469 fastapi_json weft 8,785 11.40 0 0 0 39.9 8,653-8,877 get_64k peregrine 28,133 3.52 0 0 0 33.3 28,031-28,289 get_64k skirr 30,089 4.52 0 0 0 17.6 29,813-30,191 get_64k skirr-before 22,329 5.04 0 0 0 21.5 22,150-22,522 get_64k weft 24,932 4.87 0 0 0 22.7 24,850-25,331 post_4k peregrine 59,103 3.22 0 0 0 33.8 59,067-59,566 post_4k skirr 51,469 2.54 0 0 0 17.6 50,941-52,028 post_4k skirr-before 43,271 2.44 0 0 0 18.2 42,910-43,601 post_4k weft 48,848 2.43 0 0 0 20.0 48,841-49,242 raw_get peregrine 74,589 1.65 0 0 0 33.3 73,889-75,095 raw_get skirr 68,621 1.90 0 0 0 17.6 68,507-68,950 raw_get skirr-before 52,749 2.20 0 0 0 17.5 52,122-52,878 raw_get weft 60,855 2.08 0 0 0 18.7 60,432-61,487 Optimized Skirr change versus same-session original: fastapi_json +3.5%; versus Weft -1.3%; versus Peregrine -8.1% get_64k +34.8%; versus Weft +20.7%; versus Peregrine +7.0% post_4k +18.9%; versus Weft +5.4%; versus Peregrine -12.9% raw_get +30.1%; versus Weft +12.8%; versus Peregrine -8.0% Streaming: app waits 50ms after the first chunk; 20 sequential samples. skirr-before first-byte 1.259ms; total 51.503ms weft first-byte 1.232ms; total 52.463ms peregrine first-byte 1.088ms; total 51.376ms skirr first-byte 1.065ms; total 51.439ms Raw artifact: bench/results/optimization-c64/results.json Connections: 256 Versions: {"fastapi": "0.143.1", "peregrine-server": "1.1.7", "uvloop": "0.23.0", "weft-server": "0.1.0"} Workload Server Req/s P99 ms IO failures >3s HTTP errors PSS MiB RPS range fastapi_json peregrine 9,053 40.78 0 0 0 56.7 8,814-9,390 fastapi_json skirr 8,457 42.89 0 0 0 38.4 8,415-8,502 fastapi_json skirr-before 8,165 44.42 0 0 0 39.3 8,087-8,174 fastapi_json weft 8,672 41.78 0 0 0 42.8 8,648-8,750 get_64k peregrine 26,493 16.25 0 0 0 36.3 25,545-26,776 get_64k skirr 30,712 13.94 0 0 0 18.5 28,874-31,375 get_64k skirr-before 20,945 23.53 0 0 0 34.3 19,327-21,198 get_64k weft 24,534 18.91 0 0 0 39.3 23,465-25,061 post_4k peregrine 60,530 7.94 0 0 0 38.9 60,480-63,846 post_4k skirr 52,584 9.14 0 0 0 18.5 50,550-54,610 post_4k skirr-before 37,587 11.34 0 0 0 20.7 36,754-38,010 post_4k weft 48,696 8.95 0 0 0 28.7 48,377-50,107 raw_get peregrine 77,737 6.29 0 0 0 36.0 76,825-77,848 raw_get skirr 72,552 7.20 0 0 0 18.5 67,328-73,692 raw_get skirr-before 50,283 8.66 0 0 0 18.0 48,780-50,360 raw_get weft 64,725 7.73 0 0 0 23.3 62,059-65,168 Optimized Skirr change versus same-session original: fastapi_json +3.6%; versus Weft -2.5%; versus Peregrine -6.6% get_64k +46.6%; versus Weft +25.2%; versus Peregrine +15.9% post_4k +39.9%; versus Weft +8.0%; versus Peregrine -13.1% raw_get +44.3%; versus Weft +12.1%; versus Peregrine -6.7% Streaming: app waits 50ms after the first chunk; 20 sequential samples. skirr-before first-byte 1.243ms; total 51.586ms weft first-byte 1.185ms; total 52.630ms peregrine first-byte 1.144ms; total 51.444ms skirr first-byte 1.138ms; total 51.338ms Raw artifact: bench/results/optimization-c256/results.json Total completed requests across these comparisons: 18,205,628 wrk histogram counter behavior: https://github.com/wg/wrk/blob/4.1.0/src/wrk.c#L301-L325