Skip to content

v0.53.0

Choose a tag to compare

@marten-seemann marten-seemann released this 25 Jun 03:26
· 317 commits to master since this release
b94fc4d

This release introduces a massive overhaul of the quic-go API. See this blog post for more details about the motivation. Most users will need to make some changes when upgrading to this version.

  • The Connection interface was removed in favor of a Conn struct (#5195).
  • The ReceiveStream, SendStream and Stream interfaces were replaced with structs of the same name (#5149, #5172, #5173, #5214).

In most cases, migrating downstream code should be fairly straightforward. For example, a method that used to accept a quic.Connection as a parameter now needs to accept a *quic.Conn, and a function handling a quic.Stream now needs to handle a *quic.Stream. Of course, consumers of quic-go are free to define their own interfaces.

Similarly, on the HTTP/3 layer:

  • The Connection interface was replaced with a Conn struct (#5204).
  • The RequestStream interface was converted to a struct (#5153, #5216).
  • The Stream interface was converted to a struct (#5154).

We expect that most HTTP/3 users won't need to adjust their code, if they use the package to run an HTTP/3 server and dial HTTP/3 connection. More advanced use cases, such as WebTransport and the various MASQUE protocols, will require updates. We have already released new versions of webtransport-go and masque-go to support these changes.

Other Breaking Changes

  • http3: the deprecated SingleDestinationRoundTripper was removed (#5217)

Notable Fixes and Improvements

  • fix Goroutine leak when receiving a Version Negotiation packets race with dial context cancellation (#5203)
  • drain the server accept queue when closing the transport (#5237), thanks to @sukunrt
  • fix a race condition when closing transport (#5220), thanks to @sukunrt
  • quicvarint: speed up parsing of 1, 2 and 4-byte varints (~12.5% for 1 and 2 bytes, ~1% for 4 bytes) (#5229), thanks to @jannis-seemann
  • http3: expose ClientConn.Context, CloseWithError and Conn: #5219
  • http3: RequestStream could be misused in many different ways, that's why we tightened the error checks (#5231)

Behind The Scenes

We've completed the migration of the entire test suite away from Ginkgo (#3652) and towards standard Go tests (#5084, #5150, #5151, #5193, #5194, #5196, #5198). This was a major undertaking, spanning roughly 9 months and resulting in a complete rewrite of quic-go's test suite (> 40,000 lines of code!). Users will now benefit from a significantly slimmed-down dependency tree when upgrading.

Changelog

New Contributors

Full Changelog: v0.52.0...v0.53.0