Skip to content

Releases: Leberkas-org/TurboHTTP

v3.0.0-alpha.3

11 Jun 15:55

Choose a tag to compare

v3.0.0-alpha.3 Pre-release
Pre-release

3.0.0-alpha.3 (2026-06-11)

Features

  • client: add CONNECT support (99448da)

Documentation

  • align option references and client API docs with current code (4c3f186)

v3.0.0-alpha.2

11 Jun 11:30

Choose a tag to compare

v3.0.0-alpha.2 Pre-release
Pre-release

3.0.0-alpha.2 (2026-06-11)

Features

  • client: default timeout for channel path + CancelPendingRequests drain (fd4bf5e)
  • client: expose pipe buffer tuning via TurboClientOptions (9773bab)
  • client: propagate effective CancellationToken onto request options (9602238)
  • h10: per-request cancellation with disconnect (6b51616)
  • h11: per-request cancellation with pipelining awareness (3b01383)
  • h2: emit RST_STREAM on per-request cancellation (323097d)
  • h3: emit STOP_SENDING on per-request cancellation (0cbe4d9)
  • pipe transport, body redesign, server simplification (5281774)
  • protocol: add CancellationToken infrastructure for per-request cancel (e74d9d2)
  • server: Add transport buffer options (d2cc47f)
  • server: expose TransportBufferOptions with protocol-optimized defaults (3857fc9)
  • stage: register per-request CancellationToken callbacks in connection stage (bcb808e)

Bug Fixes

  • bench: add 30s timeout guard to all benchmark iterations (82b1cb7)
  • bench: add 30s timeout to all benchmark clients (48fe358)
  • bench: add CancellationToken timeout to all warmup and SendAsync calls (b9cd7e0)
  • bench: add IterationCleanup drain for streaming benchmarks (a7be4f4)
  • bench: align H3 client MaxConcurrentStreams with Kestrel default (564e753)
  • bench: drain stale responses at start of each streaming iteration (be01236)
  • bench: drop CL=4096 from streaming benchmarks (564968a)
  • benchmarks: protocol-aware fan-out limits and scaled timeouts (575375e)
  • bench: prevent benchmark reports from overwriting previous runs (fa5d3bd)
  • bench: prevent streaming benchmark deadlocks (a249088)
  • bench: raise QUIC stream limit and harden streaming benchmarks (9a54267)
  • bench: restore CL=4096 for streaming benchmarks (a02761a)
  • bench: switch heavy benchmarks to /upload route + throttle streaming writer (daab86a)
  • body: H10 truncated body error propagation, H11 chunked boundary deadlock (561ff28)
  • body: QueuedBodyReader.ReadAsync now respects CancellationToken (fb5c55a)
  • body: resolve pending ReadAsync on Reset to prevent InvalidOperationException (bc21107)
  • ci: Disable parallel test modules (a1d783f)
  • ci: run two test modules in parallel (0ed7e7f)
  • client flush backpressure, QUIC pipe options, test fixes (bf3effd)
  • e2e: stabilize E2E integration tests (cbc2252)
  • e2e: use ctx.RequestAborted instead of TestContext CancellationToken (e6c6f56)
  • h10/server: dispatch streaming request bodies before full receipt (4ed9c42)
  • h2/server: partial send in DrainOutboundBuffer when flow control window < chunk (2f57852)
  • h2: track stream-level send window in FlowController.OnDataSent (f31784e)
  • http2/3: correct body read pending state (f8d2485)
  • http2: make QueuedBodyReader thread-safe and fail truncated response bodies (ba89a9c)
  • http: fix http version comparison and null checks (91fdab1)
  • http: Improve flow control and stream draining (6ec29cb)
  • quic: update submodule — drain pending acquires on release/establish (1defdbb)
  • quic: update submodule — server stream accept loop exception handling (63a1319)
  • quic: update submodule with QUIC accept loop resilience (7cee693)
  • Remove unused OpenTelemetry package (93a9f26)
  • server: always call TryPullResponse from OnNetworkPull (e18b2e3)
  • server: split buffered body into MAX_FRAME_SIZE-compliant DATA frames (a64f68b)
  • tcp: update submodule with concurrent PipeWriter access fix (ef32fea)
  • test: Disable parallel test collections (0dae2a3)
  • test: make integration test infrastructure parallel-safe (9dce6a6)
  • test: raise client timeout in LargePayloadSpec for CI contention (65dd73f)

Performance

  • client: remove .Async() boundary from EndpointDispatchStage (f4a1bb4)
  • h3: cache QPACK encode buffer across Encode() calls (1ff7130)
  • h3: pool FrameDecoder and rent StreamState from pool in server (49b3032)
  • h3: reduce QUIC pipe MinimumSegmentSize from 16KB to 4KB (35e45fa)
  • pass sizeHint to GetMemory() + sync body read bypass for H10 server (4b65fb3)
  • pool TransportData wrappers + convert PipeTo messages to readonly record structs (f27b895)
  • reduce QueuedBodyReader default capacity from 64 to 8 (1988ddb)
  • right-size body drain buffers using content-length (5e54fe3)
  • server: buffered body fast path for all protocol SMs ([8823dec](8823...
Read more

v3.0.0-alpha.1

02 Jun 04:45

Choose a tag to compare

v3.0.0-alpha.1 Pre-release
Pre-release

3.0.0-alpha.1 (2026-06-02)

Features

  • client: Add WithFirstPartyContext and WithTimeout (4debf0f)
  • Consolidate timer names with constants (2c5623c)
  • h3: connection-error teardown on the server (stop swallow, close, RST) (32ec3f9)
  • http2: adaptive receive-window growth in FlowController (client-gated) (028c49e)
  • http2: adaptive window-scaling client options + projection (8537293)
  • http2: add RttEstimator for PING-based min-RTT measurement (0995bb1)
  • http2: add WindowScaler BDP growth formula (6a6413d)
  • http2: enable adaptive window scaling (fd722ad)
  • http2: Improve HTTP/2 protocol robustness and RFC compliance (b67bc5d)
  • http2: Improve interim response and trailer handling (a64314c)
  • http2: project client http2 options to encoder (2762854)
  • http2: raise per-stream receive window to 1 MB + E2E flow control tests (ce844b5)
  • http2: validate client stream IDs per RFC 9113 §5.1.1 (0ceaad9)
  • http2: wire client adaptive window scaling + RTT probes (5cf1549)
  • http3: improve session manager logic (d4eb2ac)
  • http3: process inbound SETTINGS and reject duplicates (4e73f7c)
  • options: Rename body size properties (9467b52)
  • options: Rename maxEndpointSubstreams to maxConcurrentEndpoints (24b8c5e)
  • security: extend CVE-class protections to HTTP/3 + close HPACK (322a53b)
  • server: add actor-based FairShareCoordinator (dc3d6c6)
  • server: add ConnectionActor for per-connection lifecycle (9ea7cb2)
  • server: add generic DynamicHub keyed fan-out stage (fb9bb12)
  • server: extract W3C trace context from inbound requests (1c0124b)
  • server: introduce ServerPipeline owning shared + per-connection flow (cb81c9c)
  • server: validate options on startup (e532447)
  • streams: migrate DynamicHub tests and impl (21c3c4b)

Bug Fixes

  • client: propagate handler exceptions, wire per-request timeout, enforce SameSite (3bd9ddd)
  • client: resolve typed clients via ActivatorUtilities instead of cast (b815e42)
  • http2: reject empty :path pseudo-header for non-CONNECT requests (56876e3)
  • server: close idle H2/H3 connections on keep-alive timeout (86fae26)
  • server: pull next pipelined response after an outbound body completes (a78c352)

Documentation

Refactoring

  • client: move H1.1 MaxPipelineDepth out of decoder options (7e47256)
  • http2: move RttEstimator ownership into FlowController (db3e376)
  • http2: Simplify session manager constructor (5bf8b84)
  • rename instrumentation extensions (28c8c07)
  • replace local Servus.Akka with git submodule (7bd8566)
  • server: FairShareAdmissionStage + ServerPipeline use actor-based coordinator (67f875c)
  • server: migrate H1.0/H1.1 data-rate clock to TimeProvider (8a9b5b0)
  • server: move DynamicHub to shared Streams.Stages namespace (6f97dc2)
  • server: rewrite ListenerActor to spawn ConnectionActor per connection (638a946)
  • server: wire ServerPipeline, remove ResponseDispatcherHub (0667861)
  • simplify constructor parameter passing (86363a4)
  • transport: inject TimeProvider into connection pool leases for deterministic eviction (d878aa2)

v3.0.0-alpha

31 May 21:23

Choose a tag to compare

v3.0.0-alpha Pre-release
Pre-release

3.0.0-alpha (2026-05-31)

⚠ BREAKING CHANGES

  • publish accumulated v3 work as alpha prereleases

Features

  • ci: Add release-next to CI triggers (e1407f6)
  • publish accumulated v3 work as alpha prereleases (e8b6e9a)
  • server: connection-per-stage pipeline with fair-share dispatch (c49104f)
  • server: data-rate monitoring and protocol server option resolution (ad4d0b7)
  • server: enforce four previously-unwired server options (a9b581c)
  • server: per-protocol connection options with resolved limit projections (ea1eb2c)
  • servus: add TransportBuffer.Wrap for zero-copy buffer handoff (d52d0bf)

Bug Fixes

  • tests: adjust maxParallelThreads to 0.5x (611e5b3)

Documentation

  • architecture: update engine and pipeline descriptions (e5331e7)
  • client: correct namespaces, option defaults, and examples (55cadd5)
  • diagrams: fix LikeC4 client pipeline order and component metadata (3e3e6e2)
  • server: align option reference with code, fix stale architecture (9043b06)
  • server: reflect ASP.NET Core IServer architecture and new options (7b7c233)
  • site: exclude internal docs from build, fix meta description, wire orphan pages (1906807)

Refactoring

  • client: drop Validate from client option records (ccf32c2)
  • client: flatten client protocol options and project via extensions (b0c4e1f)
  • codec: bundle body encoder/decoder factory params into options records (e75fce7)
  • codec: project BodyDecoderOptions via ToBodyDecoderOptions extension (d0bd68e)
  • protocol: streamline body encoders/decoders and content classification (a1a1a7e)
  • server: project BodyEncoderOptions via ToBodyEncoderOptions extension (af232d6)
  • server: remove unused form and header context abstractions (22c84cc)
  • servus: convert backing fields to auto-properties across transport and IO stages (9440aca)