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:
25
PLAN.md
25
PLAN.md
@@ -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 1–6 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 990–993 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.
|
||||
|
||||
Reference in New Issue
Block a user