|
|
@@ -0,0 +1,82 @@
|
|
|
+# Session handoff — 2026-10-01 (end of day)
|
|
|
+
|
|
|
+State: `master` at tag **`v3-wrap-modules`** (`bdcefbb`). Suite
|
|
|
+**177/177**, fixpoint **OK** (2,899,706 bytes). Working tree clean
|
|
|
+except the user's `compiler/toto.mod`.
|
|
|
+
|
|
|
+## What landed today
|
|
|
+
|
|
|
+| Tag | Commit | What |
|
|
|
+| --- | --- | --- |
|
|
|
+| (prev) | `678f20e` | showcase21: expression result suffixes, coroutines, core library |
|
|
|
+| `v3-fwdvars-resultsfx` | `a613e7b` | **forward module-level variables**, expression result suffixes, `LongIO`/`LongWholeIO`/`DynamicStrings`/`SysStorage` |
|
|
|
+| `v3-wrap-modules` | `05d9bd0` | `StdChans`, `TimeString`, `wrapclock`, `wraptime`, `wrapc` |
|
|
|
+| `v3-wrap-modules` | `bdcefbb` | showcase22 + `docs/summary_wrap-modules.md` |
|
|
|
+
|
|
|
+Docs: `docs/language-report.md` (feature set + gaps),
|
|
|
+`docs/summary_fwdvars-resultsfx.md`, `docs/summary_wrap-modules.md`.
|
|
|
+
|
|
|
+## The one blocked feature
|
|
|
+
|
|
|
+**`ChanConsts` and `StreamFile`** are written and parked in
|
|
|
+`docs/wip/` (not compiled into the tree). They are blocked by a single
|
|
|
+missing language feature:
|
|
|
+
|
|
|
+> **Aggregate (set) values in `CONST` declarations.**
|
|
|
+> `read = FlagSet{readFlag}` — and even `CONST b = BITSET{0}` — is
|
|
|
+> rejected with `not supported yet`.
|
|
|
+
|
|
|
+Important precision: this is **not** a "typed set constructor"
|
|
|
+problem. `T{…}` constructors already work in expression/assignment
|
|
|
+position, including `a := FSet{r}` over an enum base. The gap is
|
|
|
+specifically that `ConstDecl` (`compiler/src/M2.atg`) accepts only
|
|
|
+`ClArray`/`ClRecord`/`ClClass`/`ClStr`/`ClUStr` as aggregate constants
|
|
|
+and has **no set case**; a set value has no single immediate operand.
|
|
|
+
|
|
|
+### Why it was not attempted
|
|
|
+It touches the riskiest area of the frontend (`M2.atg`) across
|
|
|
+`ConstDecl`, `TypedBraceLit`/`BraceElem` and `Design`, plus new
|
|
|
+`SymTab` set-word storage and `QbeGen` set-constant materialisation —
|
|
|
+a multi-step change, each step needing the full
|
|
|
+build → suite → fixpoint loop. Today's session showed that grammar
|
|
|
+edits here can silently break self-hosting; doing it unreliably would
|
|
|
+risk the green state.
|
|
|
+
|
|
|
+## Suggested plan for next time (branch-first)
|
|
|
+
|
|
|
+Work on a branch off `bdcefbb`; after **every** increment run
|
|
|
+`./bootstrap/fixpoint.sh` **and** `cd compiler && ./build.sh &&
|
|
|
+./run_tests.sh`. Revert the increment (`git checkout -- compiler/src`)
|
|
|
+if either fails. Commit only when both are green.
|
|
|
+
|
|
|
+Increments:
|
|
|
+1. `SymTab`: store a set constant's bit words per symbol
|
|
|
+ (`SetSymSet`/`GetSymSet`), reusing `SymNode.val` or a small array.
|
|
|
+2. `QbeGen`: `SetConstBegin/SetConstBit/SetConstEnd` accumulating words,
|
|
|
+ and `SetConstLoad(name)` materialising `NewSetTemp` + `Zero` +
|
|
|
+ word stores at a use site.
|
|
|
+3. Grammar: a `constCtx` flag set in `ConstDecl`; in `TypedBraceLit`
|
|
|
+ (set branch) accumulate words when `constCtx`; `ConstDecl` stores
|
|
|
+ them; `Design`'s `KindConst` + `ClSet` calls `SetConstLoad`.
|
|
|
+4. Activate `docs/wip/chanconsts.*` and `docs/wip/streamfile.*`
|
|
|
+ (move back to `stdlib/`), add them to `run_tests.sh`, and add a
|
|
|
+ `wrapflags.mod` test.
|
|
|
+
|
|
|
+## Other open items (see `docs/language-report.md` §9)
|
|
|
+
|
|
|
+- `GOTO`/labels.
|
|
|
+- Generics.
|
|
|
+- Statement-context result suffixes (`F()[i] := x`).
|
|
|
+- Multiple inheritance (deliberate).
|
|
|
+- Full forward variables: module scope only (done); forward *procedure*
|
|
|
+ references rely on the DEFINITION being present.
|
|
|
+- `BITSET` is not accepted as a function-result type (hence
|
|
|
+ `wrapc.ReadOnly`/`WriteOnly` return `CARDINAL`).
|
|
|
+
|
|
|
+## Resume
|
|
|
+
|
|
|
+```sh
|
|
|
+cd ~/Projets/Projets-Modula2/MyWork/m2compiler-V3
|
|
|
+./bootstrap/fixpoint.sh # FIXPOINT OK
|
|
|
+cd compiler && ./build.sh && ./run_tests.sh # 177/177
|
|
|
+```
|