Docs: add the Zig self-hosting roadmap
A forward-looking design note on making danos a real Zig target (-target x86_64-danos) and eventually running the compiler on it, focused on the standard-library surface (not the editor/terminal). The core realisation: Zig 0.16 (post-writergate) collapses an OS port to ONE seam — std.fs is gone, everything routes through the std.Io vtable, and std.posix is generic over a single per-OS `system` module (std.os.<tag>). So the port is "write std.os.danos once" and the whole fs/process/Io tower lights up, rather than reimplementing the namespaces. Records the decisions this shapes now: build runtime.os (the seam, promoted into a forked std/os/danos.zig later) plus a thin runtime.fs; retire the premature library/posix shim (only 5 unistd call sites); do NOT hand-mirror the high-level std namespaces; do NOT emulate the Linux ABI; defer musl. Covers the host/target/ self-host roles and the four-part compiler fork, a coverage table of what danos has vs the gaps (mkdir/unlink/rename/truncate, richer stat, wall-clock, env, cwd, entropy, stdio bytes), a phased plan (target -> read-side+retire-posix -> fs-mutation+stat -> single-threaded self-linked compiler), and the risks (fork rebase treadmill, -fsingle-threaded and -fno-llvm/-fno-lld being load-bearing, the "w"-does-not-truncate corruption bug). Linked from the docs index.
This commit is contained in:
@@ -82,6 +82,12 @@ Start with the north star:
|
||||
- **[resilience.md](resilience.md) — resilience.** A design note (not built yet) on
|
||||
fault isolation + live restart — the reincarnation-server + capability model that
|
||||
makes "if I break it, I can restart it" real. danos's core motivation.
|
||||
- **[zig-self-hosting.md](zig-self-hosting.md) — running Zig on danos.** A design note
|
||||
(not built yet) on making danos a real Zig target (`-target x86_64-danos`) and
|
||||
eventually running the compiler on it. The key realisation: Zig 0.16 reduces an OS
|
||||
port to **one seam** (`std.os.danos`), so we build `runtime.os` (→ that seam) plus a
|
||||
thin `runtime.fs`, retire the `posix` shim, and follow a phased path to
|
||||
`zig build-exe hello.zig` running on danos — **not** Linux-ABI emulation.
|
||||
|
||||
Cutting across all of these:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user