diff options
| author | Gabriel Schneider <[email protected]> | 2026-09-19 21:26:05 -0300 |
|---|---|---|
| committer | Gabriel Schneider <[email protected]> | 2026-09-19 21:26:05 -0300 |
| commit | b05abcba3ea09ea106ad28364c6e40a3ec31b890 (patch) | |
| tree | 9170fac5e7e5d8bde108de34a182aaa9d6844117 /README.md | |
| parent | ae310a207534b33b7321dd2b9f423a73b1969159 (diff) | |
| download | cloud9-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.md | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -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). |
