← board

Track-B wishlist — compiler features most wanted to unblock libraries + demos

How to read this

Ranked by unblock-leverage (deliverables freed ÷ effort), highest first. "Unblocks" lists the concrete feature-*-library / feature-demo-* work that is waiting on it. Track B has interim workarounds where possible; these remove them.

Ranked wishlist

1. 64-bit operators + literals → bug-64bit-shift-xor-literal-gaps

The single biggest unlock. Three defects in one:

2. Case-insensitive builtins → bug-builtin-write-case-sensitive

WriteLn/Write/ReadLn mixed case unresolved (user idents already are case-insensitive). Cheap fix, broad reach. Unblocks: examples/adventure and any FPC-cased demo (lisp/calc/solitaire will all use mixed case). No clean interim (can't lowercase idiomatic source).

3. Loadable sysutils unit → bug-sysutils-unit-hard-skipped

uses sysutils is hard-skipped, so a real lib/rtl/sysutils can't load. Unblocks: the canonical RTL home for IntToStr/Val/StrToInt/Copy/Trim (the feature-rtl-conversion-and-bitset-library surface). Interim: helpers live in lib/rtl/strutils.

4. Generic Copy intrinsic (+ siblings) → feature-copy-intrinsic

Dynarray sub-array (generic over T), 2-arg Copy(s,i), string-family overloads, by-type resolution. Same wall for Delete/Insert/Concat. Unblocks: feature-json-library and string-heavy code broadly. Interim: strutils.Copy(AnsiString) only.

5. Sets from runtime values → feature-language-gaps-from-demos (Gap 1)

[v] with variable v errors; Include/Exclude unimplemented. Unblocks: feature-sat-solver-library, feature-demo-maze set-lane, the sudoku set-lane. Interim: bitmask / boolean-grid stand-ins.

6. Record-returning fn codegen crash → bug-record-fn-codegen-crash

Context-sensitive runtime crash in a record-returning fn with nested loops over dynarray fields (the fused BigMul; possibly the maze segfault). Unblocks: general numeric kernels in feature-bignum-library and beyond. Interim: BigMul rebuilt on simpler primitives.

7. Temporary as const record arg → bug-const-byref-record-param-temp

f(g(x)) illegal when the param is a const record (forces named locals). Unblocks: ergonomic value-style APIs everywhere (bignum, JSON nodes, vectors). Interim: intermediate variables.

8. Generator record-yield + nested-yield → feature-language-gaps-from-demos (Gaps 2-3)

yield from a nested routine; generator of <record> consumed by for-in. Unblocks: feature-demo-chess movegen, generator-based demos. VERIFIED 2026-06-22 (Track A, x86-64):

Also needed (RTL, not pure compiler — noted for sequencing)

Synapse / networking compiler asks (from Track B)

These are not PAL/library workaround targets. Track B can build the Posix.* shim only after the compiler can name and conditionally probe those units.

Already landed (track A)

Stable v10 pinned (93ad58a) — items 1-3 + COM/ARC interfaces are in track B's pinned binary (binary+builtin coherent; v9->v10).

  1. Re-verify the codegen crashes on v10 first (cheap, high-info). The bignum/maze segfaults were last seen against pinned v9 mid-WIP; v10 is freshly stabilized + builtin-coherent. Reconstruct the crashing shape from bug-record-fn-codegen-crash and run it. Either it is GONE (close that ticket
    • the maze segfault, drop B's BigMulSmall workaround) or it is REAL (now bisectable on a clean compiler). bug-const-byref-record-param-temp (item 7) can be spot-checked in the same pass.
  2. Item 5 — sets from runtime values (feature-language-gaps-from-demos Gap 1): [v] with a variable + Include/Exclude. Self-contained codegen; unblocks THREE demos at once (SAT solver, maze set-lane, sudoku set-lane), all on bitmask/boolean-grid stand-ins today. Highest demos-per-hour.
  3. Item 4 — generic Copy (+ Delete/Insert/Concat): unblocks the JSON library + string-heavy code. Bigger (needs by-type overload/generic resolution), so third not second.

Log

TRIAGE (2026-06-30, multi-agent verify)

CLOSED — purpose spent. All ranked COMPILER items verified done (64-bit xor/shift/hex; case-insensitive write; sets-from-runtime-values + Include/Exclude; const-record-temp-arg; record-fn-codegen-crash; Copy intrinsic). Residual pointers (Synapse/POSIX RTL, dynarray Delete/Insert, generator edge variants) each live in their own open tickets. Index no longer needed -> done.