Add owned streaming HTTP client and native TLS acquisition - #452
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
julia-script
marked this pull request as ready for review
September 15, 2026 01:38
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.
Adds an owned streaming HTTP/1.0–1.1 client over plain and authenticated TLS transports. Callers can incrementally upload and consume responses within a scoped exchange; a final 404 is data, and reuse requires completed request/response framing. Unread-body return, failure, cancellation, and CONNECT handoff end ordinary reuse eligibility.
Previously callers had to assemble transport ownership, framing, request policy, and cleanup. An exchange now exposes the staged operations directly:
The implementation includes checked origins and headers, atomic origin-bound Basic authorization, bounded informational responses and Require100, preserved partial-output progress, explicit CONNECT suffix handoff, and response-bound content decoding. Native acquisition preserves the original TLS identity and one absolute deadline through acquisition and HTTP; synchronous hostname resolution rejects unsupported deadline promises before lookup. The decoder descriptor is charged before allocation and boxed for the normal Wasm stack.
Compiler fixes preserve provider selection and borrowed-pattern scope tracking without treating borrowed payloads as owned cleanup. Documentation generation renders module aliases correctly. Duplicate LSP catalog work is removed, and scale characterization is opt-in. Documentation generation and example validation have separate CI jobs under their existing limits.
Implements JUL-23. OpenSpec:
openspec/changes/implement-streaming-http-client(all implementation tasks complete).Verification on
2fb7c22234150392dc17ac298978f36804c0e128:Test economics: ten retained backend executions total 5,993.962s. Structured checks and measured existing-test changes, less the removed 72.979s default LSP scale test, give an observed net addition of 6,185.064s; documentation adds a separately observed 791s. These are sums of work from samples under differing load, not a controlled whole-suite elapsed-time estimate. All nineteen staged scenarios remain; shared receive/deadline assertions, consolidated request admission, minimal providers, existing analysis snapshots, and removal of redundant negative-case Wasm legs avoid repeated work. Additional LSP savings are unquantified. Failed development probes are excluded.
Remaining limitations: the protocol Wasm check passed with narrow local headroom (595.024s against 600s); no timeout, heap, or stack limit was raised. A separately reproduced compiler limitation loses an interface witness when distinct borrows share one inferred implementation lifetime; it also fails at the work base. The HTTP borrowed-provider fixture explicitly preserves the transport lifetime and verifies an independent captured marker. This change does not claim to resolve that general inference limitation.