fibers B1.2: record review findings — async surface blocked on 0151 (widened)

Adversarial review of 45d869d: the Io infrastructure (both materializers,
push-inherit, 37 .ir regens, !-lint) is correct + landed; but await/cancel
(*Future($R)) are uncallable in EVERY form because sx can't infer a generic
$T from a pointer-wrapped arg. Widened issue 0151 to that root (repro:
unbox(b: *Box($T)) -> $T). Checkpoint: B1.2 partially landed; next = fix 0151
generic inference -> make await/cancel callable -> add 1805/1806 -> B1.3.
This commit is contained in:
agra
2026-06-21 00:43:09 +03:00
parent 3eeb965925
commit 0ab26c8a40
2 changed files with 60 additions and 32 deletions

View File

@@ -1,4 +1,20 @@
# 0151 — UFCS dot-call: `$R` inferred from a closure's RETURN type via a variadic pack is left unresolved (LLVM SIGTRAP)
# 0151 — generic type-var not inferred through a pointer / via UFCS (LLVM SIGTRAP / "cannot infer")
## WIDENED (adversarial review of B1.2, 2026-06-21)
The UFCS-closure-return-pack case below is one symptom of a BROADER generic-inference
gap: **sx cannot infer a generic `$T` from a POINTER-wrapped argument.** Minimal repro,
no UFCS / no pack / no closure involved:
```sx
Box :: struct ($T: Type) { v: T; }
unbox :: (b: *Box($T)) -> $T { return b.v; }
// unbox(@b) → error: cannot infer generic type parameter 'T' for 'unbox'
```
This blocks `await`/`cancel` in `library/modules/std/io.sx` (both take `*Future($R)`) —
they are **uncallable in EVERY form** (explicit `await(@f)` → "cannot infer 'R'"; UFCS
`f.await()` → SIGTRAP). So B1.2's async layer can CREATE a Future (`async(...)` works) but
cannot AWAIT it. Fix scope is the generic-inference engine (infer `$T` from `*T`-wrapped
params, and from closure-return-via-pack, and through UFCS dot-dispatch) — not the Io lib.
The two symptoms below + the `*Box($T)` repro above are the acceptance cases.
## Symptom