Competitors

go

Go

The standard library’s server: a goroutine per connection on Go’s runtime poller (epoll).

Gosource

axum

Rust

axum 0.8 on tokio’s multi-threaded, work-stealing runtime (epoll), TCP_NODELAY as axum’s docs show.

axumtokiosource

fourneau-zig

Zig

fourneau with a Zig handler: io_uring, a fiber per connection, one shard per core sharing nothing, ReleaseSafe (assertions on).

fourneauZigsource

roux

Roc

A Roc app on roux, the Roc platform built on fourneau: the handler is Roc, compiled with the server into one static binary.

rouxRocsource

basic-webserver

Roc

Roc’s own platform, as released (0.17.0): a Rust host on hyper and tokio, the handler Roc. Limits raised to the race’s load, nothing else.

basic-webserverRocsource

Versions

Everything is pinned, and each race records what it raced. fourneau and roux are the two things that move, on purpose: a race takes the newest commit of each. How each pin is updated: VERSIONS.md.

whatpinned to
Zig0.17.0
Rocnightly-2026-10-04-130536d
Go1.27.1
Rust1.94.1
axum0.8.9
tokio1.53.2
oha (load)1.16.0
droplet imageubuntu-26-04-x64
fourneaumain at c2d9236
rouxmain at 8e6ebf3