From 48b1f77487402fb4ebaa1228261aeca80b7590a7 Mon Sep 17 00:00:00 2001 From: Brummel Date: Wed, 13 May 2026 12:44:57 +0200 Subject: [PATCH] =?UTF-8?q?WhatsNew:=20post-fieldtest=20follow-up=20?= =?UTF-8?q?=E2=80=94=20bug=20fix,=20spec=20tightening,=20str=5Fconcat?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/WhatsNew.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/docs/WhatsNew.md b/docs/WhatsNew.md index a4b62b7..cba095a 100644 --- a/docs/WhatsNew.md +++ b/docs/WhatsNew.md @@ -124,3 +124,15 @@ Queue back to user-direction: the next roadmap item is that corpus migration, wh `.ail` is now the form you read, edit, and check in. The JSON-AST counterpart is still the canonical hashable representation, but it is no longer something you look at or maintain by hand — the tools derive it from `.ail` whenever they need it. About a hundred example programs that previously existed as JSON-AST were converted to `.ail` and the JSON files were deleted; only eight stay as `.ail.json` (seven negative-test fixtures whose subject matter cannot be expressed in `.ail`, plus the prelude, which is loaded at compile time and depends on internal plumbing that lands in a later milestone). If you were used to opening a `.ail.json` file to see what a program looks like, you now open the `.ail` sibling instead. + +## 2026-05-13 — Three follow-ups from the Form-A field test + +Post-fieldtest follow-up complete; three iterations landed back-to-back. + +- `ail check` now catches unbound variables inside instance method bodies. Before this, the typecheck step silently passed the program and the error only surfaced at build time as a degraded internal-error diagnostic with no source location or symbol hint. + +- The Form-A authoring spec now documents the typeclass surface — class declarations, instance declarations, and constraints on polymorphic functions — so a downstream LLM author can write typeclass programs from the spec alone, without having to mine the example corpus to reverse-engineer the grammar. + +- New `str_concat` primitive for combining two strings. The natural Show-MyType body shape (`"Item " ++ int_to_str x`-style labelled output) is now expressible; previously every such instance had to either drop the prefix or punt entirely. + +Queue back to user-direction: two next-milestone candidates queued on the roadmap — retiring the per-type `io/print_int|bool|float` operators in favour of polymorphic `print` (about eighty-six fixtures to migrate), or moving the prelude embed to Form-A as compile-time source (resolves the one remaining `.ail.json` carve-out that exists for architectural reasons rather than subject-matter reasons).