Issue #668: std has no HTTP/HTTPS client: std::net::connect is blocking plain TCP

Open and answer this issue on GitHub.

decision · opened 2026-10-18 · updated 2026-10-18 · 0 comments

What is missing

A Nikaia program cannot fetch a URL. std::net offers bind/accept and a blocking connect(address) over plain TCP (crates/nikaia-std/src/net.rs); std::http1 only parses request heads for a server (examples/http). There is no TLS and no client.

Where it came from

Writing scripts/site-issues.py (reads the GitHub API) as a Nikaia tool, as CLAUDE.md asks of new helper tools (“Helper tools are written in Nikaia”). The page-building part ran; the download of https://api.github.com/... and of the site-issues bundle could not be written. A prototype only works if the JSON is fetched outside (gh api, curl).

Question for the owner

Does the language offer an HTTP(S) client in std? Most languages count it as basic (Python urllib, Go net/http, Rust has none in std). Decide from what the language is for, not from this one script. If yes: TLS inside std or through a foreign library, blocking or async, redirects, timeouts, headers.

To build (once decided)

  1. ADR + specification text for the client’s surface.
  2. std::http client: get(url; headers) returning status, headers, body.
  3. TLS (decision: own or foreign).
  4. A test against a local std::net listener.

Part of the list: site-issues in Nikaia (see the tracking issue).

Back to Open Issues