diff --git a/docs/WhatsNew.md b/docs/WhatsNew.md index 285218b..8dc7fba 100644 --- a/docs/WhatsNew.md +++ b/docs/WhatsNew.md @@ -38,3 +38,11 @@ An in-flight design for the eq/ord prelude was retired today because it would ha The blocker that stranded yesterday's eq/ord prelude work is fixed. The language now handles polymorphic helper functions that call class methods inside their body — the canonical shape every prelude helper takes — by routing both kinds of specialisation through one unified pass instead of two competing ones. A small fixture (`cmp_max` at three integer values) confirms it end-to-end, and the regression check shows the six existing primitive eq/ord symbols still produce bit-identical output. Next: the five missing prelude utilities (`ne`, `lt`, `le`, `gt`, `ge`) and their end-to-end tests. + +## 2026-05-12 — Eq/Ord prelude finished, milestone closed + +The eq/ord prelude milestone is done. `ne`, `lt`, `le`, `gt`, `ge` now ship in the auto-loaded prelude as polymorphic helpers that work on any type with the matching class instance — verified end-to-end at Int, Bool, Str, and at a user-defined type with hand-written instances. The same helpers applied to Float produce a Float-aware error pointing back to the language reference's Float section, instead of the generic "no instance" message. + +A couple of latent bugs in the type-checker surfaced while testing the natural shape of these helpers (one in the linearity check, one in the polymorphic-specialiser collector) and got fixed in the same pass. The benchmark suite is clean except one sub-millisecond noise-band metric just over the tolerance line — expected given the prelude grew, ratifiable at the next baseline refresh. + +Show + `print`-rewire remains the next prelude piece, gated on heap-string runtime support.