Issue #90: The HTTP server, second half: TLS, HTTP/2, more bodies

Open and answer this issue on GitHub.

libraries, note · opened 2026-09-30 · updated 2026-10-06 · 0 comments

Owner’s order: last of the five, and its minimal form went first. Record: ADR-038 §4.5.

Built: the runtime before main, files on io_uring, sockets signalling readiness (D3-D5); a socket in std (ADR-198, 0.0.164); the socket layer (ADR-199, 0.0.165); a minimal HTTP/1.1 server with http::listen and its caps (ADR-194 D5, 0.0.166; examples/hello-http is driven over a real socket by tests/project.rs); its parser written in Nikaia as a grammar (0.0.248, nikaia-std/src/tools/http1.nika). nikaia serve is cut (ADR-200 D1).

Open (sub-issues): rustls (D2), HTTP/2, the bodies of ADR-058 and ADR-018 D2, and many connections at once (the server handles one at a time today). Also route hashing, which has no target until a server carries routes.

One piece was answered without the server: a name the request chose reaching the filesystem is ADR-108: the root is an argument of the call (http::File(path, root)), built for fs at 0.0.178.

Measured before it is built: benches/sendfile/ and docs/history/zero-copy-send.md price the five ways a file reaches a socket; mmap per request is 2.5x worse than plainly reading at 4 KiB, the trap http::File would otherwise walk into.

Back to Open Issues