agra
ada8d16256
fix: harden Phase 2 async/await per adversarial review (io.sx)
...
- await: add the one-awaiter-per-future guard `sched.Task.wait` has — a second
concurrent `await` on the same pending future would overwrite the single
`park` handle and orphan the first awaiter (silent deadlock). Now aborts
loudly. (Fan-in over SEPARATE futures — `race` — registers one awaiter each,
so it stays fine.)
- Document the Future/ThunkBox ALLOCATOR-LIFETIME contract: both are allocated
from the `context.allocator` in force at `async`, which must outlive the
future (the long-lived-container rule). Calling `async` inside a transient
arena torn down before `run()` is a use-after-free; the common case (program
GPA) is safe. A deeper own-allocator capture is deferred to convergence.
- Document that `cancel` does NOT stop an already-spawned worker (model (a) —
the worker still runs; the sticky `canceled` atomic is the source of truth).
True work-cancellation is Phase 3.
- Drop the dead `f.task = null` (immediately overwritten by spawn_raw).
The new `io_abort` extern shifts the prelude type table — 40 `.ir` snapshots
regenerated (behavior-preserving; no `.exit`/`.stdout`/`.stderr` changed).
Suite 829/0.
2026-06-27 08:13:57 +03:00
..
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-27 08:13:57 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-27 08:13:57 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-27 08:13:57 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-21 14:41:34 +03:00
2026-06-25 17:53:57 +03:00
2026-06-25 17:53:57 +03:00
2026-06-25 17:53:57 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00
2026-06-25 22:39:49 +03:00