Skip to content

v0.39.0

Compare
Choose a tag to compare
@marten-seemann marten-seemann released this 24 Sep 12:08
· 272 commits to master since this release
9a397ab

New Features

  • quic-go now uses feeds ECN signals into its congestion controller (#4059). ECN is used by routers to signal congestion before queues overflow (and packets are dropped). When using ECN, there are a number of failure modes, which necessitates some rather complex validation logic, see section 13.4 of RFC 9000 for details. ECN support can be disabled by setting the QUIC_GO_DISABLE_ECN environment variable to true.
  • The HTTP/3 package introduced a http3.Error, making the errors returned by the http3 package more useful, and allowing easy assertions of the HTTP/3 error codes defined in RFC 9114: #4039

Other Changes

  • The key used to encrypt resumption tokens can now be configured using using Transport.TokenGeneratorKey: #4066
  • The RTT is now saved in session tickets, even when not using 0-RTT, allowing for faster session resumption: #4042
  • The reason for dial cancelations is now returned, when the context is canceled using a context.CancelCauseFunc: #4078

When using Go 1.21, make sure to build with (at least) Go 1.21.1, as this release fixes a remote-triggered panic in crypto/tls. See the release announcement for details.

Breaking Changes

  • Config.DisableVersionNegotiationPackets was moved to the Transport: #4047
  • Config.MaxTokenAge was moved to the Transport: #4084
  • Config.MaxRetryTokenAge was removed. The age limit for Retry tokens is now set to twice the handshake timeout: #4064
  • The handshake timeout is now set to twice the handshake idle timeout: #4063. For clients, it is recommend to limit the duration of the handshake by using setting the context on the Dial call.
  • The logging.Tracer and logging.ConnectionTracer are now structs (not interfaces): #4082

Please support quic-go!

Is your project / company relying on quic-go? Please consider funding the project. Any support is highly appreciated!

Changelog

Full Changelog: v0.38.1...v0.39.0