From 66f2e492c348677ab3050f5e378b9eb4c04c98ce Mon Sep 17 00:00:00 2001 From: Gabriel Schneider Date: Sun, 20 Sep 2026 01:47:28 -0300 Subject: 9proc core becomes a backend of cloud9.fs; engine gains optional features 9proc's own fid table, walk loop and dir-read engine are replaced by cloud9.fs.Server; the tree (static, vars, providers) is served through the engine's Req/Reply contract with node ids that keep the old qid scheme. Providers may answer later by returning error.Again (parked in the engine, retried each step, Tflush -> EINTR); no new files are exposed. Engine (backward compatible, all opt-in via Backend.features / Options): create, remove, wstat, reference accounting for backends that count handles, a salted fid index, name_capacity 0 (names from getattr), Reply.ename for backend-chosen error text, Attr.path/version/atime. Engine-level error strings and the 217-byte msize floor now apply to 9proc; tests updated accordingly. Co-Authored-By: Claude Fable 5.1 --- 9proc/README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to '9proc/README.md') diff --git a/9proc/README.md b/9proc/README.md index 0fd3ddb..15177d7 100644 --- a/9proc/README.md +++ b/9proc/README.md @@ -9,7 +9,12 @@ panics. The core (`core`, `vars`) is freestanding: no allocator, no OS, no threads, caller-owned static `Storage`, fixed-capacity tables sized at comptime. It -compiles for `riscv32-freestanding-none`. `scratch` (an in-memory read/write +compiles for `riscv32-freestanding-none`. The tree is a backend of +`cloud9.fs.Server`, the file-server engine every 9P server built on cloud9 +shares: the engine owns fids, walks, permissions and directory cursors; +the core answers its requests from static nodes, exposed variables and +providers, and a provider may answer a read later (`error.Again` parks it +until a later step). `scratch` (an in-memory read/write tree) takes an allocator; `linux` is the platform layer (listeners, a poll loop on one background thread, threads/stacks/registers, memory, breakpoints and panics via `std.debug`). [docs/LIBRARY.md](docs/LIBRARY.md) has the full @@ -19,7 +24,7 @@ contract. 9proc/ build.zig fragment imported by cloud9's root build.zig (steps below) src/root.zig pub const core, vars, scratch, linux; Config, Server(cfg), Provider - src/core.zig Tree/Server engine on cloud9.Server: fids, walks, dir reads, providers + src/core.zig the tree (static nodes, vars, providers) as a backend of cloud9.fs.Server src/vars.zig comptime value renderers (@typeInfo) for /vars src/scratch.zig in-memory read/write tree provider (takes an Allocator) src/freestanding_check.zig root for the riscv32-freestanding-none compile check -- cgit v1.3