Competitors
go
Go
The standard library’s server: a goroutine per connection on Go’s runtime poller (epoll).
axum
Rust
axum 0.8 on tokio’s multi-threaded, work-stealing runtime (epoll), TCP_NODELAY as axum’s docs show.
fourneau-zig
Zig
fourneau with a Zig handler: io_uring, a fiber per connection, one shard per core sharing nothing, ReleaseSafe (assertions on).
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.
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.
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.
| what | pinned to |
|---|---|
| Zig | 0.17.0 |
| Roc | nightly-2026-10-04-130536d |
| Go | 1.27.1 |
| Rust | 1.94.1 |
| axum | 0.8.9 |
| tokio | 1.53.2 |
| oha (load) | 1.16.0 |
| droplet image | ubuntu-26-04-x64 |
| fourneau | main at c2d9236 |
| roux | main at 8e6ebf3 |