From 9669ff23d0a9d123b7218516b78cd321dae9a045 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Sat, 12 Sep 2026 14:34:59 +0700 Subject: [PATCH] The next batch, ordered, with what runs in parallel --- NEXT.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/NEXT.md b/NEXT.md index 0ff527a..5b0d339 100644 --- a/NEXT.md +++ b/NEXT.md @@ -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