|
3 | 3 |
|
4 | 4 | # Stdlib AOT triage — #135 punch list |
5 | 5 |
|
| 6 | +> **CLOSED 2026-05-18.** This punch list is complete. All 19 `stdlib/*.affine` |
| 7 | +> files now compile through `resolve → typecheck → codegen`; epic #128 and |
| 8 | +> sub-issues **#131–#138 are all merged and closed**. The "Current sweep" and |
| 9 | +> "Remaining slices" sections below are preserved **as historical record** of |
| 10 | +> the in-flight state on 2026-05-17 r2 — they no longer describe the tree. |
| 11 | +> Live status is now machine-enforced by the CI gate `test/test_stdlib_aot.ml` |
| 12 | +> (STAGE-A AOT smoke, 19/19 + the #137 multi-module integration test), so the |
| 13 | +> AOT path cannot silently rot again. See the **Closure** section for the |
| 14 | +> final state. Verified locally 2026-05-18: `dune runtest` = 253 tests green. |
| 15 | +
|
6 | 16 | **Refreshed 2026-05-17 (r2)** after merging #135 slices 1,2,3,5,6,6b,7,8. |
7 | 17 |
|
8 | 18 | ## Done (merged to main) |
@@ -64,10 +74,29 @@ unblocked the entire typecheck wall). |
64 | 74 |
|
65 | 75 | ## Closure |
66 | 76 |
|
67 | | -#135 closes when all files compile resolve→typecheck→codegen, then |
68 | | -#138/#136/#137. Slices 4/9/10/11/12 + 8-tail each remain their own |
69 | | -rigorous, focused unit (per the "rigorous over partial-hack" |
70 | | -discipline — no unattended changes to the block grammar, borrow |
71 | | -checker, kind checker, or resolver two-pass). The two highest-impact |
72 | | -remaining are **slice 11** (resolver forward-ref — likely unblocks |
73 | | -several files at once) and **slice 4** (3 files). |
| 77 | +**Reached 2026-05-18 — epic #128 fully delivered.** |
| 78 | + |
| 79 | +The criterion above was met: all 19 `stdlib/*.affine` files compile |
| 80 | +`resolve → typecheck → codegen`. Final disposition of the slices: |
| 81 | + |
| 82 | +- **slice 4** (block/statement LR ambiguity — testing/math/traits), |
| 83 | + **slice 9** (`&mut T` reference params), **slice 10** (generic-extern |
| 84 | + kind-check), **slice 11** (resolver two-pass / forward-ref), **slice |
| 85 | + 8-tail** (`io` ← `string` cross-module), **slice 12** (`result` |
| 86 | + deeper typecheck) — all resolved under #135 (#172–#192). |
| 87 | +- **#135** — every `stdlib/*.affine` compiles end-to-end. Closed. |
| 88 | +- **#138** — `b895374` Some/None/Ok/Err seed band-aid removed; |
| 89 | + resolution now goes through `use prelude::{…}` (PR #193). Closed. |
| 90 | +- **#136** — stdlib-wide AOT compile-smoke gate added as |
| 91 | + `test/test_stdlib_aot.ml`, run under `dune runtest` / CI (PR #194). |
| 92 | + Closed. |
| 93 | +- **#137** — multi-module integration test (`prelude` + `string` + |
| 94 | + `option` + `collections` together) in the same file (PR #194). |
| 95 | + Closed. |
| 96 | + |
| 97 | +Sub-issues **#131–#138 are all closed**; epic **#128**'s only remaining |
| 98 | +scope is the consumer-side echidna trackers (#61–64), which close with |
| 99 | +that migration, not this epic. The rigorous-over-partial-hack discipline |
| 100 | +held throughout — no unattended changes to the block grammar, borrow |
| 101 | +checker, kind checker, or resolver two-pass. This document is now a |
| 102 | +historical record; the live invariant is the CI gate. |
0 commit comments