diff --git a/docs/DESIGN.md b/docs/DESIGN.md index 5a35278..f6d7171 100644 --- a/docs/DESIGN.md +++ b/docs/DESIGN.md @@ -1333,38 +1333,6 @@ monomorphised copies resolve to concrete drop fns). shared by Iter A and the pre-tail-call shallow-dec arm; closing it is a propagation pass through let-bindings that has not shipped yet. -### Migration plan - -1. **`(borrow T)` / `(own T)` annotations** as a - language feature. Schema, parser, JSON, typechecker. No - codegen change. `(con T)` ≡ `(own T)`. Existing fixtures - unchanged. -2. **RC runtime.** `runtime/rc.c` with header layout + - alloc/inc/dec. Codegen `--alloc=rc` routes allocation through - `rc_alloc`; **no inc/dec yet**. `--alloc=gc` remains default. -3. **Uniqueness inference + codegen inc/dec - instrumentation.** Combines mode annotations with intra-fn - dataflow. Linear-by-default enforcement turns on. `(clone X)` - in the `Term` schema. -4. **Reuse hints + reuse analysis.** `(reuse-as ...)` - form. Codegen rewrites dec+malloc into in-place overwrite when - the precondition holds. -5. **`(drop-iterative)` data attr.** Worklist-based - free for annotated types. -6. **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 (`--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 - wins). -7. **Advisory `over-strict-mode` lint** + precise sub-binder - analysis with heap-type filter + - `FnDef.suppress` suppression mechanism with mandatory-reason. - First `Severity::Warning` diagnostic; CLI exit gated on Error - only. Decision 10's mandatory-annotation rule is unchanged. - ### Adjacent extensions for mutability (out of Decision 10's scope) If future workloads need mutable arrays, hash tables, or other