Skip to content

v1.2.0

Choose a tag to compare

@lesismal lesismal released this 15 Oct 10:58
· 564 commits to main since this release
  1. Serve several protocols on one engine, by port or by first bytes (multiproto), with a new SOCKS5/SOCKS4/SOCKS4a server and dialer, and CONNECT on HTTP/1.x, 2 and 3 with a ready ConnectProxy.
  2. TLS and QUIC handshakes without a worker goroutine (TLS 1.2/1.3 client and server, GetCertificate, mTLS), plus 0-RTT for TLS over TCP and HTTP/3.
  3. Streaming on HTTP/1, 2 and 3: client request bodies, large client response bodies via ClientResponse.OnBody, streamed responses with backpressure and write timeouts, Context.SaveBody/SaveBodyResumable.
  4. New APIs: Engine.Shutdown for a graceful drain, Context.Context, SetReadDeadline/SetWriteDeadline, Config.CoalesceWrites and Connection.SetCoalesceWrites, websocket PreparedMessage, JSON via encoding/json/v2 and String/Data/XML/HTML/File helpers on Context.
  5. kqueue backend on FreeBSD, NetBSD, OpenBSD and DragonFly.
  6. Performance: smaller Connection and websocket state, fewer locks and allocations on the send path, busy pollers kept out of the runtime netpoller.
  7. Many fixes across http, http3, tls, websocket, arpc and grpc, with test coverage raised throughout; MIT license added.

Breaking: http.HandlerFunc now takes only *Context.

Full changelog: v1.1.0...v1.2.0