diff --git a/docs/DESIGN.md b/docs/DESIGN.md index cf6a3a0..70bc8aa 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -1609,7 +1609,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. A mono-vs-vdisp micro-benchmark -(`bench/mono_dispatch.py`, JOURNAL entry of the same date) refutes +(`bench/mono_dispatch.py`, JOURNAL bench-notes entry) refutes that specific claim: on a saturating branch predictor with a monomorphic indirect target, indirect dispatch is free relative to the same-shape non-inlined direct call (1.000x on Zen 3 / clang -O2). @@ -2020,8 +2020,8 @@ 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 -the typechecker enforces +canonical backend committed to in Decision 10 and the CLI default. +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