roadmap: heap-Str ABI as P1 milestone, blocker for Show + print rewire
Names the runtime infrastructure prerequisite (malloc-backed refcounted Str alongside static @.str_* globals) as its own milestone. Show + print rewire now carries an explicit depends-on link. Existing Eq/Ord [x] entry removed (shipped milestone 23; mirrored in WhatsNew + journal).
This commit is contained in:
+23
-12
@@ -41,23 +41,34 @@ context. Pick the next milestone from P1.)_
|
||||
|
||||
## P1 — Next
|
||||
|
||||
- [x] **\[milestone\]** Post-22 Prelude — Eq/Ord — shipped milestone
|
||||
23 (2026-05-12). `Ordering` ADT, `Eq`/`Ord` classes, primitive
|
||||
instances on Int / Bool / Str, polymorphic free fns
|
||||
`ne`/`lt`/`le`/`gt`/`ge`, runtime `ail_str_eq` + `ail_str_compare`,
|
||||
end-to-end coverage including user-ADT-instance integration. Float
|
||||
has neither instance by design; polymorphic helpers at Float fire
|
||||
Float-aware `NoInstance` per DESIGN.md §"Float semantics".
|
||||
- [ ] **\[milestone\]** Heap-`Str` ABI — runtime infrastructure for
|
||||
malloc-backed, refcounted `Str` values alongside the existing
|
||||
static `@.str_*` globals. Today the `Str` path is static-only
|
||||
(DESIGN.md §"Float semantics" notes this explicitly), so any
|
||||
primitive that needs to produce a `Str` at runtime — `int_to_str`,
|
||||
`float_to_str` (currently type-installed but `CodegenError::Internal`
|
||||
on call), eventual `Show.show`, future `++` on strings — cannot
|
||||
ship. Scope: pick the representation (likely a `{rc_header, len,
|
||||
bytes…}` slab consistent with the rest of the RC runtime), teach
|
||||
codegen to accept both static and heap `Str` at the same ABI slot,
|
||||
wire RC `inc`/`drop`/`clone`/`compare`/`eq` on the heap form, and
|
||||
ship `int_to_str` + `float_to_str` as the first two callers so the
|
||||
ABI gets exercised end-to-end. Unblocks Show + print rewire below.
|
||||
- context: DESIGN.md §"Float semantics" (`float_to_str` is type-
|
||||
installed, codegen-deferred); spec 2026-05-11-23-eq-ord-prelude
|
||||
§"Show. Defers behind a heap-Str-ABI milestone"; spec
|
||||
2026-05-10-fieldtest-floats §F4 ("dynamic Str allocation in the
|
||||
runtime"); spec 2026-05-09-22-typeclasses §22b.4b ("Show#Int
|
||||
needs an `int_to_str` primitive returning heap-allocated Str").
|
||||
|
||||
- [ ] **\[milestone\]** Post-22 Prelude — Show + print rewire — ship
|
||||
`Show` typeclass with `Show Int/Bool/Str/Float` instances; rewire
|
||||
`print` through `Show.show`. Gated on heap-`Str` ABI runtime work
|
||||
(`int_to_str` needs to allocate). Originally queued as 22b.4 in
|
||||
the typeclass milestone, kept on hold pending demand and the
|
||||
`print` through `Show.show`. Originally queued as 22b.4 in the
|
||||
typeclass milestone, kept on hold pending demand and the
|
||||
heap-`Str` prerequisite.
|
||||
- context: brainstorm 2026-05-12 (iter 23.5 wrap). Heap-`Str` ABI
|
||||
is the load-bearing prerequisite; until it ships, `Show Int`
|
||||
- depends on: Heap-`Str` ABI (above). Without it, `Show Int`
|
||||
cannot allocate a `Str` to return.
|
||||
- context: brainstorm 2026-05-12 (iter 23.5 wrap).
|
||||
|
||||
## P2 — Medium-term
|
||||
|
||||
|
||||
Reference in New Issue
Block a user