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.