Awesome
hello
Multi-threaded cross-platform HTTP/1.1 web server example in Zig using lithdew/pike and kprotty/zap.
Warning
This example is barebones and highly experimental. Linux and Mac has been extensively tested, with Windows only being barely supported.
pike does not yet support cancellation of pending I/O operations on Windows, which causes this example to fail spontaneously should one initiate a graceful shutdown on Windows.
Setup
This example requires a nightly version of Zig. Make sure that port 9000 is available.
git clone --recurse-submodules https://github.com/lithdew/hello
cd hello && zig run hello.zig
Benchmarks
$ cat /proc/cpuinfo | grep 'model name' | uniq
model name : Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz
$ wrk -t12 -c100 -d30s http://127.0.0.1:9000
Running 30s test @ http://127.0.0.1:9000
12 threads and 100 connections
Thread Stats Avg Stdev Max +/- Stdev
Latency 417.19us 0.90ms 30.21ms 96.78%
Req/Sec 26.86k 3.31k 39.72k 73.08%
9629837 requests in 30.04s, 459.19MB read
Requests/sec: 320538.80
Transfer/sec: 15.28MB