[Ann] Quinn 0.2: QUIC protocol in Rust

We (@djc and @Ralith) are happy to announce the release of 0.2.0 of Quinn, our pure-Rust implementation of the QUIC protocol, the next generation TCP replacement protocol currently being standardized at the IETF.

After 3 months of development since the release of 0.1.0, 0.2.0 is much more complete. First and foremost, Quinn 0.2.0 is among the most conformant implementations of the latest QUIC draft (draft 17), according to the interoperability testing data maintained by implementers participating in the QUIC working group. It now supports:

  • Stateless retries
  • Explicit congestion notification (only Linux support so far -- contributions welcome!)
  • Connection migration

These features are currently being worked on:

  • 0-RTT data has largely been implemented but still needs tweaking of the API
  • HTTP 3 support has been started and is being worked on by our awesome contributor @stammw

We've worked to make Quinn even more modular. It consists of the quinn-proto crate, which contains deterministic protocol logic without touching any I/O APIs, and a quinn crate which leverages tokio to deliver a high-level asynchronous API. (Additionally, we maintain an experimental branch with async/await support.)

We're also grateful for the work @imp, @est31, @psiphi75, and @kryptan have contributed to this release. While we don't always have large amounts of pre-defined good first issues setup due to the fast moving development, we're always happy to mentor new contributors, independent of their prior level of Rust experience!

Finally, we would like to thank the community for their support. To support this release, we've contributed work to libc, tokio, rustls and ring. We'd also like to call out @est31's new rcgen crate, which makes self-signed certificate support easier to use. Quinn would not be possible without the support of the Rust ecosystem.

We're excited to see what's coming for QUIC and Quinn in 2019.

15 Likes

Thanks! I don't like to post to say nothing, but I'll make an exception: everything in this post sounds awesome (especially decoupling protocol logic from IO!) :smile:

There's a also a competing crate from CloudFlare called quiche. I wonder if it'll be a good idea for the two to merge.

I've been asking the author of quiche about that repeatedly, actually, but so far they are not interested.

Cool! This API looks much more sane than quiche.