Spent the last few weeks building an HTTP/2 server from scratch in Go.
Full RFC 9113 - framing, HPACK, stream state machine, flow control, TLS enforcement, 145/146 h2spec tests passing.
The fun part was RFC 9218 stream priorities. Browsers already send priority: u=N on every fetch. Most servers throw it away. I built a pluggable write scheduler that actually uses it - deficit round-robin across urgency levels, so hero images and nav get bandwidth before analytics pixels, on every flow-control window round.
50 concurrent streams, 16 KiB window: DRR finishes 40% faster than round-robin. Above-the-fold content lands first, tracking junk last. Exactly how it should work.
Also exports a C ABI (.so) so non-Go services can use it.




![[Go in Practice] Writing Modern Go with AI: Testing JetBrains go-modern-guidelines and Refactoring a 1,039-line main.go](https://media2.dev.to/dynamic/image/width=1200,height=627,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fnaugad5rry7u00pyg8wh.png)








