Skip to content

Add owned streaming HTTP client and native TLS acquisition - #452

Merged
julia-script merged 19 commits into
mainfrom
julia/jul-23-streaming-http-client
Sep 15, 2026
Merged

julia-script merged 19 commits into
mainfrom
julia/jul-23-streaming-http-client

Conversation

@julia-script

@julia-script julia-script commented Sep 14, 2026

Copy link
Copy Markdown
Owner

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:

run Client.send(&mut exchangeValue.*)
run Client.finishRequest(&mut exchangeValue.*, &trailers)
let status = run Client.receive(&mut exchangeValue.*)

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:

  • Exact-head CI passed: all 20 required jobs, including validation/package contents, compiler shards, documentation generation/examples, platform, native and Wasm checks. CI supplies the full repository guard; no redundant full local suite was run.
  • All seven native acceptance programs and three intended Wasm legs passed. Final protocol: native 698.558s / Wasm 595.024s; limits native: 753.812s. Passing unchanged request, content, TLS, ownership, and output-failure results were retained.
  • Focused source/MIR regressions, documentation policy across 147 modules, formatting/lint/types, generated registrations, strict OpenSpec validation, docgen and LSP checks passed.
  • Independent correctness review and distinct test-economics review both approve the final committed diff, with no unresolved findings.

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.

@vercel

vercel Bot commented Sep 14, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
silk-effect-docs Ready Ready Preview Sep 15, 2026 1:02am UTC

Request Review

@julia-script
julia-script marked this pull request as ready for review September 15, 2026 01:38
@julia-script
julia-script merged commit 665460e into main Sep 15, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant