Skip to content

v3.60.0 Release

Latest

Choose a tag to compare

@imroc imroc released this 30 Jul 08:58

Breaking Changes

  • SetTLSFingerprintSpec API change — The signature changed from SetTLSFingerprintSpec(spec *utls.ClientHelloSpec) to SetTLSFingerprintSpec(fn func() utls.ClientHelloSpec). This fixes a bug where reusing the same spec across multiple TLS handshakes caused the second handshake to fail (#504). The factory function ensures a fresh spec is generated per connection. PR #507 by @1992w.

New Features

  • SetMaxResponseSize — Limit response body size at the client or request level. When Content-Length is known and exceeds the limit, the body is closed without reading. For chunked responses, a streaming limit reader stops at the configured size and returns ErrResponseBodyTooLarge. Closes #406. PR #512 by @ManuelReschke.

  • SOCKS4 and SOCKS4a proxy supportsocks4:// and socks4a:// proxy URLs are now supported. SOCKS4 resolves domain names locally to IPv4; SOCKS4a sends the domain name to the proxy for remote resolution. Closes #473. PR #510 by @ManuelReschke.

  • HTTP QUERY method — Added Request.Query(url) and Request.MustQuery(url) for the HTTP QUERY method defined in RFC 10008 (Proposed Standard, June 2026). PR #508 by @thatwasyahya.

  • Retry on before-request errors — Retry logic now covers errors from before-request middleware, not just transport errors. PR #499 by @bao-io.

Bug Fixes

  • Stream multipart uploads without buffering files — Multipart uploads now stream directly to the HTTP transport via io.Pipe instead of building the complete body in a bytes.Buffer. Memory usage is bounded for large file uploads. Fixes #433. PR #505 by @ManuelReschke.

Dependencies

  • quic-go v0.60.0 → v0.61.0
  • klauspost/compress v1.18.2 → v1.19.1
  • icholy/digest v1.1.0 → v1.2.0
  • google/go-querystring v1.1.0 → v1.2.0
  • andybalholm/brotli v1.2.0 → v1.2.2
  • golang.org/x/net v0.55.0 → v0.57.0
  • golang.org/x/text v0.37.0 → v0.40.0
  • golang.org/x/crypto v0.51.0 → v0.54.0 (indirect)
  • golang.org/x/sys v0.45.0 → v0.47.0 (indirect)