summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-14 14:28:15 -0300
committerGabriel Schneider <[email protected]>2026-09-16 11:18:48 -0300
commitae310a207534b33b7321dd2b9f423a73b1969159 (patch)
treeb4c2e85091a4ff6657e0a04ba1b2ef030d588ac8 /README.md
parent5f24c4a2284a0af84fb9d116f7a39f6a58e42ae9 (diff)
downloadcloud9-ae310a207534b33b7321dd2b9f423a73b1969159.tar.gz
cloud9-ae310a207534b33b7321dd2b9f423a73b1969159.zip
Add reusable HTTP transport, serial gateway, and WASM file browser
Diffstat (limited to 'README.md')
-rw-r--r--README.md34
1 files changed, 32 insertions, 2 deletions
diff --git a/README.md b/README.md
index 226ec78..57de62e 100644
--- a/README.md
+++ b/README.md
@@ -5,14 +5,35 @@ A Zig 0.16 library for base **9P2000** clients, servers, and transports.
The protocol core uses caller-owned buffers and bounded request tables. It has
no heap allocation, OS calls, threads, or filesystem policy. TCP and Unix stream
adapters support `std.Io`; nonblocking POSIX adapters support existing event loops.
+HTTP/WebSocket transport supports native HTTPS and caller-owned byte streams.
Optional QUIC transport takes caller-provided OpenSSL bindings and an ALPN name.
Mounting, namespace discovery, exported trees, permissions, and application
lifecycle stay with the application. There are no 9P2000.u or 9P2000.L messages.
+Run the HTTP gateway and its WebAssembly file browser:
+
+```sh
+zig build serve -Doptimize=ReleaseSafe -- --upstream tcp:127.0.0.1:564
+# Open http://127.0.0.1:8080; files load automatically
+```
+
+This requires a running 9P server at `127.0.0.1:564`; the gateway does not start
+one. Set `--upstream unix:/actual/path/to/9p.sock` to use a running Pardes instance.
+If port 8080 is occupied, add `--listen 127.0.0.1:0` and open the URL printed at
+startup. Browser attach defaults can be set with `--user NAME --tree NAME`;
+there is no connection form in the page. File links use ordinary paths such as
+`/self/listeners`; gateway assets and endpoints live under `/_cloud9/`.
+
+It also accepts Unix sockets and configured serial devices. The HTTP transport
+is public library code; [HTTP/HTTPS usage and the browser tests](docs/http.md)
+explain how to embed it and where HTTP/3 support belongs.
+
```sh
zig build test
zig build transport-test
+zig build http-test
+zig build e2e -Doptimize=ReleaseSafe # Chromium + native HTTPS + Unix + serial
zig build quic-test -Dquic=true # system OpenSSL 3.6+
zig build fuzz -Doptimize=ReleaseSafe -- 4200 1000000
zig build differential -Doptimize=ReleaseSafe -- --seed 4200 --rounds 1000
@@ -25,8 +46,17 @@ and saves a corpus, configuration, and JSON report under
runs the cloud9 client against go9p's filesystem server over local pipes.
Malformed-input probes run only against cloud9. No remote targets are contacted.
-To use a sibling checkout, add `.cloud9 = .{ .path = "../cloud9" }` to the package
-dependencies, then import its module:
+Consume the published package by pinning a commit in `build.zig.zon` — this is
+what makes a build reproducible from the manifest alone:
+
+```sh
+zig fetch --save=cloud9 git+https://git.sr.ht/~gbrls/cloud9#<commit>
+```
+
+The toolchain has no `git+ssh` support, so the manifest carries the read-only
+HTTPS URL. Push to `[email protected]:~gbrls/cloud9`. For work on both packages at
+once, substitute `.cloud9 = .{ .path = "../cloud9" }` while editing, then
+re-pin. Either way, import the module the same way:
```zig
const cloud9 = b.dependency("cloud9", .{