I was reading up on the new HTTP/3 standard and was wondering how ready are the Crystal web frameworks are for implementing/using it.
AFAIK all web frameworks build on top of HTTP::Server
and that’s not ready for HTTP/3 at all. It doesn’t even support HTTP/2 (see #2125).
The wikipedia page lists implementations in C, C++, Go, Java, Python, and Rust, so at least Crystal devs/implementers don’t have to start from scratch, and also have ref implementations to test against.
I recommend taking a look on quiche, from Cloudflare, which is the best on both compatibility and speed, according to quic-interop-runner results (repo).
Also, using the quic-interop-runner to test the Crystal implementation will be really helpful.
In case quiche
isn’t a good option to “learn” from, I recommend the open source and fully embeddable aws/s2n-quic, which doesn’t depend on BoringSSL and, instead, is compatible with embeddable TLS libraries, including aws/s2n-tls and rustls.
There is a LiteSpeed QUIC binding within the Crystal ecosystem and for the longest time it was used by Invidious. However, it is quite unstable and was the source of many problems for us.