diff --git a/FIX.org b/FIX.org index 1cc40ad..1aeb28b 100644 --- a/FIX.org +++ b/FIX.org @@ -404,3 +404,22 @@ rename. typed-flan branch freezes the static language pre-dyn. - Signature pairing's cold-rebuild edge: a later type definition can silently re-pair an unannotated parameter vector; a changed-pairing warning between compiles was proposed and not yet queued. + +* M2 queue, decided with the author 2026-09-20 — in order +1. dyn maps + keywords (interned, O(1) equality). Retires edn/Value after. +2. Per-type descriptors: dyn fields in structs/conditions become markable. +3. Typed containers into dyn as VIEWS — one descriptor word in the box, + reads box the element, writes tag-check. Rides on 2. No copies. +4. nil: arrives with maps. nil <-> None at (Option T) boundaries, trap at + bare T, (Some nil) unconstructible. +5. Typed = and != grow strings: bytewise, length + same-pointer fast paths, + both backends, one survey program. Ordering stays refused. +6. defclass = named dyn map + shape tag; CLOS class dispatch AND + Clojure-style arbitrary dispatch functions. After 1. +7. dyn if: truthiness (nil/false are false, all else true). Typed stays + strict bool. +8. Return slot stays mandatory (dyn or ()) — the parse ambiguity it closes + is real; revisit only if it grates. + +All of it dispatches after the x86-dyn lane lands. The struct dyn-field +refusal (01e60fa) is the stopgap 2 lifts.