The next batch, ordered, with what runs in parallel

This commit is contained in:
Joseph Ferano 2026-09-12 14:34:59 +07:00
parent a1827adb66
commit 9669ff23d0

35
NEXT.md
View File

@ -405,6 +405,41 @@ acquisitions against releases at that boundary and report what is still held at
annotation, nothing running at a distance — it does not change how code is written, it reports when something was
forgotten.
## The next batch, in order
Agreed at the end of 2026-09-12. Ordered by priority, not by size. Items 1-3 and 5-6 want the compiler core and should
run one lane at a time; item 4 is disjoint and runs alongside any of them.
1. **Fix the one failing test**`the frame of a superseded body answered with the new body's names`. The slot
fingerprint that should refuse a frame whose body was redefined since it was entered does not fire, so a rename
keeping the same slot count and types shows new names against old values. The suite has been green all session apart
from this, and a red suite stops being a signal quickly. The handoff says to start by printing both sides of the
comparison in `Dev.locals`.
2. **The colon-to-dot change.** Cheap, mechanical, ~284 sites across 45 files — and it must land **before** `Map`, or
map literals and struct literals collide and both have to change instead of one. It gets more expensive every day
more Flan is written. See the decision above for the destructuring wrinkle to settle in the same pass.
3. **`Map`, and the `defer` relaxation.** `Map` is step 4 of the container build order and finishes what `Vec` started.
The `defer` change — permitting it in a `let` whose extent is the function body — is small, independent, and is the
whole of the resource-cleanup answer.
4. **The Emacs batch. Disjoint from the compiler, so it runs in parallel with anything above.** Globals in the break
buffer; the buffer opening itself when the program stops; the indentation rewrite with `clojure-mode` as the
reference; `#_`; hex, binary and addresses on primitives in the inspector. The indentation one is worth doing first
within this batch — it costs friction on every keystroke today.
5. **`Handle` and the pool.** A reference to something that can die, that reports that it died rather than silently
resolving to whatever reused the slot. Wanted on its own terms for entities referred to across frames, and it is the
real gate on classes. Buildable now that the allocator exists.
6. **Signature generations and stale-caller warnings.** The biggest remaining hole in "you never restart the program" —
a changed signature is still refused rather than versioned. Last because it is the largest and nothing else waits on
it.
Deliberately not scheduled: the JS backend and header-based C interop, both large and neither blocking current work; a
debug tracking allocator, which is the leak safety net and a good candidate whenever it is wanted.
## Blocked and unfinished
Everything below was found, decided or half-built and then stopped. Each says what blocks it. Nothing here is a