summaryrefslogtreecommitdiff
path: root/docs/cloud9.md
blob: e18130efddcb22b77e7130e0d2e7b243d9bc9902 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# cloud9 integration

The published `cloud9` package owns the base 9P2000 wire format, client and server
connections, and TCP/Unix/QUIC transports. `build.zig.zon` pins a commit from
`[email protected]:~gbrls/cloud9`, so `zig build` fetches it into `zig-pkg/` like every
other dependency; no sibling checkout is required. Re-pin with
`zig fetch --save=cloud9 git+https://git.sr.ht/~gbrls/cloud9#<commit>`, and swap in
`.cloud9 = .{ .path = "../cloud9" }` while editing both packages at once.

`src/9p.zig` remains the adapter between cloud9 requests and Pardes filesystem
operations. Mounting, Unix namespace discovery and permissions, the editor event
loop, connection limits, and exported tree policy remain here. `src/9p_quic.zig`
selects the existing `pardes-9p` ALPN for cloud9's optional OpenSSL transport.
The snapshot client and standalone protocol/GPIO tests import the same module.
The separate `05-zig-p4` build also supplies cloud9 for the GPIO firmware entry.

Run `zig build 9p-test` for the filesystem adapter and
`zig build 9p-io-test -Dquic=true` for native transport/client integration. Run cloud9's `zig build test`,
`transport-test`, `quic-test -Dquic=true`, `fuzz`, and `differential` steps for the
shared implementation. See cloud9's `docs/validation.md` for recorded runs and
known test-environment limits.

Invalid framing now terminates a server connection. Cloud9 also checks reply
counts and reserves tags until flush completion. Client metadata is slightly
larger to track those reservations, and its bounds tests reflect that fixed cost.