quic-go/quic-go (github.com/quic-go/quic-go)
### [`v0.39.0`](https://togithub.com/quic-go/quic-go/releases/tag/v0.39.0)
[Compare Source](https://togithub.com/quic-go/quic-go/compare/v0.38.1...v0.39.0)
#### New Features
- quic-go now uses feeds ECN signals into its congestion controller ([#4059](https://togithub.com/quic-go/quic-go/issues/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](https://datatracker.ietf.org/doc/html/rfc9000#section-13.4) 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](https://datatracker.ietf.org/doc/html/rfc9114#section-8.1) defined in RFC 9114: [#4039](https://togithub.com/quic-go/quic-go/issues/4039)
#### Other Changes
- The key used to encrypt resumption tokens can now be configured using using `Transport.TokenGeneratorKey`: [#4066](https://togithub.com/quic-go/quic-go/issues/4066)
- The RTT is now saved in session tickets, even when not using 0-RTT, allowing for faster session resumption: [#4042](https://togithub.com/quic-go/quic-go/issues/4042)
- The reason for dial cancelations is now returned, when the context is canceled using a `context.CancelCauseFunc`: [#4078](https://togithub.com/quic-go/quic-go/issues/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](https://groups.google.com/g/golang-announce/c/Fm51GRLNRvM) for details.
#### Breaking Changes
- `Config.DisableVersionNegotiationPackets` was moved to the `Transport`: [#4047](https://togithub.com/quic-go/quic-go/issues/4047)
- `Config.MaxTokenAge` was moved to the `Transport`: [#4084](https://togithub.com/quic-go/quic-go/issues/4084)
- `Config.MaxRetryTokenAge` was removed. The age limit for Retry tokens is now set to twice the handshake timeout: [#4064](https://togithub.com/quic-go/quic-go/issues/4064)
- The handshake timeout is now set to twice the handshake idle timeout: [#4063](https://togithub.com/quic-go/quic-go/issues/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](https://togithub.com/quic-go/quic-go/issues/4082)
#### Please support quic-go!
Is your project / company relying on quic-go? Please consider [funding the project](https://togithub.com/sponsors/marten-seemann). Any support is highly appreciated!
#### Changelog
- ci: fix integration test running with and without GSO by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4043](https://togithub.com/quic-go/quic-go/pull/4043)
- ci: fix syntax error in integration test workflow by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4048](https://togithub.com/quic-go/quic-go/pull/4048)
- fix flaky version negotiation connection unit test by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4052](https://togithub.com/quic-go/quic-go/pull/4052)
- switch from unmaintained golang/mock to go.uber.org/mock by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4050](https://togithub.com/quic-go/quic-go/pull/4050)
- move the DisableVersionNegotiationPackets flag to the Transport by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4047](https://togithub.com/quic-go/quic-go/pull/4047)
- move GSO control message handling to the oobConn by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4056](https://togithub.com/quic-go/quic-go/pull/4056)
- integration tests: fix connection timeout in 0-RTT test by [@tanghaowillow](https://togithub.com/tanghaowillow) in [https://github.com/quic-go/quic-go/pull/4060](https://togithub.com/quic-go/quic-go/pull/4060)
- ackhandler: rename variables to follow RFC 9002 terminology by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4062](https://togithub.com/quic-go/quic-go/pull/4062)
- ci: update GitHub checkout and setup-go actions to v4 by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4067](https://togithub.com/quic-go/quic-go/pull/4067)
- update qtls-go1-20 to v0.3.4 by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4068](https://togithub.com/quic-go/quic-go/pull/4068)
- remove TLS post-handshake message reassembly logic by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4073](https://togithub.com/quic-go/quic-go/pull/4073)
- ackhandler: use the receive time of the Retry packet for RTT estimation by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4070](https://togithub.com/quic-go/quic-go/pull/4070)
- set the handshake timeout to twice the handshake idle timeout by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4063](https://togithub.com/quic-go/quic-go/pull/4063)
- remove Config.MaxRetryTokenAge, set it to the handshake timeout by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4064](https://togithub.com/quic-go/quic-go/pull/4064)
- randomize the serialization order of control frames by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4069](https://togithub.com/quic-go/quic-go/pull/4069)
- add ECN support by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4059](https://togithub.com/quic-go/quic-go/pull/4059)
- save the RTT in non-0-RTT session tickets by [@tanghaowillow](https://togithub.com/tanghaowillow) in [https://github.com/quic-go/quic-go/pull/4042](https://togithub.com/quic-go/quic-go/pull/4042)
- remove duplicate mocks for the Tracer and the ConnectionTracer by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4076](https://togithub.com/quic-go/quic-go/pull/4076)
- ackhandler: detect ECN mangling by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4080](https://togithub.com/quic-go/quic-go/pull/4080)
- ci: clean up Codecov ignore list by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4081](https://togithub.com/quic-go/quic-go/pull/4081)
- expose GSO usage through ConnectionState by [@birneee](https://togithub.com/birneee) in [https://github.com/quic-go/quic-go/pull/4083](https://togithub.com/quic-go/quic-go/pull/4083)
- add a Transport config option for the key used to encrypt tokens by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4066](https://togithub.com/quic-go/quic-go/pull/4066)
- http09: increase the startup timeout in tests by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4071](https://togithub.com/quic-go/quic-go/pull/4071)
- ci: fail if any Go files contain an ignore directive by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4055](https://togithub.com/quic-go/quic-go/pull/4055)
- ci: combine the go generate workflow with the linting workflow by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4053](https://togithub.com/quic-go/quic-go/pull/4053)
- integrate ClusterFuzzLite by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4034](https://togithub.com/quic-go/quic-go/pull/4034)
- http3: introduce an HTTP/3 error type by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4039](https://togithub.com/quic-go/quic-go/pull/4039)
- make the logging.Tracer and logging.ConnectionTracer a struct by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4082](https://togithub.com/quic-go/quic-go/pull/4082)
- move MaxTokenAge configuration option to the Transport by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4084](https://togithub.com/quic-go/quic-go/pull/4084)
- return the cancellation cause for cancelled dials by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4078](https://togithub.com/quic-go/quic-go/pull/4078)
- remove unused unknownPacketHandler interface by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4093](https://togithub.com/quic-go/quic-go/pull/4093)
- ackhandler: don't fail ECN validation if less than 10 testing packets are lost by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4088](https://togithub.com/quic-go/quic-go/pull/4088)
- ackhandler: fix ECN mangling detection when packets are lost by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4089](https://togithub.com/quic-go/quic-go/pull/4089)
- README: add Hysteria by [@tobyxdd](https://togithub.com/tobyxdd) in [https://github.com/quic-go/quic-go/pull/4085](https://togithub.com/quic-go/quic-go/pull/4085)
- update gomock to v0.3.0 by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4087](https://togithub.com/quic-go/quic-go/pull/4087)
**Full Changelog**: https://github.com/quic-go/quic-go/compare/v0.38.1...v0.39.0
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
v0.38.1
->v0.39.0
Release Notes
quic-go/quic-go (github.com/quic-go/quic-go)
### [`v0.39.0`](https://togithub.com/quic-go/quic-go/releases/tag/v0.39.0) [Compare Source](https://togithub.com/quic-go/quic-go/compare/v0.38.1...v0.39.0) #### New Features - quic-go now uses feeds ECN signals into its congestion controller ([#4059](https://togithub.com/quic-go/quic-go/issues/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](https://datatracker.ietf.org/doc/html/rfc9000#section-13.4) 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](https://datatracker.ietf.org/doc/html/rfc9114#section-8.1) defined in RFC 9114: [#4039](https://togithub.com/quic-go/quic-go/issues/4039) #### Other Changes - The key used to encrypt resumption tokens can now be configured using using `Transport.TokenGeneratorKey`: [#4066](https://togithub.com/quic-go/quic-go/issues/4066) - The RTT is now saved in session tickets, even when not using 0-RTT, allowing for faster session resumption: [#4042](https://togithub.com/quic-go/quic-go/issues/4042) - The reason for dial cancelations is now returned, when the context is canceled using a `context.CancelCauseFunc`: [#4078](https://togithub.com/quic-go/quic-go/issues/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](https://groups.google.com/g/golang-announce/c/Fm51GRLNRvM) for details. #### Breaking Changes - `Config.DisableVersionNegotiationPackets` was moved to the `Transport`: [#4047](https://togithub.com/quic-go/quic-go/issues/4047) - `Config.MaxTokenAge` was moved to the `Transport`: [#4084](https://togithub.com/quic-go/quic-go/issues/4084) - `Config.MaxRetryTokenAge` was removed. The age limit for Retry tokens is now set to twice the handshake timeout: [#4064](https://togithub.com/quic-go/quic-go/issues/4064) - The handshake timeout is now set to twice the handshake idle timeout: [#4063](https://togithub.com/quic-go/quic-go/issues/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](https://togithub.com/quic-go/quic-go/issues/4082) #### Please support quic-go! Is your project / company relying on quic-go? Please consider [funding the project](https://togithub.com/sponsors/marten-seemann). Any support is highly appreciated! #### Changelog - ci: fix integration test running with and without GSO by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4043](https://togithub.com/quic-go/quic-go/pull/4043) - ci: fix syntax error in integration test workflow by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4048](https://togithub.com/quic-go/quic-go/pull/4048) - fix flaky version negotiation connection unit test by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4052](https://togithub.com/quic-go/quic-go/pull/4052) - switch from unmaintained golang/mock to go.uber.org/mock by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4050](https://togithub.com/quic-go/quic-go/pull/4050) - move the DisableVersionNegotiationPackets flag to the Transport by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4047](https://togithub.com/quic-go/quic-go/pull/4047) - move GSO control message handling to the oobConn by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4056](https://togithub.com/quic-go/quic-go/pull/4056) - integration tests: fix connection timeout in 0-RTT test by [@tanghaowillow](https://togithub.com/tanghaowillow) in [https://github.com/quic-go/quic-go/pull/4060](https://togithub.com/quic-go/quic-go/pull/4060) - ackhandler: rename variables to follow RFC 9002 terminology by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4062](https://togithub.com/quic-go/quic-go/pull/4062) - ci: update GitHub checkout and setup-go actions to v4 by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4067](https://togithub.com/quic-go/quic-go/pull/4067) - update qtls-go1-20 to v0.3.4 by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4068](https://togithub.com/quic-go/quic-go/pull/4068) - remove TLS post-handshake message reassembly logic by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4073](https://togithub.com/quic-go/quic-go/pull/4073) - ackhandler: use the receive time of the Retry packet for RTT estimation by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4070](https://togithub.com/quic-go/quic-go/pull/4070) - set the handshake timeout to twice the handshake idle timeout by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4063](https://togithub.com/quic-go/quic-go/pull/4063) - remove Config.MaxRetryTokenAge, set it to the handshake timeout by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4064](https://togithub.com/quic-go/quic-go/pull/4064) - randomize the serialization order of control frames by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4069](https://togithub.com/quic-go/quic-go/pull/4069) - add ECN support by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4059](https://togithub.com/quic-go/quic-go/pull/4059) - save the RTT in non-0-RTT session tickets by [@tanghaowillow](https://togithub.com/tanghaowillow) in [https://github.com/quic-go/quic-go/pull/4042](https://togithub.com/quic-go/quic-go/pull/4042) - remove duplicate mocks for the Tracer and the ConnectionTracer by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4076](https://togithub.com/quic-go/quic-go/pull/4076) - ackhandler: detect ECN mangling by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4080](https://togithub.com/quic-go/quic-go/pull/4080) - ci: clean up Codecov ignore list by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4081](https://togithub.com/quic-go/quic-go/pull/4081) - expose GSO usage through ConnectionState by [@birneee](https://togithub.com/birneee) in [https://github.com/quic-go/quic-go/pull/4083](https://togithub.com/quic-go/quic-go/pull/4083) - add a Transport config option for the key used to encrypt tokens by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4066](https://togithub.com/quic-go/quic-go/pull/4066) - http09: increase the startup timeout in tests by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4071](https://togithub.com/quic-go/quic-go/pull/4071) - ci: fail if any Go files contain an ignore directive by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4055](https://togithub.com/quic-go/quic-go/pull/4055) - ci: combine the go generate workflow with the linting workflow by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4053](https://togithub.com/quic-go/quic-go/pull/4053) - integrate ClusterFuzzLite by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4034](https://togithub.com/quic-go/quic-go/pull/4034) - http3: introduce an HTTP/3 error type by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4039](https://togithub.com/quic-go/quic-go/pull/4039) - make the logging.Tracer and logging.ConnectionTracer a struct by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4082](https://togithub.com/quic-go/quic-go/pull/4082) - move MaxTokenAge configuration option to the Transport by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4084](https://togithub.com/quic-go/quic-go/pull/4084) - return the cancellation cause for cancelled dials by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4078](https://togithub.com/quic-go/quic-go/pull/4078) - remove unused unknownPacketHandler interface by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4093](https://togithub.com/quic-go/quic-go/pull/4093) - ackhandler: don't fail ECN validation if less than 10 testing packets are lost by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4088](https://togithub.com/quic-go/quic-go/pull/4088) - ackhandler: fix ECN mangling detection when packets are lost by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4089](https://togithub.com/quic-go/quic-go/pull/4089) - README: add Hysteria by [@tobyxdd](https://togithub.com/tobyxdd) in [https://github.com/quic-go/quic-go/pull/4085](https://togithub.com/quic-go/quic-go/pull/4085) - update gomock to v0.3.0 by [@marten-seemann](https://togithub.com/marten-seemann) in [https://github.com/quic-go/quic-go/pull/4087](https://togithub.com/quic-go/quic-go/pull/4087) **Full Changelog**: https://github.com/quic-go/quic-go/compare/v0.38.1...v0.39.0Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.