fibers B1.2: BLOCKED on compiler bugs 0150 + 0151 (Io design proven)
Stream B1 B1.2 (Io capability + context.io + Future + cancel) is blocked on two newly-discovered, independent compiler bugs, both with standalone repros: - 0150: a `void` struct field crashes the compiler with an unsized-type SIGTRAP in LLVM getTypeSizeInBits. Blocks `Future(void)` -> `timeout`. - 0151: a type-var inferred from a fn-pointer parameter's RETURN type is not bound as a usable type in the function body (`unknown type 'R'`). Blocks the central `async(io, worker: ($A)->$R, arg)` free-fn's `Future(R)`. The B1.2 design itself is validated end-to-end (the Io protocol threaded on Context like Allocator, the stateless blocking CBlockingIo default, both __sx_default_context materializers, and `context.io.now_ms()` all work live). Only the async/await/timeout ergonomic layer hits the two bugs. Per the IMPASSABLE STOP rule, all B1.2 working changes were reverted (master green, 726/0) and the work paused pending fixes; WIP is saved at .sx-tmp/b12-wip/. Checkpoint + plan updated to mark B1.2 BLOCKED with full resume notes.
This commit is contained in:
13
issues/0150-void-struct-field-unsized-llvm-trap.sx
Normal file
13
issues/0150-void-struct-field-unsized-llvm-trap.sx
Normal file
@@ -0,0 +1,13 @@
|
||||
// Repro for issue 0150 — a `void` struct field crashes the compiler with an
|
||||
// unsized-type SIGTRAP (LLVM getTypeSizeInBits). Unpinned (no expected marker)
|
||||
// because it currently aborts the compiler; pin it as a regression test once
|
||||
// the fix lands.
|
||||
#import "modules/std.sx";
|
||||
|
||||
Holder :: struct { v: void; ok: bool; }
|
||||
|
||||
main :: () -> i32 {
|
||||
h : Holder = .{ ok = true };
|
||||
if h.ok { print("ok\n"); }
|
||||
return 0;
|
||||
}
|
||||
Reference in New Issue
Block a user