Skip to content

Question: HTTP client (TLS-capable) on the roadmap? #47

@PeterXMR

Description

@PeterXMR

The web examples (examples/web-response.0, the Response.text(...) API, the zero routes --json command) show a clear server-side HTTP story — pub fun GET(request: Request) -> Response, Next.js-style routing. What's not clear from the README, examples, or the docs-site articles I've looked at is whether there's an HTTP client primitive either today or planned.

Concretely: for the use case of a native CLI / tool that calls a few third-party REST APIs over HTTPS, parses JSON responses (great that std.json is already in stdlib — examples/std-data-formats.0), and aggregates the results, is the intended path:

  1. There's already a std.http.client.get(url)-ish thing in the stdlib that I missed scrolling through the examples?
  2. It's planned but not yet shipped — even rough timing ("weeks vs months vs not yet on the roadmap") would help me decide whether to wait or plan around it.
  3. The recommendation is to FFI out to libcurl (or similar) via the examples/c-interop/ pattern.
  4. The web stack is intentionally scoped to server-side only for the foreseeable future — a totally reasonable scoping choice given the Vercel-edge use case; just want to know explicitly.

Asking because I'm evaluating Zero as a possible re-implementation target for the pure-math / parsing pieces of a small Bitcoin price viewer (Kotlin Multiplatform UI + Rust core today: https://github.com/PeterXMR/spotprice). Whether the HTTP-client piece exists determines whether porting the network-facing modules is in scope, or whether Zero is the right fit only for the math / aggregation pieces (which I'd port regardless — core/convert/ and core/aggregator/median.rs look like a good fit for typed effects + choice + generics).

I noticed #20 covers structured concurrency separately, so I've kept this issue focused on just the HTTP-client question — happy to keep the concurrency discussion there.

If there's a roadmap doc or design discussion thread I missed, a pointer is fine. Thanks for putting Zero in the open; the examples have been a good read regardless of where it lands for my use case.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions