design-md-consolidation 2.2: condense Decision 9 narrative-of-changes opener + drop pre-Decision-9 history paragraphs
This commit is contained in:
+1
-16
@@ -649,11 +649,7 @@ without a source-level rewrite.
|
||||
|
||||
## Decision 9: dual allocator — RC canonical, Boehm parity oracle
|
||||
|
||||
Originally framed
|
||||
as "transitional Boehm until the RC pipeline lands and the default flips"; then re-framed
|
||||
as a symmetric dual-allocator policy with Boehm as
|
||||
the CLI default. The revision flips the asymmetry to
|
||||
match Decision 10:
|
||||
AILang ships two allocator backends with an asymmetric role:
|
||||
|
||||
- **RC is canonical.** `--alloc=rc` is the CLI default for
|
||||
`ail build` and `ail run`. The runtime AILang's memory model
|
||||
@@ -679,17 +675,6 @@ diagnostic leverage. Decision 10 (RC + uniqueness) holds as the
|
||||
specification of the canonical runtime; the rest of this section
|
||||
documents the Boehm half, retained as the oracle.
|
||||
|
||||
The `--alloc=bump` mode introduced for the bench is a
|
||||
measurement tool, not a production target.
|
||||
|
||||
Originally, every ADT box, lambda env, and closure pair was
|
||||
allocated with bare `malloc` and never freed. That worked for the
|
||||
17 test fixtures (all small, all short-lived) but is incompatible
|
||||
with any real workload — a stdlib `fold` over a million-element
|
||||
list would leak a million boxes. The "Goal" section's "no GC for
|
||||
the MVP" framing predates the parameterised-ADT pipeline and the
|
||||
explicit-recursion expectation; both make a collector necessary.
|
||||
|
||||
**Choice: Boehm-Demers-Weiser conservative GC.** The simplest
|
||||
working option:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user