- Use
ReadBatch
to read multiple UDP packets from the socket with a single syscall - Add a config option (
Config.DisableVersionNegotiationPackets
) to disable sending of Version Negotiation packets - Drop support for QUIC draft versions 32 and 34
- Remove the
RetireBugBackwardsCompatibilityMode
, which was intended to mitigate a bug when retiring connection IDs in quic-go in v0.17.2 and ealier
- Update qtls (for Go 1.15, 1.16 and 1.17rc1) to include the fix for the crypto/tls panic (see https://groups.google.com/g/golang-dev/c/5LJ2V7rd-Ag/m/YGLHVBZ6AAAJ for details)
- quic-go now supports RFC 9000!
- Remove the
quic.Config.HandshakeTimeout
. Introduce aquic.Config.HandshakeIdleTimeout
.
- Supports QUIC WG draft-29.
- Improve bundling of ACK frames (#2543).
- Supports QUIC WG draft-28.
- Supports QUIC WG draft-27.
- Add support for 0-RTT.
- Remove
Session.Close()
. Applications need to pass an application error code to the transport usingSession.CloseWithError()
. - Make the TLS Cipher Suites configurable (via
tls.Config.CipherSuites
).
- Supports QUIC WG draft-24.
- Supports QUIC WG draft-23.
- Add an
EarlyListener
that allows sending of 0.5-RTT data. - Add a
TokenStore
to store address validation tokens. - Issue and use new connection IDs during a connection.
- Implement HTTP/3.
- Rename
quic.Cookie
toquic.Token
andquic.Config.AcceptCookie
toquic.Config.AcceptToken
. - Distinguish between Retry tokens and tokens sent in NEW_TOKEN frames.
- Enforce application protocol negotiation (via
tls.Config.NextProtos
). - Use a varint for error codes.
- Add support for quic-trace.
- Add a context to
Listener.Accept
,Session.Accept{Uni}Stream
andSession.Open{Uni}StreamSync
. - Implement TLS key updates.
- Drop support for gQUIC. For qQUIC support, please switch to the gquic branch.
- Implement QUIC WG draft-19.
- Use qtls for TLS 1.3.
- Return a
tls.ConnectionState
fromquic.Session.ConnectionState()
. - Remove the error return values from
quic.Stream.CancelRead()
andquic.Stream.CancelWrite()
- Add support for QUIC 44, drop support for QUIC 42.
- Add a
quic.Config
option for the length of the connection ID (for IETF QUIC). - Split Session.Close into one method for regular closing and one for closing with an error.
- Add support for unidirectional streams (for IETF QUIC).
- Add a
quic.Config
option for the maximum number of incoming streams. - Add support for QUIC 42 and 43.
- Add dial functions that use a context.
- Multiplex clients on a net.PacketConn, when using Dial(conn).
- The lower boundary for packets included in ACKs is now derived, and the value sent in STOP_WAITING frames is ignored.
- Remove
DialNonFWSecure
andDialAddrNonFWSecure
. - Expose the
ConnectionState
in theSession
(experimental API). - Implement packet pacing.
- Add support for QUIC 39, drop support for QUIC 35 - 37
- Added
quic.Config
options for maximal flow control windows - Add a
quic.Config
option for QUIC versions - Add a
quic.Config
option to request omission of the connection ID from a server - Add a
quic.Config
option to configure the source address validation - Add a
quic.Config
option to configure the handshake timeout - Add a
quic.Config
option to configure the idle timeout - Add a
quic.Config
option to configure keep-alive - Rename the STK to Cookie
- Implement
net.Conn
-style deadlines for streams - Remove the
tls.Config
from thequic.Config
. Thetls.Config
must now be passed to theDial
andListen
functions as a separate parameter. See the Godoc for details. - Changed the log level environment variable to only accept strings ("DEBUG", "INFO", "ERROR"), see the wiki for more details.
- Rename the
h2quic.QuicRoundTripper
toh2quic.RoundTripper
- Changed
h2quic.Server.Serve()
to accept anet.PacketConn
- Drop support for Go 1.7 and 1.8.
- Various bugfixes