summaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
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).