diff --git a/CHANGELOG.md b/CHANGELOG.md index 825c32f0..31ebea9d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1 +1,441 @@ # Changelog + +## [0.1.0](https://github.com/Leberkas-org/GaudiHTTP/compare/v0.1.0...v0.1.0) (2026-07-08) + + +* update logos for GaudiHTTP rebrand ([c0ff90c](https://github.com/Leberkas-org/GaudiHTTP/commit/c0ff90c63910cdd087ad6cd508a0b4b7b3353c30)) + + +### Features + +* **benchmarks:** add alloc trace harness ([731cb16](https://github.com/Leberkas-org/GaudiHTTP/commit/731cb1629085999f5b2816fbb2427a7161da7c5a)) +* **benchmarks:** add client-side benchmarks (--protocol client-h1|h2|h3) ([c016e15](https://github.com/Leberkas-org/GaudiHTTP/commit/c016e153cbe6b1b099e5f8d1e2ddf4f83498627f)) +* **benchmarks:** add H2 and H3 loadtest support (--protocol h2|h3) ([961156d](https://github.com/Leberkas-org/GaudiHTTP/commit/961156da17965f7e9c55a2886ad7ea03d509e748)) +* **benchmarks:** add in-memory state-machine benchmarks (--protocol mem-h1|mem-h2) ([04eef35](https://github.com/Leberkas-org/GaudiHTTP/commit/04eef35d6b3b1119f5cf6c0585fc61f198d86246)) +* **benchmarks:** add per-type allocation profiling via BDN custom exporter ([a1cd11c](https://github.com/Leberkas-org/GaudiHTTP/commit/a1cd11c9446a34d0bc9362085f2604bda333549d)) +* **benchmarks:** allocation JSON export + static Chart.js report ([a46c7d9](https://github.com/Leberkas-org/GaudiHTTP/commit/a46c7d9b86377df1fe336b7ad5e134bc38032606)) +* **benchmarks:** cacheable/uncacheable/slow test routes + URI helpers ([dd42f5e](https://github.com/Leberkas-org/GaudiHTTP/commit/dd42f5e1ec815dee2a2f97d17a51053375ee4c73)) +* **benchmarks:** client cache-hit goodput vs HttpClient (Client/Caching) ([907960b](https://github.com/Leberkas-org/GaudiHTTP/commit/907960b8a6583569d2be7166a8cc32d9dbcc0280)) +* **benchmarks:** dedicated Pool and ClientAllocation benchmarks ([16a94d1](https://github.com/Leberkas-org/GaudiHTTP/commit/16a94d19f63f87a16737f3b4f31ffc720aaf0654)) +* **benchmarks:** heavy concurrent MB transfers vs HttpClient (Client/Throughput) ([96da011](https://github.com/Leberkas-org/GaudiHTTP/commit/96da0115cc247ca9dea04279bb3d8f1d857536ae)) +* **benchmarks:** HttpClient allocation baseline + BodySize axis (Client/Allocation) ([41c9824](https://github.com/Leberkas-org/GaudiHTTP/commit/41c9824807cf3441ef59ced72f9c2186048f26be)) +* **benchmarks:** out-of-process server, per-type configs, process-wide allocation ([02a049b](https://github.com/Leberkas-org/GaudiHTTP/commit/02a049bbd0d90c1a6f2dd889125e0bf43626f6ef)) +* **benchmarks:** per-run timestamped artifacts folder ([4ca7781](https://github.com/Leberkas-org/GaudiHTTP/commit/4ca7781a5f94eb91e83c2eadea043edeac1e2965)) +* **benchmarks:** sustained streaming pipeline vs HttpClient (Client/Streaming) ([3d67673](https://github.com/Leberkas-org/GaudiHTTP/commit/3d67673fad47b97c5d913a70a67103ab0d42f958)) +* **body:** add generic IBodyDrainTarget<T>, BodyDrainSlot<T>, BodyPumpHelper, ChunkedFramingHelper ([adc53da](https://github.com/Leberkas-org/GaudiHTTP/commit/adc53da5fd687173117514b835000b85f51eb0e6)) +* **body:** add IResettable to inbound types, create BodyReaderPoolExtensions ([79120c2](https://github.com/Leberkas-org/GaudiHTTP/commit/79120c2721bbf192170d2ff72d823288107a2b8b)) +* **body:** add SerialBodyPump for H1.x body drain with capacity model and starvation guard ([3ef519e](https://github.com/Leberkas-org/GaudiHTTP/commit/3ef519e66e93fcd5da982526de90ce77c4713387)) +* **body:** add shared drain interfaces, messages, and slot types ([ad4d99f](https://github.com/Leberkas-org/GaudiHTTP/commit/ad4d99ffc84ce931896eee79fb7fdaf5a737b1fd)) +* **body:** enable buffered response/request bodies for H2/H3 when Content-Length <= threshold ([837ddb4](https://github.com/Leberkas-org/GaudiHTTP/commit/837ddb400dca3d8ed9606eed4dbb5d4ac83d9f84)) +* **body:** implement BodyPumpBase with credit system and adaptive budget ([3ddafe9](https://github.com/Leberkas-org/GaudiHTTP/commit/3ddafe9f1a58896c22f8cefe3f6171abcc812491)) +* **body:** refactor pumps to generic BodyDrainSlot<T> + BodyPumpHelper ([1237e9d](https://github.com/Leberkas-org/GaudiHTTP/commit/1237e9d56ed9478fcbf50da53f3425cb291ebdb7)) +* **body:** restore BodyDrainScheduler with AIMD, limbo, and starvation guard ([acc3b00](https://github.com/Leberkas-org/GaudiHTTP/commit/acc3b0007078ef60832dc732aa41a1cabd971210)) +* **body:** unseal BodyDrainSlot, add FlowControlledDrainSlot ([fdc71e6](https://github.com/Leberkas-org/GaudiHTTP/commit/fdc71e6a71aa36535b3ca760190ba391190e8621)) +* **body:** update IBodyDrainTarget interface and remove DrainContinue ([6d52be1](https://github.com/Leberkas-org/GaudiHTTP/commit/6d52be189cd9df40754b69669e08ab8a8de0fac7)) +* **body:** wire OnOutboundFlushed → AddCredit across all protocols ([bb12cb3](https://github.com/Leberkas-org/GaudiHTTP/commit/bb12cb3bdf3211a531af07661707d78ea7248907)) +* **client:** add CONNECT support ([99448da](https://github.com/Leberkas-org/GaudiHTTP/commit/99448dabaa6198c11f644c4e64dd3717bc3afd68)) +* **client:** default timeout for channel path + CancelPendingRequests drain ([fd4bf5e](https://github.com/Leberkas-org/GaudiHTTP/commit/fd4bf5e4b1b57029e6907bc8537c61fc0cf4a505)) +* **client:** expose DefaultRequestTimeout as configurable option ([6b967fe](https://github.com/Leberkas-org/GaudiHTTP/commit/6b967fe856927158a5209b0a29486c3b1cee9822)) +* **client:** expose stream retry backoff as configurable options ([bc4e6ff](https://github.com/Leberkas-org/GaudiHTTP/commit/bc4e6ff34a26e2cee21937329b847f6b820df5e2)) +* **client:** forward 1xx informational responses to caller ([046a833](https://github.com/Leberkas-org/GaudiHTTP/commit/046a833d38800e1b2b6aef070634ba36f883454e)) +* **client:** propagate effective CancellationToken onto request options ([9602238](https://github.com/Leberkas-org/GaudiHTTP/commit/9602238d85911e8a846e4f1cf4d5092a7dfd1d2e)) +* **client:** shared exponential reconnect backoff with jitter ([bb8d932](https://github.com/Leberkas-org/GaudiHTTP/commit/bb8d9323a1fa385f274d9208d481f0ab1e5ae4e6)) +* **docs:** Add 'When to Use' page and nav link ([bd5c6f3](https://github.com/Leberkas-org/GaudiHTTP/commit/bd5c6f3b9057e3819b19b0ac184a41e16d1a8eca)) +* **h1-server:** add chunked trailer section encoding to ChunkedFramingHelper ([6d25f60](https://github.com/Leberkas-org/GaudiHTTP/commit/6d25f60a33971a9782725a751aa489462363aaec)) +* **h1-server:** integrate trailer emission into Http11ServerStateMachine ([58a3866](https://github.com/Leberkas-org/GaudiHTTP/commit/58a38669db092cd6b23ada92bc78794cccf83ac9)) +* **h1-server:** support 1xx informational responses via SendInformational ([7aaf79c](https://github.com/Leberkas-org/GaudiHTTP/commit/7aaf79c6ead596eeefe4982d8c6393986d84754e)) +* **h10:** per-request cancellation with disconnect ([6b51616](https://github.com/Leberkas-org/GaudiHTTP/commit/6b516168f3403b7eaf8a506b895065cad1a81e93)) +* **h11:** per-request cancellation with pipelining awareness ([3b01383](https://github.com/Leberkas-org/GaudiHTTP/commit/3b01383d2ef45ec000054a66ee72e35c8dd97aed)) +* **h2-server:** support 1xx informational responses ([242f00c](https://github.com/Leberkas-org/GaudiHTTP/commit/242f00cfdfc6dfc964bf7796921cf52150193504)) +* **h2:** add BodyDrainScheduler with AIMD, limbo zero-copy, and slot pooling ([c020598](https://github.com/Leberkas-org/GaudiHTTP/commit/c02059832e11ec7edb5c448c8e0b2904f4486031)) +* **h2:** add GetStreamSendWindow to FlowController ([c57d65b](https://github.com/Leberkas-org/GaudiHTTP/commit/c57d65bb8d0b35b17b6a100c01e9b9e9880e88a8)) +* **h2:** add Reserve/Refund to FlowController for window reservation ([b1ef132](https://github.com/Leberkas-org/GaudiHTTP/commit/b1ef13254b03b911cf20581e5bf5f1a5849ab1c2)) +* **h2:** emit RST_STREAM on per-request cancellation ([323097d](https://github.com/Leberkas-org/GaudiHTTP/commit/323097d26ec2c21fd40c53ad6c9beb08793d2e3a)) +* **h3-server:** add EncodeTrailers to Http3ServerEncoder ([9671ab0](https://github.com/Leberkas-org/GaudiHTTP/commit/9671ab00403008702ace25f13aa778de968ab7d0)) +* **h3-server:** integrate trailer emission into Http3ServerSessionManager ([6febb63](https://github.com/Leberkas-org/GaudiHTTP/commit/6febb63581323d7f3ebff1a101884b0701eac759)) +* **h3-server:** support 1xx informational responses ([efbfb2a](https://github.com/Leberkas-org/GaudiHTTP/commit/efbfb2a5aa2886de47a1a1c79c39253d47f5055b)) +* **h3:** add MultiplexedBodyPump with fixed cap, slot pooling, and starvation guard ([212ffb1](https://github.com/Leberkas-org/GaudiHTTP/commit/212ffb1bae92a69bbef90c78f9aac95fbb48879c)) +* **h3:** emit STOP_SENDING on per-request cancellation ([0cbe4d9](https://github.com/Leberkas-org/GaudiHTTP/commit/0cbe4d9a19476c4daf461c7a0988aa66df0b45d2)) +* **h3:** trace client request/response lifecycle at Debug/Trace ([68ec24b](https://github.com/Leberkas-org/GaudiHTTP/commit/68ec24b9e9ab121f5bb2ec6d4f2bd96eede9ef95)) +* Improve HTTP trailers and informational responses ([4aeb013](https://github.com/Leberkas-org/GaudiHTTP/commit/4aeb01342f84e435ab514e7f1120cc44fb41e0af)) +* **lifecycle:** ClientStreamManager differentiated supervisor, Watch+Terminated cleanup ([737be81](https://github.com/Leberkas-org/GaudiHTTP/commit/737be8109508ed8ff82ec6a01814f879c4267ebc)) +* **lifecycle:** ServerSupervisorActor failure responses, drain timeout, Watch+Terminated ([1baad6d](https://github.com/Leberkas-org/GaudiHTTP/commit/1baad6d42fdac7c491972aee3cf5495c76097e4a)) +* **options:** add three-tier body buffer resolution (global/per-direction/per-protocol) ([16a9104](https://github.com/Leberkas-org/GaudiHTTP/commit/16a91043e83eb6afd9327087b2f23d8025df0516)) +* **options:** expose chunked encoding limits (MaxChunkedControlLineLength, MaxChunkedTrailerSize) ([4645258](https://github.com/Leberkas-org/GaudiHTTP/commit/4645258dd7d659bde39d7c030e40e7cba2209733)) +* **options:** wire resolved chunk size to remaining body pumps + add client resolution helpers ([bc6c1b8](https://github.com/Leberkas-org/GaudiHTTP/commit/bc6c1b8dd7a95def3337de5fe6822f3bffa0a1e5)) +* **pooling:** add Microsoft.Extensions.ObjectPool primitive (IResettable + policy) ([cbad4d6](https://github.com/Leberkas-org/GaudiHTTP/commit/cbad4d610eb7b664ed8fb4491146247cbd74528a)) +* **pooling:** add Poolable<TSelf> self-return base + singleton ConnectionObjectPool ([d0cf4d4](https://github.com/Leberkas-org/GaudiHTTP/commit/d0cf4d4e5d5cf04ff51adad74c885300b1727a0a)) +* **pooling:** expose per-connection PoolContext on the server stage seam ([af2c9ec](https://github.com/Leberkas-org/GaudiHTTP/commit/af2c9eccdae2ecd54f287c5ea5b4d062d21d844a)) +* **pooling:** per-connection ConnectionPoolContext ([2245c7f](https://github.com/Leberkas-org/GaudiHTTP/commit/2245c7f55b4ed774d59a9fa91fc042f2046b8d57)) +* **protocol:** add CancellationToken infrastructure for per-request cancel ([e74d9d2](https://github.com/Leberkas-org/GaudiHTTP/commit/e74d9d2bea936d953c929ddcea761e5967302036)) +* Rename TurboResponseHeaderDictionary to TurboHeaderDictionary ([9915a65](https://github.com/Leberkas-org/GaudiHTTP/commit/9915a65448c5b2b20a69b75a69281e4f907c65c9)) +* **server:** add IHttpRequestTrailersFeature support ([74701e9](https://github.com/Leberkas-org/GaudiHTTP/commit/74701e927f4edf17e35ccb9bbc849662472de722)) +* **server:** Add ReceiveBufferHint option ([6ebd4e3](https://github.com/Leberkas-org/GaudiHTTP/commit/6ebd4e39cd888c6b720a629f2b953ae18eb3c237)) +* **server:** add SetReadOnly freeze semantics to TurboResponseHeaderDictionary ([5c4fe19](https://github.com/Leberkas-org/GaudiHTTP/commit/5c4fe19a08c1a8382f071f0a3adfb4491e0cbe72)) +* **server:** Add transport buffer options ([d2cc47f](https://github.com/Leberkas-org/GaudiHTTP/commit/d2cc47f3b5a2eb2a3b7e008ed5cfc5314f0d2baa)) +* **server:** add TurboInformationalResponseFeature for 1xx responses ([f738540](https://github.com/Leberkas-org/GaudiHTTP/commit/f73854078a9774b61c57743f2e57c23a160bca73)) +* **server:** auto-send 100 Continue for Expect: 100-continue requests ([7f2d354](https://github.com/Leberkas-org/GaudiHTTP/commit/7f2d35462b9e9504d1169f476b4b1ed991475d80)) +* **server:** enforce cleartext per-endpoint protocols + wire connection logging ([08de6d5](https://github.com/Leberkas-org/GaudiHTTP/commit/08de6d5c27b3bcf9fc90ab3ce0e137e3faad8745)) +* **server:** expose MaxProtocolSniffBytes as configurable option ([7b0a0a7](https://github.com/Leberkas-org/GaudiHTTP/commit/7b0a0a7c2ea8c66e136fea89f60e5790fa4642e0)) +* **server:** expose RapidResetDetectionWindow as configurable option ([3c5c1a2](https://github.com/Leberkas-org/GaudiHTTP/commit/3c5c1a239eabfd7bfeb583cb0bf8f6800c814cf8)) +* **server:** expose StartupTimeout as configurable option ([25317d7](https://github.com/Leberkas-org/GaudiHTTP/commit/25317d733041bf0a30e8ed3b5fb0906ce0da6c68)) +* **server:** expose TransportBufferOptions with protocol-optimized defaults ([3857fc9](https://github.com/Leberkas-org/GaudiHTTP/commit/3857fc9cc3883e7be455979d29c7a694923451cf)) +* **server:** handle ListenersFailed and DrainComplete.TimedOut in TurboServer ([93ea515](https://github.com/Leberkas-org/GaudiHTTP/commit/93ea5151036a30cf1889fa83f5e407d00835647d)) +* **server:** HTTP/3 mTLS, response-buffer limit wiring, per-endpoint protocols ([0630af3](https://github.com/Leberkas-org/GaudiHTTP/commit/0630af3ba3098d6a58581c308a527e8a9bf0bfb3)) +* **servus.akka:** Update subproject commit ([b5ee46e](https://github.com/Leberkas-org/GaudiHTTP/commit/b5ee46ecefcd80e8e4ff855e28079acdc6017abf)) +* **stage:** register per-request CancellationToken callbacks in connection stage ([bcb808e](https://github.com/Leberkas-org/GaudiHTTP/commit/bcb808e6d807a88be870adcdadc390a29349849c)) + + +### Bug Fixes + +* auto-cleanup H2/H3 streams when response body is disposed unread ([58e6c2a](https://github.com/Leberkas-org/GaudiHTTP/commit/58e6c2a675645a33e61591287d34bb62816ff2ba)) +* **bench:** drop CL=4096 from streaming benchmarks ([564968a](https://github.com/Leberkas-org/GaudiHTTP/commit/564968a16dae2ded49a253ff99c43dc448409f6d)) +* **bench:** eliminate server benchmark NAs with readiness probe + warmup retry ([7651470](https://github.com/Leberkas-org/GaudiHTTP/commit/7651470c6724e8364ea943a1b129bf8f5068325d)) +* **benchmarks:** add missing [GlobalSetup] to cold-start benchmark classes ([54d85ac](https://github.com/Leberkas-org/GaudiHTTP/commit/54d85acebca5016a659bcd3da9d23ba42fcf6fd1)) +* **benchmarks:** clean up old trace files ([1557008](https://github.com/Leberkas-org/GaudiHTTP/commit/15570080f8e40f9c98bd304eb8e9000cb6ae825c)) +* **benchmarks:** prevent ActorSystem shutdown during BDN warmup iterations ([8de9fd1](https://github.com/Leberkas-org/GaudiHTTP/commit/8de9fd18c0747b1f506730977f8580d0b382c885)) +* **benchmarks:** protocol-aware fan-out limits and scaled timeouts ([575375e](https://github.com/Leberkas-org/GaudiHTTP/commit/575375ee8b08f863ed46e5290dc5beb2ce05c5cc)) +* **benchmarks:** set Version+VersionPolicy on cache baseline requests (h2c/h3 -> 400) ([88675d7](https://github.com/Leberkas-org/GaudiHTTP/commit/88675d7faf22eb32837adb46ba9985b484362509)) +* **benchmarks:** use default BenchmarkDotNet artifacts path (fixes multi-config run crash) ([587f943](https://github.com/Leberkas-org/GaudiHTTP/commit/587f943ebb2b304600a9e0a4cfcf6d2b66c19cc4)) +* **benchmarks:** use per-connection SocketsHttpHandler for H2/H3 driver ([3d86d7b](https://github.com/Leberkas-org/GaudiHTTP/commit/3d86d7bde34e1cceb2b76da7283c7c6846ed3916)) +* **bench:** restore CL=4096 for streaming benchmarks ([a02761a](https://github.com/Leberkas-org/GaudiHTTP/commit/a02761ad6d235ccf369b86c5b4aa70fe42b53363)) +* **bench:** switch heavy benchmarks to /upload route + throttle streaming writer ([daab86a](https://github.com/Leberkas-org/GaudiHTTP/commit/daab86a41a5cb62d4f810e4424546c9657dfdef8)) +* **body:** add inline AddCredit to all EmitDataFrames implementations ([5a1e0d0](https://github.com/Leberkas-org/GaudiHTTP/commit/5a1e0d0313bd31f2125e1816729cd683f78dc5ce)) +* **body:** fix Cancel stale-id leak and document IsStreamEligible contract ([6026f48](https://github.com/Leberkas-org/GaudiHTTP/commit/6026f48f508032a072fd3249ead7962f3405845f)) +* **body:** fix pump stall on async PipeReader streams ([b1644ce](https://github.com/Leberkas-org/GaudiHTTP/commit/b1644ce65ecfa73fb93f7c1ebdd55f52aa002872)) +* **body:** keep read in-flight across the force-async mailbox hop (large-body corruption) ([fc939b4](https://github.com/Leberkas-org/GaudiHTTP/commit/fc939b4208f019e8d051199df36006eb02c891c2)) +* **body:** prevent double slot cleanup on drain complete + fix test ([0c68d3f](https://github.com/Leberkas-org/GaudiHTTP/commit/0c68d3f761cd576cb3f2d6e93436c1424618f9ea)) +* **body:** QueuedBodyReader.ReadAsync now respects CancellationToken ([fb5c55a](https://github.com/Leberkas-org/GaudiHTTP/commit/fb5c55a48e2d1583f4d3328ee48b010fa100c740)) +* **body:** reclaim credit after synchronous read completion ([0550f0f](https://github.com/Leberkas-org/GaudiHTTP/commit/0550f0f3578e8da4aaa030897f939f9948f81060)) +* **body:** refund reserved connection window when a body read fails ([b57acb6](https://github.com/Leberkas-org/GaudiHTTP/commit/b57acb6399452894c5859ea338addf9d0654cbc3)) +* **body:** resolve pending ReadAsync on Reset to prevent InvalidOperationException ([bc21107](https://github.com/Leberkas-org/GaudiHTTP/commit/bc21107a5c2be2e00cd293dbba99faf10eb7616b)) +* **body:** restore client-side backpressure and remove sync credit reclaim ([4b7ccc4](https://github.com/Leberkas-org/GaudiHTTP/commit/4b7ccc44783af4171d813b02ffb0bf7d2d7459db)) +* **body:** retain HttpContent reference in drain slots to prevent GC disposal race ([9f3fa07](https://github.com/Leberkas-org/GaudiHTTP/commit/9f3fa0730ed8063b70b490f33fd50361519e12f2)) +* **body:** SerialBodyPump Cancel should not fire OnDrainComplete ([2491a11](https://github.com/Leberkas-org/GaudiHTTP/commit/2491a11f28b21ef7e8d7e48f3432ccd8324680fa)) +* **body:** stop compressed responses from poisoning the shared transport pool ([bdfffdf](https://github.com/Leberkas-org/GaudiHTTP/commit/bdfffdf2d279d8a0c09041032c36834a337c8a16)) +* **ci:** Disable parallel test modules ([a1d783f](https://github.com/Leberkas-org/GaudiHTTP/commit/a1d783ff137bbef145dde2d2dbbef7245e374bf4)) +* **ci:** run two test modules in parallel ([0ed7e7f](https://github.com/Leberkas-org/GaudiHTTP/commit/0ed7e7f2b11ea3e17a6ffe97108138c23f12451a)) +* client cpu usage ([0252109](https://github.com/Leberkas-org/GaudiHTTP/commit/0252109ce7c3a2d2ec55627c374073f5c16a94df)) +* **client:** add MaxConcurrentStreams defense-in-depth warning in H2/H3 EncodeRequest ([ec97db9](https://github.com/Leberkas-org/GaudiHTTP/commit/ec97db9e7b1900e66b5d910b92a90959bbcf1802)) +* **client:** bound HTTP/1.1 request body pump with outbound flush backpressure ([c76e9ee](https://github.com/Leberkas-org/GaudiHTTP/commit/c76e9ee6f081bd0394aa8618a1fdf508ff3d9650)) +* **client:** Correct request cancellation logic ([6c1b390](https://github.com/Leberkas-org/GaudiHTTP/commit/6c1b3904796b2b3ed81dbd9de89d0122ce0b4dd5)) +* **client:** decouple substream source creation from upstream pull gating ([7d0cb71](https://github.com/Leberkas-org/GaudiHTTP/commit/7d0cb71ed6906b87371eefa19fec83f007e836ac)) +* **client:** dispose response when PendingRequest version has advanced ([e2c48bb](https://github.com/Leberkas-org/GaudiHTTP/commit/e2c48bbdc0757768bde2616d6913f4cdbdf26b6c)) +* **client:** don't retry non-rewindable bodies; stop parked retries blocking intake ([a468db0](https://github.com/Leberkas-org/GaudiHTTP/commit/a468db04c9b777097a8ef57204d22204c5c26372)) +* **client:** honor RequestBodyChunkSize on HTTP/1.0; tidy client options ([da8a818](https://github.com/Leberkas-org/GaudiHTTP/commit/da8a818f2a310e6f8f46f03fc6a5d0a4f60d5ccd)) +* **client:** idempotency-safe replay and deterministic teardown for H1.1/H2/H3 ([0ebcaa2](https://github.com/Leberkas-org/GaudiHTTP/commit/0ebcaa20cddb46cd7bf1aae1a50cb3801b08a9b1)) +* **client:** isolate per-request enrichment failures from the shared ingress ([7644a92](https://github.com/Leberkas-org/GaudiHTTP/commit/7644a92181b3c2f07a45072e9e52ba7bd2ff3eaa)) +* **client:** O(1) in-flight request tracking to fix H2 high-concurrency CPU collapse ([0bfff90](https://github.com/Leberkas-org/GaudiHTTP/commit/0bfff90d96243d5d53fdf5842b1b52bb3bcc7f45)) +* **client:** Prevent unnecessary reconnects on upstream failure ([bf934e4](https://github.com/Leberkas-org/GaudiHTTP/commit/bf934e43e783b463ed5ee4cc88507ed01e3dbc31)) +* **client:** resolve multi-connection pipeline deadlock in GroupByRequestEndpointStage ([0549940](https://github.com/Leberkas-org/GaudiHTTP/commit/054994000b4200a001444803ac1f705d70395250)) +* **client:** revert response dispose — BroadcastHub shares objects ([4d210c5](https://github.com/Leberkas-org/GaudiHTTP/commit/4d210c588e91a1233e89725990e8add0611fdd8c)) +* **client:** route responses by compacting consumer index to fix same-name misroute ([f16d3a7](https://github.com/Leberkas-org/GaudiHTTP/commit/f16d3a76bc0dc0787d9fca4c25e19d0af9fdcb89)) +* **client:** stamp cancellation token into request options before channel enqueue ([28d422d](https://github.com/Leberkas-org/GaudiHTTP/commit/28d422dc342bb65c3fbc8d1c1daff639e40b6f37)) +* **client:** surface content-decode failures instead of silent truncation ([0b9731c](https://github.com/Leberkas-org/GaudiHTTP/commit/0b9731c286b2cc8acf2ef5ff5d7d54d9a73c400d)) +* **cookies:** enforce __Host- and __Secure- prefix rules (RFC 6265bis) ([8978aeb](https://github.com/Leberkas-org/GaudiHTTP/commit/8978aeb09ac3d1a102c5a965b9506c96215954e0)) +* **diagnostics:** thread-safe logger cache in LoggerTraceListener ([38a8a9e](https://github.com/Leberkas-org/GaudiHTTP/commit/38a8a9ea39e76bb798e0539ba3322dd9a224b1e8)) +* **e2e:** stabilize E2E integration tests ([cbc2252](https://github.com/Leberkas-org/GaudiHTTP/commit/cbc22522d97a8f4a3089acb41b9be412571be0f4)) +* **e2e:** use ctx.RequestAborted instead of TestContext CancellationToken ([e6c6f56](https://github.com/Leberkas-org/GaudiHTTP/commit/e6c6f560be57920460f372dae9f5aec15bf0acc5)) +* force-async all sync body reads through actor mailbox ([b808a1e](https://github.com/Leberkas-org/GaudiHTTP/commit/b808a1efae0f2f1ae660740706532ee0546a613a)) +* force-async body reads across all pump types (H2/H3/H1) ([d2e724d](https://github.com/Leberkas-org/GaudiHTTP/commit/d2e724db1c38f8cdda17131296805a985c7fad69)) +* **h1-client:** consume 101 in 1xx block instead of delivering as final response ([7966e39](https://github.com/Leberkas-org/GaudiHTTP/commit/7966e3928e0033990974922c0b68fa50ba85a562)) +* **h1-client:** exclude 101 Switching Protocols from 1xx forwarding ([45bc56c](https://github.com/Leberkas-org/GaudiHTTP/commit/45bc56c08dbc0765228abc47c79dded453b47080)) +* **h10-client:** correlate response while outbound body is still draining ([5d90778](https://github.com/Leberkas-org/GaudiHTTP/commit/5d90778c775ddeb4f2744cd0ab703c75a0f7315a)) +* **h10-client:** use streaming CloseDelimitedFramingDecoder for connection-close bodies ([d06db52](https://github.com/Leberkas-org/GaudiHTTP/commit/d06db5247fe5a49856f62eca5989843ef65facb4)) +* **h10/server:** dispatch streaming request bodies before full receipt ([4ed9c42](https://github.com/Leberkas-org/GaudiHTTP/commit/4ed9c424126d91b38d5045919452984dd590388d)) +* **h10:** set Content-Length on large payload endpoints to prevent truncation ([9380956](https://github.com/Leberkas-org/GaudiHTTP/commit/93809562f22e62eff86860bd9fe7f0ce4a8dd381)) +* **h1:** retain unconsumed prefix across reads so split response headers don't desync ([32ded11](https://github.com/Leberkas-org/GaudiHTTP/commit/32ded11935da0b04f15e8bbc245200df51b7e671)) +* **h2-client:** single-field header limit tracks list size; advertise MAX_HEADER_LIST_SIZE ([8175ab8](https://github.com/Leberkas-org/GaudiHTTP/commit/8175ab8e4d4b99618f9b0387d755a778394bdec9)) +* **h2-server:** prevent stream hang when all trailers are filtered + add SetReadOnly freeze ([f0c1ad1](https://github.com/Leberkas-org/GaudiHTTP/commit/f0c1ad1b759722e702dac1a57376cf21e8c60d84)) +* **h2/h3:** guard StackStreamStatePool against double-return ([fedc9e9](https://github.com/Leberkas-org/GaudiHTTP/commit/fedc9e99e04ce506fdcd7ab51ef4c6038d4eb752)) +* **h2/server:** partial send in DrainOutboundBuffer when flow control window < chunk ([2f57852](https://github.com/Leberkas-org/GaudiHTTP/commit/2f57852b8dadfd16202ce3a724aa6635e712e671)) +* **h2:** bound the receive WINDOW_UPDATE threshold to the advertised stream window ([af46609](https://github.com/Leberkas-org/GaudiHTTP/commit/af466092cfd8a64d48345f5d4525861f68a59e24)) +* **h2:** drain in-flight streams on a graceful GOAWAY instead of dropping them (RFC 9113 6.8) ([4b027f2](https://github.com/Leberkas-org/GaudiHTTP/commit/4b027f23ffb3aa7109e47643de703072080a15df)) +* **h2:** fix FlowControlledBodyPump OnWindowUpdate deadlock + window leak ([78082fd](https://github.com/Leberkas-org/GaudiHTTP/commit/78082fd7bf991d75c97b09a991ef38ea646b4ff6)) +* **h2:** Pass request cancellation to body drain ([5e60f59](https://github.com/Leberkas-org/GaudiHTTP/commit/5e60f592f56fbbd5e06fb66e5ee2d7001624a7ce)) +* **h2:** prevent GC pressure from body buffering under high concurrency ([7cc0841](https://github.com/Leberkas-org/GaudiHTTP/commit/7cc0841c29a705276f3ba9daeb802ffce2f94664)) +* **h2:** track stream-level send window in FlowController.OnDataSent ([f31784e](https://github.com/Leberkas-org/GaudiHTTP/commit/f31784ed7de48eb515b2eb838bca1495629aba34)) +* **h3-client:** handle 1xx informational responses without closing stream ([832ce2d](https://github.com/Leberkas-org/GaudiHTTP/commit/832ce2d793108c44864c18cd81abcc16dabfbd62)) +* **h3-client:** update edge-case tests for 1xx behavior + status validation ([041ce4f](https://github.com/Leberkas-org/GaudiHTTP/commit/041ce4fbf4e16c2e9621a763dde12107cc86108a)) +* **h3:** dispose decoded frames and copy blocked QPACK header blocks ([e51ab5d](https://github.com/Leberkas-org/GaudiHTTP/commit/e51ab5daca6cc913289d94e9aef3aa58656f45dc)) +* **h3:** drive reconnect from the state machine like TCP ([f5570b6](https://github.com/Leberkas-org/GaudiHTTP/commit/f5570b6b0f55fab662886d2929ad53af907ababa)) +* **h3:** honor UseHuffman in the QPACK encoder ([5b233f4](https://github.com/Leberkas-org/GaudiHTTP/commit/5b233f48de13b86d94695bf3beffb000680a9efd)) +* **http11:** Optimize request body pumping for synchronous reads ([7db4edf](https://github.com/Leberkas-org/GaudiHTTP/commit/7db4edf3b84a31af3365ac216f2d06bd75911bb6)) +* **http1:** stop chunked decoder duplicating a stashed partial control line ([a1a58a5](https://github.com/Leberkas-org/GaudiHTTP/commit/a1a58a5793870edb47ed338aa14ab250b413fc55)) +* **http1:** suppress response body for HEAD requests ([42f3637](https://github.com/Leberkas-org/GaudiHTTP/commit/42f36378317eaeb1cfda232e44b9cdd9baae851c)) +* **http2/3:** correct body read pending state ([f8d2485](https://github.com/Leberkas-org/GaudiHTTP/commit/f8d248538f839ed6246e8e7904017ba2e341199c)) +* **http2:** Adjust keep-alive ping logic ([b1e8534](https://github.com/Leberkas-org/GaudiHTTP/commit/b1e853464bca7e3e533933257f0da8985b6ca872)) +* **http2:** enforce the advertised HEADER_TABLE_SIZE in the server HPACK decoder ([4ad285c](https://github.com/Leberkas-org/GaudiHTTP/commit/4ad285c5cfddadf1d0547923566c7086805af808)) +* **http2:** fail fast on client receive-path corruption instead of wedging ([93d799b](https://github.com/Leberkas-org/GaudiHTTP/commit/93d799bb6a4f02fa329ba05c6caac97691c5eb85)) +* **http2:** harden FrameDecoder against offset-wrapped buffers, surface desyncs at Warning ([3274551](https://github.com/Leberkas-org/GaudiHTTP/commit/327455110f39a5164bebc797e6688404d358a3b8)) +* **http2:** make QueuedBodyReader thread-safe and fail truncated response bodies ([ba89a9c](https://github.com/Leberkas-org/GaudiHTTP/commit/ba89a9c508bc72b6ff6ce5a2754c37a932e03492)) +* **http2:** RFC 9113 frame compliance — settings overflow, padded DATA flow control, half-closed(remote) ([d76c134](https://github.com/Leberkas-org/GaudiHTTP/commit/d76c1340089c68829472223be4f4ad09ff1c975a)) +* **http2:** size the HPACK encode buffer to the header block ([38625ab](https://github.com/Leberkas-org/GaudiHTTP/commit/38625ab9586afaea8d5eaea6ebdbd6b696ae4875)) +* **http2:** stop returning in-use body-drain buffers to the shared pool on teardown ([19b83c5](https://github.com/Leberkas-org/GaudiHTTP/commit/19b83c57b18c91836da5484dbbe444d0c8c1f3bf)) +* **http2:** suppress response body (DATA frames) for HEAD requests ([26b7841](https://github.com/Leberkas-org/GaudiHTTP/commit/26b7841421a53f2db772064de6230f56372a503c)) +* **http3:** process inbound QPACK encoder-stream and guard response body-drain UAF (server) ([ea45c9c](https://github.com/Leberkas-org/GaudiHTTP/commit/ea45c9c139fdeeafbf87878024caa5a080c04803)) +* **http3:** replay DATA received while response HEADERS are QPACK-blocked ([ab401a8](https://github.com/Leberkas-org/GaudiHTTP/commit/ab401a839a96454da5841d81cebd7f00df9f93cb)) +* **http3:** surface malformed frame bodies as HttpProtocolException ([c0a0462](https://github.com/Leberkas-org/GaudiHTTP/commit/c0a04622233041a2fff17f9044230a478734c878)) +* **http:** enforce body-size limit on Content-Length framed bodies ([025fc6b](https://github.com/Leberkas-org/GaudiHTTP/commit/025fc6baf7813edbcb45df2d8963b0fa9c0fcd60)) +* **http:** fix http version comparison and null checks ([91fdab1](https://github.com/Leberkas-org/GaudiHTTP/commit/91fdab1787a5793bc2c1cd7d9c2f2144c65c8ee2)) +* **http:** Improve flow control and stream draining ([6ec29cb](https://github.com/Leberkas-org/GaudiHTTP/commit/6ec29cb5d5bffed046d2c021990c84e819f5cfe4)) +* **http:** tighten Content-Length parsing, dup CL on H1.0, redirect credential leak ([fd16691](https://github.com/Leberkas-org/GaudiHTTP/commit/fd16691e30b3cfa661edffddb845edaeead81659)) +* **lifecycle:** ConnectionActor failure handler and PostStop cleanup ([327a54f](https://github.com/Leberkas-org/GaudiHTTP/commit/327a54f5246fa3ce64303b40ff1ea6100e90a2e6)) +* **lifecycle:** consistent full exception logging in CleanupForRetry ([0187c1d](https://github.com/Leberkas-org/GaudiHTTP/commit/0187c1d052773163f56c2bf5f48e316ea027bdb2)) +* **lifecycle:** Consumer stops on sink error instead of continuing ([9fe8885](https://github.com/Leberkas-org/GaudiHTTP/commit/9fe88851d68679f8d675c0849f3dddd460136d54)) +* **lifecycle:** correlate bound ports with listener index to prevent protocol mismatch ([d214719](https://github.com/Leberkas-org/GaudiHTTP/commit/d214719f0b95d9486d7cb7c1f46bcd38dd7f2cd1)) +* **lifecycle:** ListenerActor PipeTo throw bug, BindFailed message, supervisor logging ([4e07e07](https://github.com/Leberkas-org/GaudiHTTP/commit/4e07e07f82be3111f68e0b58976d7397913fc6c9)) +* **lifecycle:** stop surviving listeners when a sibling listener dies during startup ([e6dd6ba](https://github.com/Leberkas-org/GaudiHTTP/commit/e6dd6ba98e447f16e859e57d2b046327ca27e0d7)) +* **lifecycle:** StreamOwner stops after retry exhaustion, actor-scoped materializer ([4ef77cd](https://github.com/Leberkas-org/GaudiHTTP/commit/4ef77cde3323da5be40d96e5477a1d35e50c3b62)) +* **pooling:** allow Return before the first Rent registers a pool factory ([e1005bb](https://github.com/Leberkas-org/GaudiHTTP/commit/e1005bbd84c6d4a46af1ba887da66992ea869874)) +* **pooling:** make Return without prior Rent reset-and-discard instead of throwing ([171de8e](https://github.com/Leberkas-org/GaudiHTTP/commit/171de8e084b8ebedf6a7b3b53b73c52adc17e3f7)) +* Potential fix for code scanning alert no. 2: Cookie 'Secure' attribute is not set to true ([9792830](https://github.com/Leberkas-org/GaudiHTTP/commit/979283029f029d48803cc5b5c4f3e182314b284c)) +* **quic:** only flush streams that actually wrote to the pipe (not opening-buffer) ([a900c1c](https://github.com/Leberkas-org/GaudiHTTP/commit/a900c1c056657d51fbe5c08af2e0e2280eabd01f)) +* **quic:** return pooled MultiplexedData after write + treat QuicException as graceful close ([da06cfd](https://github.com/Leberkas-org/GaudiHTTP/commit/da06cfdd91897079b520135b80191de3d574715d)) +* **quic:** update submodule — drain pending acquires on release/establish ([1defdbb](https://github.com/Leberkas-org/GaudiHTTP/commit/1defdbbfb2a732402513a4faef14d7da2fd34ea2)) +* **quic:** update submodule — server stream accept loop exception handling ([63a1319](https://github.com/Leberkas-org/GaudiHTTP/commit/63a1319b38f1a45449f5a364b70fff5362d0d866)) +* Remove unused OpenTelemetry package ([93a9f26](https://github.com/Leberkas-org/GaudiHTTP/commit/93a9f26af3f75dafbcb194d2d93e8eebdb2f51ef)) +* replace inline body pump credits with continuation-based draining ([9699f65](https://github.com/Leberkas-org/GaudiHTTP/commit/9699f654c5d15a8d3ff449dd4bfd2fd771343fe5)) +* resolve client CPU spin-loop + body pump / pooling / benchmark overhaul ([#63](https://github.com/Leberkas-org/GaudiHTTP/issues/63)) ([9d57510](https://github.com/Leberkas-org/GaudiHTTP/commit/9d5751004760a203cd17dbc83cfe26d0ea6ec883)) +* revert Servus 0.34.1 bump — caused 90% throughput regression ([7b140f9](https://github.com/Leberkas-org/GaudiHTTP/commit/7b140f94c77b7afc1614f20f19edb037be3ea1a4)) +* **server:** await ActorSystem WhenTerminated in StopAsync, dispose responses in E2E tests ([bb87acc](https://github.com/Leberkas-org/GaudiHTTP/commit/bb87acc7a227c2ef2e12e261a10b8962c4a13942)) +* **server:** bound the cleartext protocol-sniffing window (DoS) ([d82c37f](https://github.com/Leberkas-org/GaudiHTTP/commit/d82c37f74335591f664c84bb2fb10a89e16c20bb)) +* **server:** bound the routing Pending queue by propagating backpressure ([c2965a8](https://github.com/Leberkas-org/GaudiHTTP/commit/c2965a846e6089a94dc23d0bf57cc24a7c859165)) +* **server:** cap _pendingSources queue in GroupByRequestEndpointStage ([4490f7d](https://github.com/Leberkas-org/GaudiHTTP/commit/4490f7dfee79c35a05116491db937c75fcf7f9c0)) +* **server:** check the cleartext sniff cap after protocol identification, not before ([ab3a40c](https://github.com/Leberkas-org/GaudiHTTP/commit/ab3a40c8bb438826752d2f6da713ba9f84ab8543)) +* **server:** defer H2 per-stream WINDOW_UPDATE until app consumes body ([5bd80aa](https://github.com/Leberkas-org/GaudiHTTP/commit/5bd80aaffbdaea018b17bf752b3c64ff6c9dd5a7)) +* **server:** empty-body responses, outbound queue drain, body-message ShouldComplete ([94332f4](https://github.com/Leberkas-org/GaudiHTTP/commit/94332f4c05e0544896289f42ede27f6977010acb)) +* **server:** Flush buffered response before closing ([3163b68](https://github.com/Leberkas-org/GaudiHTTP/commit/3163b6846cf40cb27c89556c890dfd2349622a32)) +* **server:** guard buffered body fast path and serve single-segment bodies zero-copy ([3358b02](https://github.com/Leberkas-org/GaudiHTTP/commit/3358b0252e5b36337fda83bbb17dc5c516319ae6)) +* **server:** H1.x SerialBodyPump backpressure stall on streaming responses ([25eeb7a](https://github.com/Leberkas-org/GaudiHTTP/commit/25eeb7a3f9777d2750e4ef5fa3a015ec70855878)) +* **server:** honor IHttpResponse(Trailers)Feature setters (Kestrel parity) ([16eed0b](https://github.com/Leberkas-org/GaudiHTTP/commit/16eed0b8bca3e208633fc59b9e40a4c6d13f5865)) +* **server:** honor per-protocol RequestHeadersTimeout; advertise H3 MaxFieldSectionSize ([0f00980](https://github.com/Leberkas-org/GaudiHTTP/commit/0f00980631a6f277b4a96eb812eeb85fe22ec720)) +* **server:** Pool CancellationTokenSource to reduce allocations ([8c18619](https://github.com/Leberkas-org/GaudiHTTP/commit/8c18619024c47af45946dfe9c3277991b2c93b54)) +* **server:** recycle the FeatureCollection on body-suppressed (204/304/HEAD) responses ([7eabbe5](https://github.com/Leberkas-org/GaudiHTTP/commit/7eabbe5fd13cb1c18c8886ba30a61953b27b5028)) +* **server:** remove response data-rate entry when body completes ([61a4b1e](https://github.com/Leberkas-org/GaudiHTTP/commit/61a4b1e9e506ee275db4caf2961d8ba68503f6e5)) +* **server:** serialize HTTP/1.x pipelined dispatch and fix WirePipeliningSpec under-read ([3429403](https://github.com/Leberkas-org/GaudiHTTP/commit/34294036036463b08538a905eb565ebcb702fa20)) +* **server:** split buffered body into MAX_FRAME_SIZE-compliant DATA frames ([a64f68b](https://github.com/Leberkas-org/GaudiHTTP/commit/a64f68bf788f59b89457bf4399fc057d7802f5f6)) +* **server:** stop ApplicationBridgeStage double-emitting on handler timeout ([51a1804](https://github.com/Leberkas-org/GaudiHTTP/commit/51a18047683b3a3f64928c73b225017bc105757e)) +* **server:** surface application handler crashes in ApplicationBridgeStage ([a8c9e98](https://github.com/Leberkas-org/GaudiHTTP/commit/a8c9e98d14a41e959889db9357b03d1caf9032b6)) +* **server:** wire MaxConcurrentStreams to QUIC and MaxRequestBufferSize to the TCP input buffer ([ffc4f88](https://github.com/Leberkas-org/GaudiHTTP/commit/ffc4f8814c9431b71d763f3cfd129bfc98783812)) +* **stages:** add explicit port handlers to prevent default CancelStage cascade ([13c377d](https://github.com/Leberkas-org/GaudiHTTP/commit/13c377d0f839ccd5fd5c71cb29c08a39db0aa959)) +* **test:** Disable parallel test collections ([0dae2a3](https://github.com/Leberkas-org/GaudiHTTP/commit/0dae2a3e7837e005a2384c6fe19bca53a90362fa)) +* **test:** disable Senf tracing after ServerStartupReliabilitySpec ([de5112a](https://github.com/Leberkas-org/GaudiHTTP/commit/de5112a9d408ee0a10a3f26e6910e3c1507346d9)) +* **test:** H10 RequestCompressionSpec must accumulate multi-chunk requests ([9456ce7](https://github.com/Leberkas-org/GaudiHTTP/commit/9456ce794b35d989280863cb1b00371b89b4096c)) +* **test:** make integration test infrastructure parallel-safe ([9dce6a6](https://github.com/Leberkas-org/GaudiHTTP/commit/9dce6a6be975cb850b4e056194757785f0208d3d)) +* **test:** raise client timeout in LargePayloadSpec for CI contention ([65dd73f](https://github.com/Leberkas-org/GaudiHTTP/commit/65dd73f853c9a23cde702cf545a3a0b6698331c7)) +* **test:** reduce H2 ConnectionWindowStarvation payload to prevent CI flake ([fb21883](https://github.com/Leberkas-org/GaudiHTTP/commit/fb218832b3d447bbfb984ffac9528bc6dfe321e8)) +* **tests:** increase redirect test timeout for H3/QUIC reliability ([19c201d](https://github.com/Leberkas-org/GaudiHTTP/commit/19c201da8aa433a66fab11595e6478638122a47e)) +* **tests:** resolve xUnit1051 and xUnit2012 analyzer warnings ([762a1e3](https://github.com/Leberkas-org/GaudiHTTP/commit/762a1e336777384c7b8b07b2bb1a69d29c7cd03a)) +* **test:** tighten Trailer announcement header assertion in Http11ServerTrailerSpec ([9b2ccf0](https://github.com/Leberkas-org/GaudiHTTP/commit/9b2ccf0a428ca5c03159730bb2ba80293b146045)) +* **test:** update H1.1 stage test for 1xx forwarding behavior ([1c52d02](https://github.com/Leberkas-org/GaudiHTTP/commit/1c52d02c8b6523210bdaa79ab61ab43932b11844)) +* **test:** update Http3ServerTrailerSpec to use MultiplexedData.Rent() ([8182e5b](https://github.com/Leberkas-org/GaudiHTTP/commit/8182e5b37b0fe031f8d9a93c2625830dd6b199e8)) +* **test:** update servus.akka — deterministic QuiesceAsync race test ([c4a6863](https://github.com/Leberkas-org/GaudiHTTP/commit/c4a6863be1794b69eeb5a32461cd777bcd35b562)) +* **test:** update starvation guard tests after removal ([1296649](https://github.com/Leberkas-org/GaudiHTTP/commit/12966493da2ac2f75a98789f8fafb1ad98f51d15)) + + +### Performance + +* add async boundaries to isolate connection stages ([b1b3a8e](https://github.com/Leberkas-org/GaudiHTTP/commit/b1b3a8e706412677691cc11a40d39e943307d5e6)) +* Add Kestrel benchmarks for HttpClient ([539e99b](https://github.com/Leberkas-org/GaudiHTTP/commit/539e99b5f102ae8350626b27b582742dd1f07cfe)) +* **api:** Remove obsolete buffer configuration properties ([92552d1](https://github.com/Leberkas-org/GaudiHTTP/commit/92552d1f200e60252d7be0fd60c2d72120244828)) +* **body:** cache read-completion delegates instead of per-registration allocation ([a265cef](https://github.com/Leberkas-org/GaudiHTTP/commit/a265cef053fc16d81553d43e355dd5f1aee27c37)) +* **body:** cached PipeTo delegates and ConnectionPoolContext pooling ([aa75d2e](https://github.com/Leberkas-org/GaudiHTTP/commit/aa75d2e52a5e6ae8411d4903d8f38df8f8639165)) +* **body:** override QueuedBodyStream.CopyToAsync to write pooled chunks directly ([032434d](https://github.com/Leberkas-org/GaudiHTTP/commit/032434d7be5ea39b0f41f72ca8281da5f449011a)) +* **body:** rent body buffers from a shared cross-thread pool ([8146ab6](https://github.com/Leberkas-org/GaudiHTTP/commit/8146ab601832c6bf7dc03cdb3ddb5c9101800ed7)) +* **body:** reuse BufferedBodyReader internal buffer across requests ([f396fad](https://github.com/Leberkas-org/GaudiHTTP/commit/f396fad8013a343b561c0975a6ea5fee5659300f)) +* **body:** zero-copy client upload emission for H1.0/H1.1 ([499a690](https://github.com/Leberkas-org/GaudiHTTP/commit/499a690aa0240d09a09dd2465339c742d69afa23)) +* **body:** zero-copy server response body emission for H1.0/H1.1 ([4b42d05](https://github.com/Leberkas-org/GaudiHTTP/commit/4b42d05b9746b9f58847ea92ef4399efbd12a1d2)) +* **client:** avoid CreateLinkedTokenSource when only caller token is cancelable ([0ce8fc3](https://github.com/Leberkas-org/GaudiHTTP/commit/0ce8fc38e1eba2b50ebfba48acbf11071289b762)) +* **client:** dispose the channel-path default-timeout source on completion ([3d99950](https://github.com/Leberkas-org/GaudiHTTP/commit/3d999505ecb42e7b0b9677c322f36499c02b8a1e)) +* **client:** remove .Async() boundary from EndpointDispatchStage ([f4a1bb4](https://github.com/Leberkas-org/GaudiHTTP/commit/f4a1bb4d9e2e5792b4dee441784fe442fa61daa4)) +* **client:** replace ConcurrentStack pools with ObjectPool in client path ([f070894](https://github.com/Leberkas-org/GaudiHTTP/commit/f070894443ebabb936d493f03657c3fe145f0e8a)) +* **h1:** coalesce buffered H1.1 response headers and body into one outbound ([40e5cb3](https://github.com/Leberkas-org/GaudiHTTP/commit/40e5cb30e37a13762cc7bc73d01ce7398eb04be1)) +* **h1:** drop per-message header-iteration allocations ([aed0f5e](https://github.com/Leberkas-org/GaudiHTTP/commit/aed0f5e2ea8a109580c10c120bc7a51e4e2399d8)) +* **h1:** scan response headers once instead of three passes ([fc29213](https://github.com/Leberkas-org/GaudiHTTP/commit/fc29213c8499ce5206560c08ecfff749fcf61034)) +* **h1:** single vectorized two-byte CRLF search in BufferSearch.FindCrlf ([7af8789](https://github.com/Leberkas-org/GaudiHTTP/commit/7af8789553b37c9cfc788d611d58457c94894df0)) +* **h1:** single-value header fast paths drop per-message allocations ([ca30605](https://github.com/Leberkas-org/GaudiHTTP/commit/ca306058bd0f319592a88006e8b3f450d9f05192)) +* **h1:** write pre-encoded u8 version bytes in the request line ([6735d94](https://github.com/Leberkas-org/GaudiHTTP/commit/6735d9470c67d6d7b0f72184787205543b9aee82)) +* **h2-server:** batch DATA frames into single TransportBuffer ([01dac31](https://github.com/Leberkas-org/GaudiHTTP/commit/01dac31e557cfedadc61e8385f2aa64047d57d64)) +* **h2-server:** defer UpgradeToPipe for buffered async handlers ([6d7d06d](https://github.com/Leberkas-org/GaudiHTTP/commit/6d7d06d2afb0eb78b9504fb5701164b99c435264)) +* **h2-server:** emit window-blocked buffered body from a held slice, no ToArray copy ([743fb89](https://github.com/Leberkas-org/GaudiHTTP/commit/743fb893a644dcaaa9f5ca3c681d12119fe37413)) +* **h2-server:** lazy Pipe upgrade on explicit write/flush instead of eager ([9e54ccc](https://github.com/Leberkas-org/GaudiHTTP/commit/9e54ccc261a210fc51b230d8f9b15e1844053bf6)) +* **h2,h3:** add per-connection HeaderNameCache for HPACK/QPACK decoding ([ddac45e](https://github.com/Leberkas-org/GaudiHTTP/commit/ddac45e61d2c4f6e32827f5b955486b37842d3ee)) +* **h2,h3:** sync fast-path for body drain reads, remove .AsTask() allocations ([fb19fd0](https://github.com/Leberkas-org/GaudiHTTP/commit/fb19fd0583bd73b41e30c0f9dbd050632a799a11)) +* **h2:** FrameDecoder.Decode returns its reused frame list (no per-read array alloc) ([2cd841b](https://github.com/Leberkas-org/GaudiHTTP/commit/2cd841ba99beb9f613941ae9ec137bcee4c384be)) +* **h2:** iterate stream windows in place on SETTINGS window-size change ([fbf8897](https://github.com/Leberkas-org/GaudiHTTP/commit/fbf88970173a2f881561202f1da1fb0f55819c3a)) +* **h3:** batch DATA frames into single TransportBuffer (match H2 pattern) ([e954bb4](https://github.com/Leberkas-org/GaudiHTTP/commit/e954bb4afcad20041c6f00c114ac114bb68921f6)) +* **h3:** cache QPACK encode buffer across Encode() calls ([1ff7130](https://github.com/Leberkas-org/GaudiHTTP/commit/1ff7130818e824abe8230e56e1ccbc20c04afacb)) +* **h3:** decode inbound frames zero-copy from the transport buffer ([1171012](https://github.com/Leberkas-org/GaudiHTTP/commit/11710123dd96f7155ed673f1100de52861c6529d)) +* **h3:** eliminate timer key strings, skip LinkedCTS, deduplicate correlation map ([1a054a1](https://github.com/Leberkas-org/GaudiHTTP/commit/1a054a1a72797c3337796ea573c08e50ad879b1b)) +* **h3:** pool FrameDecoder and rent StreamState from pool in server ([49b3032](https://github.com/Leberkas-org/GaudiHTTP/commit/49b303219df20dee3155ab3880a1b183f8b96b1e)) +* **h3:** pool MultiplexedData like TransportData (ObjectPool<256>) ([7e72c9a](https://github.com/Leberkas-org/GaudiHTTP/commit/7e72c9a128939ea7cd24338c56de809e8d352711)) +* **h3:** pre-compute QPACK static table name byte lengths and encoded sizes ([1544580](https://github.com/Leberkas-org/GaudiHTTP/commit/15445808d5083d470fcecd2957993e53d1af96be)) +* **h3:** reduce QUIC pipe MinimumSegmentSize from 16KB to 4KB ([35e45fa](https://github.com/Leberkas-org/GaudiHTTP/commit/35e45fa134839650083576e10c36a8a78ca892fb)) +* **h3:** remove 4 allocating dead-code methods from H3 production pathr ([9e8d511](https://github.com/Leberkas-org/GaudiHTTP/commit/9e8d511763a0e42c072882e4dc711ef5ab5a0636)) +* **h3:** reuse HeaderEncodingEntry[] array in QpackEncoder.PlanEncodings ([5903b56](https://github.com/Leberkas-org/GaudiHTTP/commit/5903b5649c2cac58a3ba6f94535d60a2a4382284)) +* **h3:** reuse QPACK encode buffer in Http3ServerEncoder ([09bf2db](https://github.com/Leberkas-org/GaudiHTTP/commit/09bf2db428c13b3f94695394a85e7a988da6d76b)) +* **h3:** reuse QpackInstructionDecoder in ProcessDecoderInstructions ([7347319](https://github.com/Leberkas-org/GaudiHTTP/commit/7347319161804ba725f85fa6d836843508edcf07)) +* **hpack:** decode Huffman over a flat struct-array tree ([8feb26b](https://github.com/Leberkas-org/GaudiHTTP/commit/8feb26b0a7040631f3b4500b250bbf1df71d6174)) +* **hpack:** reuse computed UTF-8 byte lengths when adding to the dynamic table ([c666294](https://github.com/Leberkas-org/GaudiHTTP/commit/c666294d5ee4262123db3c6eafce17ba1fda87c4)) +* **http11:** build request headers once and rent exact-size buffer ([9983d41](https://github.com/Leberkas-org/GaudiHTTP/commit/9983d4107cab328be144a5eacab88d2226b5f088)) +* **http2-client:** batch outbound body DATA frames into one transport buffer ([92528d7](https://github.com/Leberkas-org/GaudiHTTP/commit/92528d784233518611a9649bcfa7ff36a9370690)) +* **http3-body-pump:** bound MultiplexedBodyPump with a connection-level outbound credit ([9d9c0d8](https://github.com/Leberkas-org/GaudiHTTP/commit/9d9c0d84f6a648d614e1ac816cd4058a5ef062b2)) +* pass sizeHint to GetMemory() + sync body read bypass for H10 server ([4b65fb3](https://github.com/Leberkas-org/GaudiHTTP/commit/4b65fb3c864eaae98885b49d709ee33d7198400a)) +* pool QueuedBodyReader per-connection for H2/H3 request bodies ([23ba3c0](https://github.com/Leberkas-org/GaudiHTTP/commit/23ba3c0119d7ce3263330936eb98e234171c768e)) +* pool TransportData wrappers + convert PipeTo messages to readonly record structs ([f27b895](https://github.com/Leberkas-org/GaudiHTTP/commit/f27b895b00839e3a8064f6fe9b9b803491540f82)) +* **pooling:** bump servus.akka — pool PooledArrayMemoryOwner wrappers ([3765eef](https://github.com/Leberkas-org/GaudiHTTP/commit/3765eeff7a8171dd47a30dd4918b98d471b1709d)) +* **pooling:** switch PumpSlot buffer to cross-thread SharedPool ([37ca6ad](https://github.com/Leberkas-org/GaudiHTTP/commit/37ca6adf87ca9e67849abf428635c9f5c68ec7b9)) +* **protocol:** drop per-response decode allocations (reason phrase + header value) ([22ecdd1](https://github.com/Leberkas-org/GaudiHTTP/commit/22ecdd17adfc7d1caf41a1a9bfdd934b1a3cad58)) +* **protocol:** rent body chunks from a cross-thread ArrayPool ([e65bf75](https://github.com/Leberkas-org/GaudiHTTP/commit/e65bf75a76294f12c139508e469d8f332652bff7)) +* **quic:** adaptive read buffer 4KB-128KB for QUIC direct reads ([a8e25f6](https://github.com/Leberkas-org/GaudiHTTP/commit/a8e25f6e996acfaffe3b6830e315000c2bdf5116)) +* **quic:** bump servus.akka — direct-read + stream-type ordering fix ([e456760](https://github.com/Leberkas-org/GaudiHTTP/commit/e456760b1b0ab74f1889f5325c409aae31660093)) +* **quic:** cache read failure/success lambdas and body pump delegates ([6d332e2](https://github.com/Leberkas-org/GaudiHTTP/commit/6d332e2b65eafd0671647900b4d3d91f5df77073)) +* **quic:** defer PipeWriter flush until batch complete (write coalescing) ([5c5f4e9](https://github.com/Leberkas-org/GaudiHTTP/commit/5c5f4e9a3fd01b285eff51e6b9c7cf0b11bb071d)) +* quick-win allocation reductions across client and server ([deb2530](https://github.com/Leberkas-org/GaudiHTTP/commit/deb25307b6b1a6237a3e070fa650271cfbce972f)) +* **quic:** pool QuicStreamState objects (ObjectPool<256>) ([fbe0375](https://github.com/Leberkas-org/GaudiHTTP/commit/fbe0375718f2349e576eafe7db34d3dd58d9a50f)) +* reduce QueuedBodyReader default capacity from 64 to 8 ([1988ddb](https://github.com/Leberkas-org/GaudiHTTP/commit/1988ddb89b1b7f7ec583a0d404664bd21832d501)) +* replace H2/H3 pseudo-header Dictionary with typed fields ([9fbf854](https://github.com/Leberkas-org/GaudiHTTP/commit/9fbf85437319ed328c01761c534ee2adebc02d8b)) +* replace per-byte branching with lookup tables + H3 sawDate flag ([372d623](https://github.com/Leberkas-org/GaudiHTTP/commit/372d623f3d5aef6f5752fd034670d5583f88bed6)) +* replace QPACK per-decode MemoryPool.Rent with per-decoder scratch buffer ([c637773](https://github.com/Leberkas-org/GaudiHTTP/commit/c6377731fc0623d066f9a4dcb718dc29db4b8a87)) +* reuse content-header lists across pool cycles + Servus 0.34.1 ([7367de0](https://github.com/Leberkas-org/GaudiHTTP/commit/7367de0adda32140e87d40c0dce736d1709ec41e)) +* right-size body drain buffers using content-length ([5e54fe3](https://github.com/Leberkas-org/GaudiHTTP/commit/5e54fe3c6ff1d648790cba7e221c97e999820049)) +* round 3 quick wins — pre-encode, scratch buffers, O(1) lookups ([61be7d5](https://github.com/Leberkas-org/GaudiHTTP/commit/61be7d5a6b15acf6496799754d61d689868062db)) +* round 4 — lock-free pending list, span-based parsing, pre-baked headers ([50918ff](https://github.com/Leberkas-org/GaudiHTTP/commit/50918ff2b3d9fa61e9552045434fcd586d593c90)) +* **server:** buffered body fast path for all protocol SMs ([8823dec](https://github.com/Leberkas-org/GaudiHTTP/commit/8823dec035f3174ad2fdb264ba431c6565d3cace)) +* **server:** cache send delegate and pool PassthroughFramingEncoder ([b29c23b](https://github.com/Leberkas-org/GaudiHTTP/commit/b29c23bb7002b351de635ca1b84cba0ce5e0ab9c)) +* **server:** cut per-request allocations on the H1.1 hot path ([05cbf9e](https://github.com/Leberkas-org/GaudiHTTP/commit/05cbf9e65f8c214c736b45a7f45454a58eed6fd7)) +* **server:** deduplicate data-rate timer scheduling and reuse response pipe writer ([0c0e157](https://github.com/Leberkas-org/GaudiHTTP/commit/0c0e15776b8f6a0eaef40b3bfdf5c4786888d22f)) +* **server:** dual-mode ResponsePipeWriter with lazy Pipe upgrade ([721c992](https://github.com/Leberkas-org/GaudiHTTP/commit/721c9928ae9935cc24c321d4d11028aa0bb20e39)) +* **server:** eliminate per-response pipe lock on the buffered write path ([6104e05](https://github.com/Leberkas-org/GaudiHTTP/commit/6104e0535200ec2d56677576f9bb8bd26b2b934b)) +* **server:** eliminate SetOnStarting closure allocation ([0ea3214](https://github.com/Leberkas-org/GaudiHTTP/commit/0ea3214607db8a258a4497ac94d29c1975c3154b)) +* **server:** fix QUIC stream leak, reduce allocations, improve H2 throughput ([03a6d9c](https://github.com/Leberkas-org/GaudiHTTP/commit/03a6d9c9b8f5e0481c787c832ffe4c4a3f3df402)) +* **server:** H2 HPACK header block cache for repeated response patterns ([29bf831](https://github.com/Leberkas-org/GaudiHTTP/commit/29bf83147f969fb44bec034553e12df31898ce0a)) +* **server:** intern common request targets to avoid per-request string alloc ([54d1355](https://github.com/Leberkas-org/GaudiHTTP/commit/54d135580f1adc83a59019ae1915d9f2c6963e94)) +* **server:** per-feature cached segment pool for response pipe ([d3b510b](https://github.com/Leberkas-org/GaudiHTTP/commit/d3b510b1ff9de3dc022591bb626650170df0636d)) +* **server:** pool ArrayBufferWriter<byte> for response body buffering ([3db8272](https://github.com/Leberkas-org/GaudiHTTP/commit/3db8272f2b3192579edfa53faacbe3aef979022e)) +* **server:** pool H2 request feature + reduce QUIC receive buffer 64K→4K ([813a730](https://github.com/Leberkas-org/GaudiHTTP/commit/813a7300f413cb8eaf8e9de897a8b9c8f9aa21e3)) +* **server:** pool the feature collection per connection ([a9852ca](https://github.com/Leberkas-org/GaudiHTTP/commit/a9852ca09264762cba3e31f8255d486e03652257)) +* **server:** pool TurboHttpRequestFeature on the recycled feature-collection path ([ab291ed](https://github.com/Leberkas-org/GaudiHTTP/commit/ab291eda642eb2b29ce8341211a61807f69f822e)) +* **server:** pre-bake H1.x status lines as static byte tables ([22e192b](https://github.com/Leberkas-org/GaudiHTTP/commit/22e192b71739666f6b050d5e26c843f95e9bfb78)) +* **server:** recycle FeatureCollection after response body consumption ([6a06a89](https://github.com/Leberkas-org/GaudiHTTP/commit/6a06a89e6fec7f3a527cf0cac3c3c54edd50b69b)) +* **server:** recycle the response-body Pipe across responses ([f0ac12a](https://github.com/Leberkas-org/GaudiHTTP/commit/f0ac12a09654654421569f96f9dff26992a4bf1a)) +* **server:** remove TryCoalesceOutbound memcpy — writev handles scatter natively ([471c661](https://github.com/Leberkas-org/GaudiHTTP/commit/471c66107e22127f71a234966bc32f1a244b9a1b)) +* **server:** replace LINQ hot-path allocations in H1.1 state machine ([274a48e](https://github.com/Leberkas-org/GaudiHTTP/commit/274a48e2ae6c6620c3019b7458f4ead6fd1d07a9)) +* **server:** replace per-encode MemoryPool.Rent with scratch buffer in H2 encoder ([b88e5d9](https://github.com/Leberkas-org/GaudiHTTP/commit/b88e5d9261b816df85cacc5cf4f5c970e46da42f)) +* **server:** reuse the ASP.NET HttpContext per connection via IHostContextContainer ([7da9755](https://github.com/Leberkas-org/GaudiHTTP/commit/7da9755f02eb033a57a9f6de3325a84470b78a3f)) +* **server:** short-circuit body classification for no-body requests ([596e2da](https://github.com/Leberkas-org/GaudiHTTP/commit/596e2da0227bd941d23fbe6b8f9819f357695cec)) +* **server:** synchronous body read bypass for pre-buffered responses ([ea52a12](https://github.com/Leberkas-org/GaudiHTTP/commit/ea52a129638688772fe0991a5ea8c0fed1021c8c)) +* **server:** tune connection materializer input buffer to 32/128 ([a5995d4](https://github.com/Leberkas-org/GaudiHTTP/commit/a5995d4ee222de76d991483e48390c2acd0b95ce)) +* **servus.akka:** LIFO connection pool for warmer TCP reuse ([7539ff5](https://github.com/Leberkas-org/GaudiHTTP/commit/7539ff5e7efd7d53f47b6b2dbc53fd2b27eb3bac)) +* **servus.akka:** QUIC streams use PipeReader/Writer.Create instead of Task.Run loops ([b3b340a](https://github.com/Leberkas-org/GaudiHTTP/commit/b3b340ae05ac4eaf023a211c6687f7ce4c0e9638)) +* **servus.akka:** Update submodule to zero-copy ([6bd7a30](https://github.com/Leberkas-org/GaudiHTTP/commit/6bd7a30df1253f268d018822b30c4f6c929c7263)) +* **transport:** bounded sync fast-path for PipeReader.ReadAsync ([3830cf4](https://github.com/Leberkas-org/GaudiHTTP/commit/3830cf42048138bc59e378238b685eb6212c9b63)) + + +### Documentation + +* align option references and client API docs with current code ([4c3f186](https://github.com/Leberkas-org/GaudiHTTP/commit/4c3f186ff907e970b03d5f4601da6b889e0e0768)) +* **architecture:** update renamed types in pages and LikeC4 model ([b24c774](https://github.com/Leberkas-org/GaudiHTTP/commit/b24c774e195420922280ff4b5fd48a632634b76d)) +* **client:** align option docs with current code ([9e7f4c9](https://github.com/Leberkas-org/GaudiHTTP/commit/9e7f4c943629fae1b3d19a4cabe0b581afb522df)) +* document client-advantage benchmark scenarios ([d87a62e](https://github.com/Leberkas-org/GaudiHTTP/commit/d87a62ebc8cc99ed9cebd3793c9c615977a02a16)) +* fix old docs ([e025e18](https://github.com/Leberkas-org/GaudiHTTP/commit/e025e18155e819d8f14dee4ae995a4812e1ce850)) +* fix stale integration-test commands in CLAUDE.md ([fa76bf9](https://github.com/Leberkas-org/GaudiHTTP/commit/fa76bf9ad91225ef0d8746836570a7d5efa3a3e4)) +* **notes:** document H2 response truncation race with repro steps ([0db412f](https://github.com/Leberkas-org/GaudiHTTP/commit/0db412f39a1003004cda8f642eb6e196bed7d1c1)) +* replace stale ConnectionStage references with ConnectionActor ([da40648](https://github.com/Leberkas-org/GaudiHTTP/commit/da4064807100d9ffdbf878852130efaaf050dbd1)) +* rewrite CLAUDE.md benchmark section ([7372461](https://github.com/Leberkas-org/GaudiHTTP/commit/73724613dca306c066b648ab3b018c04e5ce5eb6)) +* **server:** align option docs with current code ([567f54c](https://github.com/Leberkas-org/GaudiHTTP/commit/567f54c7fd24a208128d6d4ff112ac74a36303e3)) +* **story:** add project history page (TurboHTTP → GaudiHTTP) ([0c8ae01](https://github.com/Leberkas-org/GaudiHTTP/commit/0c8ae018aad836462a00270257e67213f14dcc5f)) +* Update benchmark context and use cases ([42d0f59](https://github.com/Leberkas-org/GaudiHTTP/commit/42d0f59601b5de6ec15c5f0f2f89ba7dbd1b117e)) +* update CLAUDE.md decode-buffer note to match FrameDecoder.Decode contract ([aa25817](https://github.com/Leberkas-org/GaudiHTTP/commit/aa2581707ecd11d18c48d294ac7d71a50b8b6ad3)) + + +### Refactoring + +* **benchmarks:** remove --pool-bench/--alloc-trace CLI tools ([b2d108d](https://github.com/Leberkas-org/GaudiHTTP/commit/b2d108dae23768bb8f3b6ed8233c04d88ca378dd)) +* **benchmarks:** remove custom report layer ([55d268f](https://github.com/Leberkas-org/GaudiHTTP/commit/55d268f43475a91f6b6df95745c0ba4908fece3a)) +* **benchmarks:** unify class naming ({GaudiClient,HttpClient,GaudiServer,KestrelServer}{Scenario}Benchmarks) ([21875e0](https://github.com/Leberkas-org/GaudiHTTP/commit/21875e0b8339c2d94f87b407fb9d0d6ef797e4ad)) +* **benchmarks:** unify per-type configs and scenario-based structure ([707892e](https://github.com/Leberkas-org/GaudiHTTP/commit/707892e26402d3b67d724d7c73a7d84423a4a746)) +* **bench:** remove Binkraken benchmarks entirely ([fe255b2](https://github.com/Leberkas-org/GaudiHTTP/commit/fe255b2c2a7f71998e66a4efa3cb6632124555ff)) +* **body:** add old-system slot types, interfaces, and messages ([120c69f](https://github.com/Leberkas-org/GaudiHTTP/commit/120c69f9f62d0e2440742ee645a257b9ff89c87a)) +* **body:** delete DrainSlot; unify on generic PumpSlot<TStreamId> + BodyRead<T> messages ([ca5d0e8](https://github.com/Leberkas-org/GaudiHTTP/commit/ca5d0e8f7da0013f0b7c75fd6aefbe2d20537fea)) +* **body:** encapsulate DrainSlot and PumpSlot fields ([d4e10c3](https://github.com/Leberkas-org/GaudiHTTP/commit/d4e10c31628b5e155d32a296cd6d9b56a6380408)) +* **body:** remove dead BodyReadContinue starvation guard superseded by force-async reads ([16e46eb](https://github.com/Leberkas-org/GaudiHTTP/commit/16e46ebdaed2344d045eecd5d60bf34f66a44a7d)) +* **body:** remove limbo buffers, add window reservation/refund ([778a778](https://github.com/Leberkas-org/GaudiHTTP/commit/778a778de86685993bc2916c9f8ee62d0f55b686)) +* **body:** rename BodyDrainScheduler -> FlowControlledBodyPump ([f7be605](https://github.com/Leberkas-org/GaudiHTTP/commit/f7be6058689e7b836756e07a6c629c6a73bc6807)) +* **body:** replace credit system with old BodyDrainScheduler ([dc30562](https://github.com/Leberkas-org/GaudiHTTP/commit/dc305624a202bf085d51f59c31b700176e2236fa)) +* **body:** restore standalone MultiplexedBodyPump and SerialBodyPump ([cd4b36a](https://github.com/Leberkas-org/GaudiHTTP/commit/cd4b36a0e60401c7dcc0bab9da7910dd493a1efc)) +* **body:** rewrite FlowControlledBodyPump on BodyPumpBase ([2c575a0](https://github.com/Leberkas-org/GaudiHTTP/commit/2c575a05f26dfbd706b97728bd974d837ecec67a)) +* **body:** rewrite MultiplexedBodyPump on BodyPumpBase ([539568e](https://github.com/Leberkas-org/GaudiHTTP/commit/539568eb4e5703a78b625132f389ba62a1b1f497)) +* **body:** rewrite SerialBodyPump on BodyPumpBase ([5316c41](https://github.com/Leberkas-org/GaudiHTTP/commit/5316c412900cd508af990db5057c0f663241f360)) +* **body:** simplify pump architecture ([ede4d6f](https://github.com/Leberkas-org/GaudiHTTP/commit/ede4d6fed3177b01c6f96d9102b0b65278000ddc)) +* **body:** unify pump cancel discipline and deduplicate slot lifecycle ([0352a11](https://github.com/Leberkas-org/GaudiHTTP/commit/0352a11bbafad58a55779bfb37995bf703dd5264)) +* **client:** remove dead dispatcher-sizing computation ([9fd702c](https://github.com/Leberkas-org/GaudiHTTP/commit/9fd702ca63bcc896d2b88ca7f80eaaa558aa0a75)) +* complexity cleanup across protocol state machines, body pumps, and stages (+3 bug fixes) ([#66](https://github.com/Leberkas-org/GaudiHTTP/issues/66)) ([f32fbef](https://github.com/Leberkas-org/GaudiHTTP/commit/f32fbeff59e1d3f2cb831463be86d3ad4dd6a9d6)) +* Convert classes to primary constructors ([06df6fd](https://github.com/Leberkas-org/GaudiHTTP/commit/06df6fd2df510a6103b8fa6c63c1eb617235fb18)) +* **CpuProbeClient:** rename project and namespace ([7a5ba12](https://github.com/Leberkas-org/GaudiHTTP/commit/7a5ba12981c8e873039c9e2776766434ae7f3978)) +* drop redundant empty OnOutboundFlushed overrides; remove dead state-pool consts ([4837c73](https://github.com/Leberkas-org/GaudiHTTP/commit/4837c73e48223d9cc2ef06414c9c241e1fe6394d)) +* **h10:** use SerialBodyPump for known Content-Length, retain BufferedBodyWriter for unknown ([e2bb318](https://github.com/Leberkas-org/GaudiHTTP/commit/e2bb318fd973031f329e0111bca18e59c6ca1794)) +* **h11:** replace push-based body drain with SerialBodyPump ([26cb252](https://github.com/Leberkas-org/GaudiHTTP/commit/26cb2520b05f46da5848c283d2e81ce1188de2ff)) +* **h1x:** eliminate writer layer, use ConnectionPoolContext + ChunkedFramingHelper ([0ba8c0b](https://github.com/Leberkas-org/GaudiHTTP/commit/0ba8c0b66ffe39209f9ea443a0b448f023c6d888)) +* **h2,h3:** migrate to FlowControlledBodyPump/MultiplexedBodyPump with generic targets ([82e5feb](https://github.com/Leberkas-org/GaudiHTTP/commit/82e5febd3b9edad63b49229b8a5e324b41cc593d)) +* **h2:** replace push-based body drain with BodyDrainScheduler ([1d3b371](https://github.com/Leberkas-org/GaudiHTTP/commit/1d3b3719a0b0d096199aa436130b8a59c1993bd1)) +* **h3:** replace push-based body drain with MultiplexedBodyPump ([34f92da](https://github.com/Leberkas-org/GaudiHTTP/commit/34f92da05f03877c9571edaef8ad9da1bfc886ab)) +* **http11:** extract request-body drain scheduling from OnResponse ([f205e7a](https://github.com/Leberkas-org/GaudiHTTP/commit/f205e7a099ebb198de36cc951b3c539785312e7c)) +* **http11:** extract streaming-resume and request-dispatch helpers from DecodeClientData ([1b31249](https://github.com/Leberkas-org/GaudiHTTP/commit/1b312496731c214c90576fabe872778a59c1a9ef)) +* **http11:** model client connection lifecycle as explicit state enum ([049cb3a](https://github.com/Leberkas-org/GaudiHTTP/commit/049cb3a14dff00470ece5f73a463f5653b817db6)) +* **http11:** unify response-completion epilogue and keep-alive rearm ([e604765](https://github.com/Leberkas-org/GaudiHTTP/commit/e604765259a085310f9d3918f6f39b9fcec002a6)) +* **http1:** extract shared rate-guard and reconnect-policy helpers ([98d5882](https://github.com/Leberkas-org/GaudiHTTP/commit/98d58820cb94096115ed60fda7ac9ae66b4625d1)) +* **http2:** explicit stream lifecycle state with single ReleaseStream teardown ([bad6902](https://github.com/Leberkas-org/GaudiHTTP/commit/bad6902af36ecc47629857e8377f2eb29750b165)) +* **http2:** extract connection bootstrap and body-send strategy ladder from EncodeRequest ([93c1b1f](https://github.com/Leberkas-org/GaudiHTTP/commit/93c1b1fee124e54ec5b80ec506980d82d7ff5742)) +* **http2:** unify trailer emission and consolidate rate observation in server manager ([60a64b8](https://github.com/Leberkas-org/GaudiHTTP/commit/60a64b822f1139e55bc1f63255b01ba6e20aad96)) +* **http3:** extract body-dispatch and FIN epilogues in StreamManager ([8c342c4](https://github.com/Leberkas-org/GaudiHTTP/commit/8c342c42265dafa4de4c15f99d2d0ff7bc745779)) +* **http3:** extract body-send strategies from EncodeRequest ([a2b5c65](https://github.com/Leberkas-org/GaudiHTTP/commit/a2b5c6596036d9a3fc7b86c37f1d70fcba3c736e)) +* **http3:** extract headers-frame triage and consolidate decode error handling ([83594e7](https://github.com/Leberkas-org/GaudiHTTP/commit/83594e7fccc158e522712e5b10b1d0643cf95988)) +* **http3:** extract shared outbound writer owning framing and pump credit ([cc0e4d9](https://github.com/Leberkas-org/GaudiHTTP/commit/cc0e4d907b3773f63887ba4c3059fb54efe1cf8e)) +* **lifecycle:** add Client/Server prefix to Lifecycle production + test classes ([fbcd2c9](https://github.com/Leberkas-org/GaudiHTTP/commit/fbcd2c92e983b4176453c146ca89d8e5f76cd251)) +* **lifecycle:** add PostStop tracing to server bridge and protocol stages ([e71195e](https://github.com/Leberkas-org/GaudiHTTP/commit/e71195e8c8147daab798f94ccda72ea17b26d996)) +* **options:** Add new HTTP client/server options ([0c1d480](https://github.com/Leberkas-org/GaudiHTTP/commit/0c1d4802a28c5e0526c3ad69d43ca98b22989ded)) +* **options:** prune inert/obsolete options and rename body pump field ([5de3e82](https://github.com/Leberkas-org/GaudiHTTP/commit/5de3e82598586a2828b3e56f9a2e43e28bd29710)) +* **pooling:** migrate GaudiFeatureCollection to Poolable dispose pattern ([ff43399](https://github.com/Leberkas-org/GaudiHTTP/commit/ff4339949e6dbe2e6a1efe6205d56a242f6f3d2d)) +* **pooling:** migrate H2 StreamState to Poolable + buffered body truncation validation ([2fbfe62](https://github.com/Leberkas-org/GaudiHTTP/commit/2fbfe62b9b3ed5d952d9fe98269f98932feb68f6)) +* **pooling:** migrate PumpSlot and body pumps to Poolable dispose pattern ([17afd06](https://github.com/Leberkas-org/GaudiHTTP/commit/17afd060f5c874f9b8cfa72d0a32f0232aeb5f20)) +* **pooling:** remove poolContext param from H1.x decoders/state machines ([b7686b4](https://github.com/Leberkas-org/GaudiHTTP/commit/b7686b4a4bc5cf150475be6fc3b7240c4047043a)) +* **pooling:** rename ConnectionPoolContext -> ConnectionObjectPool ([18a5cc9](https://github.com/Leberkas-org/GaudiHTTP/commit/18a5cc997c6a7c3f9d6d04094d3ed89056648045)) +* **pooling:** route H2/H3 StreamState through ConnectionObjectPool ([1ae1e83](https://github.com/Leberkas-org/GaudiHTTP/commit/1ae1e83ceb39c74ea936028fa39d6f5ba2898f8e)) +* **pooling:** route H3 FrameDecoder through ConnectionObjectPool ([b8f4b27](https://github.com/Leberkas-org/GaudiHTTP/commit/b8f4b27f2440ff1dd6440f372eea0f0ace5f5ad8)) +* **pooling:** route H3 StreamManager StreamState through ConnectionObjectPool ([1590bfa](https://github.com/Leberkas-org/GaudiHTTP/commit/1590bfaaa0ff36c9eea9750b15e7e4b40ee50e43)) +* **pooling:** unify inbound and outbound buffers on shared cross-thread pool ([778f1ce](https://github.com/Leberkas-org/GaudiHTTP/commit/778f1cee8284ac0ca02134fe9c55c032b5b83538)) +* **pooling:** update tests + fix double-dispose bug in Poolable ([c43bc79](https://github.com/Leberkas-org/GaudiHTTP/commit/c43bc79f46d6a801c17513f977c1de85b8e67fc1)) +* **protocol:** delete dead and write-only StreamState members in H2/H3 ([5f2072e](https://github.com/Leberkas-org/GaudiHTTP/commit/5f2072e0d3a8ccc8dbc5f67a9b34bc87009c6ace)) +* **protocol:** standardize client SM constructor order to (options, ops) ([61fc557](https://github.com/Leberkas-org/GaudiHTTP/commit/61fc557d02a7b7005233d3f30dc9681b23769a5c)) +* Remove obsolete buffer size options ([e2a2160](https://github.com/Leberkas-org/GaudiHTTP/commit/e2a2160bcb0ce5d4b82b15f7824d4037e6052fad)) +* remove pass-through TryDecodeEof and dead _streamRunning flag ([60ad0b6](https://github.com/Leberkas-org/GaudiHTTP/commit/60ad0b6b8faf0298d76df47331442466cfc99a98)) +* Remove unused MemoryPool reference ([e56b38d](https://github.com/Leberkas-org/GaudiHTTP/commit/e56b38df69493f202352508a3bbe7ecf3bb0acc5)) +* **stages:** align port field names with shape vocabulary ([e8c0415](https://github.com/Leberkas-org/GaudiHTTP/commit/e8c0415b7eb1b4250859724d0efe038c5ec83ad2)) +* **stages:** consolidate per-request bookkeeping into RequestSlot with single FinishRequest ([8eb6a1d](https://github.com/Leberkas-org/GaudiHTTP/commit/8eb6a1dd3b8ab13fb66ef3b8da8105fcb1bae29f)) +* **stages:** dedupe drain predicates, unify completion entry points ([a6bf69b](https://github.com/Leberkas-org/GaudiHTTP/commit/a6bf69b77930e09e8d750450087df1e5c804971f)) +* **stages:** remove dead outbound coalescing from client stage logic ([76f9efd](https://github.com/Leberkas-org/GaudiHTTP/commit/76f9efd75e89e60fda8b0ce4135db9803d419540)) +* **stages:** rename connection stage logics to symmetric client/server pair ([05afc4d](https://github.com/Leberkas-org/GaudiHTTP/commit/05afc4d5182f3b38a722f6981a479f1691b30147)) +* **stages:** reorder client/server stage logic into canonical layout ([2451bf9](https://github.com/Leberkas-org/GaudiHTTP/commit/2451bf9afdf1fe6619fb7f478bbdae39768b19a0)) +* **test:** add shared test infrastructure ([35e9f7d](https://github.com/Leberkas-org/GaudiHTTP/commit/35e9f7d0168dea1ce2c30301133a851307d1c2c9)) +* **test:** consolidate duplicated test option factories ([4d86872](https://github.com/Leberkas-org/GaudiHTTP/commit/4d868722720f867ed5ab1571db819f9faf1e49f0)) +* **test:** migrate client specs to shared TestClientOptions ([312c550](https://github.com/Leberkas-org/GaudiHTTP/commit/312c550d88c58f7e76c1a82e892c9222855ce94e)) +* **test:** migrate H1.0/H1.1 server specs to shared ServerTestContext ([00c93a6](https://github.com/Leberkas-org/GaudiHTTP/commit/00c93a67e8efc482310a46e9bebbd38d5ccdbbf8)) +* **test:** migrate H2/H3 server specs to shared ServerTestContext ([cf1ec61](https://github.com/Leberkas-org/GaudiHTTP/commit/cf1ec61dd992cb22a9848ad2e67595d0e4f13532)) +* **test:** migrate SSE/Client specs to StreamTestBase ([a3bc755](https://github.com/Leberkas-org/GaudiHTTP/commit/a3bc755798c3e86426eda0f6b3acd1eb6818099e)) +* **tests:** add Client/Server prefix to Lifecycle test specs ([b45c0e7](https://github.com/Leberkas-org/GaudiHTTP/commit/b45c0e7e13febe5383083f6df4b08f60811bc2bd)) + + +### Dependencies + +* bump actions/checkout from 6 to 7 ([38d6fef](https://github.com/Leberkas-org/GaudiHTTP/commit/38d6fefa939139357ed5c36fec1f9f56652b9f64)) +* Bump Microsoft.Diagnostics.Tracing.TraceEvent from 3.2.3 to 3.2.4 ([7cfd0e8](https://github.com/Leberkas-org/GaudiHTTP/commit/7cfd0e8790abe998e27b6d92ec1d83b2c949042b)) +* Bump Microsoft.Extensions.TimeProvider.Testing from 10.6.0 to 10.7.0 ([84b6d0a](https://github.com/Leberkas-org/GaudiHTTP/commit/84b6d0af8059c99de2f18dd28597f497625b611a)) +* Bump Verify.XunitV3 from 31.18.0 to 31.20.0 ([35e01df](https://github.com/Leberkas-org/GaudiHTTP/commit/35e01df4e9881e5d80d40c88f2ea8f7387290023)) +* **submodule:** bump servus.akka for actor-confined QUIC read pump ([7241276](https://github.com/Leberkas-org/GaudiHTTP/commit/72412762b1f32108d6454a2360a1bcece79322a6)) +* **submodule:** bump servus.akka for staggered multi-address TCP connect ([c258a1f](https://github.com/Leberkas-org/GaudiHTTP/commit/c258a1f489c9a2bb3dc1c53421c61ab77822a835)) +* **submodule:** bump servus.akka for TCP transport contract fix ([22faa4e](https://github.com/Leberkas-org/GaudiHTTP/commit/22faa4e114e629ded0bf20313d254bc292eb9d3c)) +* **submodule:** bump servus.akka to unified rent-and-receive transport; migrate to WireBuffer ([b4d5645](https://github.com/Leberkas-org/GaudiHTTP/commit/b4d564589a5966f11bd8b2a12477172e64844d9e)) + +## Changelog