Caddy compatibility for zeroserve: 3x throughput and 70% lower latency
DRANK
zeroserve is a high-performance HTTPS server that runs eBPF scripts in userspace (intro). Now it's got a Caddy-compat mode - when provided a Caddyfile, zeroserve JIT-compiles it to eBPF and then to native x86_64/ARM64 machine code, and runs it in an io_uringevent loop.protocolserverthroughputp50p99peak RSShttpszeroserve-clang38,948 req/s1.45ms3.91ms30.9 MiBhttpszeroserve-tcc36,653 req/s1.67ms4.00ms34.2 MiBhttpscaddy12,529 req/s4.74ms13.11ms67.4 MiBhttpsnginx37,424 req/s1.57ms4.24ms25.7 MiBHTTPS reverse proxy, 2 threads, AMD Ryzen 7 3700X. Check CI for original run result.Try it with your Caddyfile:curl -fL -o zeroserve -m)-linux chmod +x zeroserve ./zeroserve --caddy /etc/caddy/Caddyfile curl http://127.0.0.1:8080 zeroserve runs turing-complete eBPF and you can call custom code from your Caddyfile. For example, to reverse-proxy a path to an S3-compatible bucket with AWS SigV4 auth, grab io.su3.aws-sigv4.c and then:# zeroserve --plugin io.su3.aws-sigv4.c --caddy Caddyfile example.com …