summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorGabriel Schneider <[email protected]>2026-09-19 21:26:05 -0300
committerGabriel Schneider <[email protected]>2026-09-19 21:26:05 -0300
commitb05abcba3ea09ea106ad28364c6e40a3ec31b890 (patch)
tree9170fac5e7e5d8bde108de34a182aaa9d6844117 /README.md
parentae310a207534b33b7321dd2b9f423a73b1969159 (diff)
downloadcloud9-b05abcba3ea09ea106ad28364c6e40a3ec31b890.tar.gz
cloud9-b05abcba3ea09ea106ad28364c6e40a3ec31b890.zip
Add 9player and introspect as programs beside the library
9player/: FUSE mount CLI that mounts a 9P2000 tree into a fresh user+mount namespace and runs a program in it (no root, no libfuse, no libc). introspect/: the 9P debug/introspection library (freestanding core, value renderers, Linux probe with threads/stacks/memory/breakpoints/panics) and its demo server. Each has its own build fragment; the root build.zig wires them behind -D9player/-Dintrospect with namespaced steps (9player-itest, introspect-check-freestanding, programs-test, ...) and exports the introspect module for dependents. This is the layout for related programs. Co-Authored-By: Claude Fable 5.1 <[email protected]>
Diffstat (limited to 'README.md')
-rw-r--r--README.md29
1 files changed, 29 insertions, 0 deletions
diff --git a/README.md b/README.md
index 57de62e..d1e52f9 100644
--- a/README.md
+++ b/README.md
@@ -77,5 +77,34 @@ answer Tversion with `negotiate()`. Answer other requests with `reply()`. The
backend implements its filesystem and fid lifecycle; cloud9 checks reply types,
tags, counts, negotiated frame sizes, and flush completion.
+## Programs
+
+Programs built on cloud9 live in sibling directories of `src/`, each with its
+own sources, tests, README and a `build.zig` fragment that the root
+`build.zig` imports and enables with a toggle (`zig build --help` lists the
+steps). New related programs follow the same layout.
+
+* [`introspect/`](introspect/README.md) — a 9P debug/introspection server as
+ a library (module `introspect`, exported next to `cloud9`; freestanding
+ core, Linux debug layer) and its demo binary `introspect`.
+ `-Dintrospect=[bool]`; steps `introspect`, `introspect-test`,
+ `introspect-check-freestanding`, `introspect-debug-test`,
+ `introspect-debug-itest`, `introspect-adv`.
+* [`9player/`](9player/README.md) — mount a 9P tree into a fresh user+mount
+ namespace via FUSE and run a program in it, without root (Linux, no libc).
+ `-D9player=[bool]`; steps `9player`, `9player-test`, `9player-itest`,
+ `9player-adv`.
+
+Both toggles default to on for Linux targets and off elsewhere; enabled
+programs are installed by the plain `zig build`, and `programs-test` /
+`programs-itest` run every enabled program's unit and integration steps. A
+dependent package gets both modules from the one dependency:
+
+```zig
+const cloud9_dep = b.dependency("cloud9", .{ .target = target, .optimize = optimize });
+app.root_module.addImport("cloud9", cloud9_dep.module("cloud9"));
+app.root_module.addImport("introspect", cloud9_dep.module("introspect"));
+```
+
See [design and ownership contracts](docs/design.md),
[specification references](docs/spec.md), and [validation](docs/validation.md).