fibers: carve Stream B1 (PLAN-FIBERS + CHECKPOINT-FIBERS)

Carve the async-runtime fibers stream off PLAN-POST-METATYPE Stream B,
mirroring the atomics carve. Grounds the B1 compiler floor against the
tree:

- abi(.pure) exists in the ABI enum but is inert (type_resolver maps it
  to .default CC, emit emits no naked attr) -> B1.0 makes it emit LLVM
  naked + skip prologue/ctx. Corrected the design's callconv(.naked)
  spelling to the real abi(.pure).
- context is already an implicit *Context param (slot 0) + push Context
  is a stack alloca -> fiber-local for free; only shared root is the
  __sx_default_context global. B1.1 grounded as likely library-only
  (probe-first).
- B1.0 snapshot story corrected: naked body is raw per-arch asm -> two
  arch-gated examples (aarch64 + x86_64), not one host .ir.

Full xfail->green step detail + a B1.0a kickoff prompt. Baseline green
(721/0). No code change; first implementation step is B1.0a.
This commit is contained in:
agra
2026-06-20 14:16:39 +03:00
parent 3fad2d5a21
commit 7044b8133b
3 changed files with 305 additions and 1 deletions

View File

@@ -60,7 +60,7 @@ differently — x86 vs LL/SC). **Out of snapshot scope, state loudly:** ordering
The colorblind, stackful, pure-sx async runtime (design §4). Compiler floor is small;
the runtime is sx lib. Likely carved as two PLANs:
### B1 — Fibers + Io + M:1 (the runtime; `PLAN-FIBERS.md`)
### B1 — Fibers + Io + M:1 (the runtime; `PLAN-FIBERS.md`) · 🚧 **CARVED** (not started; first step B1.0a)
- B1.0 **`abi(.naked)` — make the EXISTING `.pure` ABI actually naked.** The enum
already carries `.pure` (ast.zig:142, documented "pure/naked, no prologue/epilogue"),
but it is an **inert label today**: `type_resolver.zig:237` maps `.pure → .default`