Release 7.0.13-beta - #1055
Merged
Merged
Release 7.0.13-beta#1055
Conversation
…KiB reverse. Tiny and oversized ArrayPool rents keep allocating exact arrays so the common tiny-GET path does not pay Rent/copy.
…alesce. Phase A: Send/Receive ValueTask, byte status/header parse, WriteResponse sync-complete, CopyBody ValueTask, and no-Body coalesce on terminate-lite / IsFastPath / H1 client bridges.
…ody coalesce. Shared H2/H3/WS hot-path leaves return default ValueTask on sync completion; emit and Preencoded paths avoid dual Body stamps when handlers do not need Body.
Closes the only missing twin of an existing session-less path so noop BeforeRequest on H3→H2 matches H3→H1/H3→H3, and stamps Response.Body for BeforeResponse / FinishMitm fallback.
Win/Linux product + heavier/gRPC/WS gates cleared; Mac H3->H1 TWP/YARP 0.682 is Intel-Mac peer noise (absolute TWP up). Paste tooling now applies gRPC/WS tables and stamps heavier SHA.
Awaiting full-frame ReserveAsync parked the shared origin reader when a 64 KiB body needed one more byte than HttpClient's 65535 stream window, freezing sibling streams. Partial reserve + deferred DATA (Kestrel-style) keeps the loop moving; drain on WINDOW_UPDATE.
Sync-complete ArrayPool.Return reused MsQuic Memory before the copy, truncating HTTP/3 bodies and failing integration (Sonar never ran). Leave H3→H2 streamed responses without forcing IsBodyRead.
…rd cap. Add bodies/post/grpc CI validators, expand product reverse YARP pairs, and size the deferred outbound queue for 256 KiB bodies so high-concurrency H2 no longer RST mid-stream.
Gated suite Mac product H3 ratios were ~0.62 (above 0.50). Also SKIP heavier pairs when TWP has no c=64 SLO instead of failing.
Keep the shared frame reader non-blocking on both DATA directions, preserve frame order with AddFirst remainders, absorb benign origin RSTs over pending response bytes, and re-gate post64k H2 pairs after local Windows confirm.
…1054). Coarse BlockPrivateNetworkDestinations rejects 10.*; this opt-in TCP connect-time flag blocks loopback only so intranet hosts stay reachable.
That page is for the 5.0 upgrade; the 7.x flag is covered by API docs and configuration.md.
Keep a stub at the old wiki path, retitle as Migration from 4.x, and document BlockLoopbackDestinations (#1054).
Serialize UdpClient sends, arm backend receive before the first forward, and keep MsQuic handshake outside the measure-duration cancel budget.
The guide lives at Migration-from-4.x; drop the redirect page from the wiki sidebar.
MsQuic finishes Win handshake with short-header packets; delaying those from t=0 left TWP and YARP at sustain 0. Raise socket buffers and apply delay only after a short settle window.
Arm backend ReceiveAsync before the first client forward so MsQuic Retry/Initial is not lost, and apply loss% only on UDP — userspace delay collapses multiplexed keep-alive for TWP and YARP.
Exempt handshake and ACK-sized UDP datagrams from drop, and open more keep-alive QUIC connections under loss so 1% DATA loss does not collapse the ratio.
Add validate-lossy-arch-gates.ps1 and wire it into the saturation workflow so hostile heavier tables cannot publish TWP zeros or soft ratios when YARP measures.
PowerShell returned a fixed-size array from New-Pairs so Suite=arch crashed on .Add after a full ramp. Smoke synthetic CSVs before the ramp so gate-script bugs fail in seconds.
Reserve send credit only when the deferred queue is empty, keep END_STREAM visible until the stream is cancelled, and drop capped session streams instead of leaving them tracked.
Extract NoteEndStream/Flush helpers so new-code reliability rating clears the quality gate without changing drain behavior.
Heavier/product/gRPC/WS tables clear prior TWP sustain-0 cells; paste uses best SLO-pass concurrency; UDP lossy note is drop-only.
Mac TLS nc-tiny TWP/YARP sustain hit 0 when Process.Refresh ran during the measure window. Snapshot RSS/CPU after handshake steps, and allow surgical GHA re-runs via --arm-contains.
Darwin SslStream new-connection TLS fails the 200 ms handshake budget for both TWP and YARP; keep 200 ms on Win/Linux and use 500 ms on macOS only. Also disable client CRL/OCSP on the load handler.
GHA 36330150552 confirmed TWP/YARP nc-tiny >0 on macos-15-intel; Win/Linux TLS sources and numbers unchanged.
|
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
developtobetaas 7.0.13-beta (patch bump from 7.0.12).BlockLoopbackDestinations(Feature request: allow blocking loopback destinations only (not the whole private range) #1054), H2 deferred DATA / window fixes, H3 frame buffer lifetime + ArrayPool reuse, ValueTask hot-path coalesce, Performance wiki refresh, and RPS gate tooling.SKIP_CATALOG_PUBLISH=true).Test plan
.NET / buildgreen.NET / ui-portableall 3 OS green.NET / cli-e2eall 3 OS greenRPS saturation / rpscompare-spot all 3 OS greenrps-publish-gate+rps-peer-gategreen →v7.0.13-beta+ NuGet7.0.13-beta