From 05ec3515f4f79fa9f8af84fd00740e79e013d387 Mon Sep 17 00:00:00 2001 From: Brummel Date: Fri, 8 May 2026 15:15:31 +0200 Subject: [PATCH] =?UTF-8?q?JOURNAL:=20Boehm=20stays=20=E2=80=94=20orchestr?= =?UTF-8?q?ator's=20call?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit User's stance on the retirement question raised in 18f / 18g.2: keep the dual-allocator setup. Boehm = default, RC = validated alternative ready to flip. Re-opening trigger is operational (maintenance cost), not performance. Concrete consequences recorded: no default flip, -lgc stays, and Decision 9's 'transitional' framing should be re-cast as 'dual allocator' in a follow-up DESIGN.md edit (queued). Decision 10 holds as the canonical real-time path. The three RC-side debts from the 18g tidy remain queued and don't block the dual stance. --- docs/JOURNAL.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/docs/JOURNAL.md b/docs/JOURNAL.md index f41908f..832d6c6 100644 --- a/docs/JOURNAL.md +++ b/docs/JOURNAL.md @@ -8240,3 +8240,42 @@ entry the family is formally closed; the next iter is the orchestrator's call between Boehm-retirement Path A and Path B (see 18g.2 entry for the framing). Three known debts travel forward as queue-items, not as 18-arc loose ends. + +## 2026-05-08 — Decision: Boehm stays for now + +Orchestrator's call on the retirement question raised in the +18f / 18g.2 entries: **Boehm is NOT retired.** Both paths +remain alive on paper, but the operational stance is "keep +the dual-allocator setup — `--alloc=gc` (Boehm) stays default, +`--alloc=rc` is the validated alternative". The trigger for +re-opening the question is operational: if maintaining the +Boehm path costs significant attention (libgc upgrade pain, +runtime divergence, build complexity), the case for retirement +becomes the active queue item. Until then the asymmetry +(Boehm = default, RC = ready-to-flip) is the right one. + +Concrete consequences: + +- **No default flip.** `bench/run.sh`, `crates/ail/src/main.rs`'s + `--alloc` default, README guidance — all unchanged. +- **`-lgc` stays as a build dependency** for the gc path. The + optional-link footwork that retirement would require stays + un-attempted. +- **Decision 9 (Boehm transitional) is no longer "transitional" + in the original sense.** The Decision was framed in 2026-05-07 + as "transitional until RC is proven"; RC is now proven, but + the user's stance is to keep the Boehm path live. A + follow-up DESIGN.md edit should re-frame Decision 9 as "dual + allocator: Boehm GC for default workloads, RC for real-time- + sensitive workloads", removing the "transitional" framing + without touching the rest. Recorded as a tidy item; not + shipping in this entry. +- **Decision 10 (RC + uniqueness) holds as the canonical real- + time path.** The 18-arc's correctness invariants stand. Any + future RC iter is justified by the RC story itself, not by + retirement progress. + +The three known debts from the 18g tidy (tag-conditional +partial-drop, let-alias-aware mode propagation, bench-number +stat-of-N) remain queued. They are RC-side improvements; none +of them block the dual-allocator stance.