Download Latest Version v0.53.0 source code.tar.gz (617.9 kB)
Email in envelope

Get an email when there's a new version of A QUIC implementation in pure Go

Home / v0.53.0
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2025-06-24 10.0 kB
v0.53.0 source code.tar.gz 2025-06-24 617.9 kB
v0.53.0 source code.zip 2025-06-24 850.7 kB
Totals: 3 Items   1.5 MB 2

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: https://github.com/quic-go/quic-go/compare/v0.52.0...v0.53.0

Source: README.md, updated 2025-06-24