0.9.0
We are happy to announce the release of 0.9.0 of Quinn, our pure-Rust implementation of QUIC. This release introduces extensible support for multiple async runtimes, improves Connection
API ergonomics, and introduces a variety of new features, performance improvements, and bugfixes.
Important changes
- Abstract runtime support (#1364, thanks to @yu-re-ka)
- Replace
NewConnection
struct withConnection
methods (#1357) - Replace
Incoming
stream withEndpoint::accept
async method (#1426)
Functional improvements
- Add additional metrics for lost packets and bytes (#1248, thanks to @Matthias247)
- Implement draft-ietf-quic-bit-grease-02 (#1286)
- Allow adjustment of per-connection concurrent stream limits (#1315)
- Allow initial maximum UDP payload size to be configured (#1379)
- Configure receive window per connection (#1386, thanks to @lijunwangs)
- Define
Connection::closed()
helper to await connection termination (#1396) - Expose a getter for the close reason (#1424)
- Accessor for free datagram send buffer space (#1423)
Performance improvements
- Enable UDP GRO (#1350, #1354; thanks to @alessandrod)
- Only send ACKs when they've changed (#1245)
- Other ACK improvements (#1415)
Bug fixes
- Tolerate wide
IP_TOS
cmsgs (#1274) - Identify zero-length connections by four-tuple (#1306)
- Retry token fixes (#1332)
- Fix Linux DF bit setting for IPv6-mapped IPv4 addresses (#1381)
- Fix build errors so quinn-proto can be used under wasm32-unknown-unknown (#1387, thanks to @thombles)
- Disable IP fragmentation on Windows (#1383)
- Check QUIC bit in short headers (#1404, thanks to @thekuwayama)
- Fix stopped streams not issuing ID credit when reset (#1422)
Other improvements
- Replace futures-util with optional futures-io dep (#1263)
- Strip down futures-* dependencies (#1273)
- Reexport
UnknownStream
(#1268) - Replace
Broadcast
helper withtokio::sync::Notify
(#1264) - Rely on rustls to check for ALPN failure (#1258)
- Use config to reject connections rather than extra state (#1247)
- Adjust link to quinn crate entry point in docs (#1241, thanks to @themaxdavitt)
- Expose
RttEstimator
interface publicly (#1243, thanks to @BiagioFesta) - Replace fxhash with rustc_hash (#1246)
- Don't update remote client CIDs gratuitously (#1294)
- Change overly verbose info span to debug (#1351, thanks @alessandrod)
- Bump MSRV to 1.59 (#1403)
On behalf of the Quinn team, @djc and @Ralith, thanks to all contributors!