Releases: Leberkas-org/TurboHTTP
Releases · Leberkas-org/TurboHTTP
v3.0.0-alpha.3
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
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...
v3.0.0-alpha.1
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
- update config docs (b7b751f)
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
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)