design-md-consolidation 1.3: drop date anchors from DESIGN.md
This commit is contained in:
+10
-10
@@ -682,10 +682,10 @@ without a source-level rewrite.
|
||||
## Decision 9: dual allocator — RC canonical, Boehm parity oracle
|
||||
|
||||
Originally framed
|
||||
(2026-05-07) as "transitional Boehm until the RC pipeline
|
||||
as "transitional Boehm until the RC pipeline
|
||||
(Iters 18a–18g) lands and the default flips"; then re-framed
|
||||
(2026-05-08) as a symmetric dual-allocator policy with Boehm as
|
||||
the CLI default. The 2026-05-09 revision flips the asymmetry to
|
||||
as a symmetric dual-allocator policy with Boehm as
|
||||
the CLI default. The revision flips the asymmetry to
|
||||
match Decision 10:
|
||||
|
||||
- **RC is canonical.** `--alloc=rc` is the CLI default for
|
||||
@@ -832,7 +832,7 @@ is too.
|
||||
|
||||
## Decision 10: memory model — RC + Uniqueness with LLM-author annotations
|
||||
|
||||
**Committed 2026-05-08, after the GC bench (`bench/run.sh`) showed
|
||||
**The GC bench (`bench/run.sh`) showed
|
||||
Boehm contributing ~60% of runtime on allocation-heavy workloads
|
||||
that hold the heap fully live. Sharpened later the same day: the
|
||||
mainstream "RC + inference" position was extended with mandatory
|
||||
@@ -1407,7 +1407,7 @@ monomorphised copies resolve to concrete drop fns).
|
||||
6. **Iter 18f:** RC validation bench. RC validated within target
|
||||
on `bench/run.sh` (live=0; tail latency 23× better than Boehm;
|
||||
RSS lower). Retirement of Boehm executes in two steps: first a
|
||||
default-flip (2026-05-09 — `--alloc=rc` becomes the CLI default,
|
||||
default-flip (`--alloc=rc` is the CLI default,
|
||||
GC retained as parity oracle; see Decision 9 above); second a
|
||||
full removal once the oracle stops paying its keep (gating
|
||||
condition: a few iter families with no GC-only diagnostic
|
||||
@@ -1433,7 +1433,7 @@ materialises with a real workload.
|
||||
|
||||
- **Does not infer everything.** An earlier draft of this
|
||||
Decision said "uniqueness is fully inferred" — that was the
|
||||
mainstream RC position. The 2026-05-08 follow-up discussion
|
||||
mainstream RC position. A follow-up discussion
|
||||
replaced it: AILang demands annotations *because* the LLM
|
||||
author can produce them effortlessly. The compiler does
|
||||
inference *plus* verification of contracts.
|
||||
@@ -1448,7 +1448,7 @@ materialises with a real workload.
|
||||
|
||||
## Decision 11: typeclasses — Haskell-lite, monomorphised, coherent
|
||||
|
||||
**Committed 2026-05-09 (Iter 22a), as the design pass that gates
|
||||
**The design pass that gates
|
||||
22b implementer work. Codified after the Feature-acceptance
|
||||
criterion (this document, above) was committed; the criterion is
|
||||
the explicit basis for the choices below.**
|
||||
@@ -1608,7 +1608,7 @@ between a hand-written `show_int` and a synthesised `show__Int`.
|
||||
|
||||
**Why mono, not virtual dispatch (the empirically-grounded version).**
|
||||
The original rationale implicitly argued that mono saves a per-call
|
||||
indirect-jump cost. The 2026-05-10 mono-vs-vdisp micro-benchmark
|
||||
indirect-jump cost. A mono-vs-vdisp micro-benchmark
|
||||
(`bench/mono_dispatch.py`, JOURNAL entry of the same date) refutes
|
||||
that specific claim: on a saturating branch predictor with a
|
||||
monomorphic indirect target, indirect dispatch is free relative to
|
||||
@@ -1720,7 +1720,7 @@ axis-5 (kind `*` only) covers the space.
|
||||
the param.
|
||||
- **Higher-rank polymorphism** (`forall a. (forall b. b -> b) -> a`).
|
||||
Already rejected at parse time per the typeclass-conversation
|
||||
rationale recorded in JOURNAL 2026-05-09; constraint-bearing
|
||||
rationale recorded in JOURNAL; constraint-bearing
|
||||
signatures inherit that prohibition.
|
||||
- **Existential / dyn dispatch** (`exists a. Show a => a`,
|
||||
heterogeneous lists like `[Show]`). Schema does not express
|
||||
@@ -2021,7 +2021,7 @@ canonical-JSON hash.
|
||||
|
||||
Two allocator backends share the same MIR. `--alloc=rc` is the
|
||||
canonical backend committed to in Decision 10 and the CLI default
|
||||
since 2026-05-09: the typechecker enforces
|
||||
the typechecker enforces
|
||||
`(own)` / `(borrow)` modes, codegen emits `ailang_rc_inc` / `_dec`
|
||||
calls at the points dictated by linearity, and `Term::Clone` /
|
||||
`Term::ReuseAs` materialise into actual rc-bumps and in-place
|
||||
|
||||
Reference in New Issue
Block a user