build: split cstage/wwstage targets, document bootstrap

Phase 10 step 8 (delete the C trees) is deferred to v1.0 — until the
compiler stops churning we keep Cstage as the fresh-checkout entry
point. Split the Makefile so the two stages are named, and add
BOOTSTRAP.md describing the cstage → ww1 → ww2 → ww3 fixed-point
flow. PLAN.md gets a status note pointing at it.
This commit is contained in:
2026-05-11 02:36:46 +09:00
parent 1657bdeda3
commit cb57cd795d
3 changed files with 110 additions and 4 deletions

25
PLAN.md
View File

@@ -291,6 +291,31 @@ Exit criteria:
- The C `cmd/wwc/`, `cmd/6c/`, `cmd/6a/`, `cmd/6l/` C trees are
deleted in this phase's final commit.
### Status (2026-05)
Steps 16 done. The four ww-side tools live in `selfhost/cmd/`:
- `wwc/` — ww-native lex/parse/check/cgen
- `6a/` — ww-native amd64 assembler
- `6l/` — ww-native amd64 linker
- `ww/` — ww-native driver
Step 7 reaches its fixed point: `make bootstrap` produces ww1 → ww2 →
ww3 with `cmp ww2 ww3` byte-identical. Tests 990993 confirm each
selfhost tool is byte-identical to its Cstage counterpart.
Exit criterion 1 (bootstrap green) is met. Exit criterion 2 (delete
the C trees) is **deferred to v1.0**: removing `cmd/wwc/`, `cmd/6c/`,
`cmd/6a/`, `cmd/6l/`, `cmd/ww/` is a one-way door. Until the compiler
stops churning we keep Cstage as the canonical fresh-checkout entry
point and treat `selfhost/cmd/*` as the path forward. At v1.0, the
plan is to ship a checked-in stage-0 binary archive
(`bootstrap/<arch>/{ww,6c,6a,6l}`), delete the C trees, and promote
`selfhost/cmd/*` to `cmd/*`.
See `BOOTSTRAP.md` for the build flow and `make cstage`/`make wwstage`
targets.
## Phase 11 — CSP
Goal: channels and lightweight processes, without GC.