You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
gen-zig: an @extern body is written as @extern("sym"), which Zig refuses, so a host spec never runs its tests under t27c #11282
t27c gen writes a fn whose body is return @extern("getpid"); into Zig verbatim. Zig's @extern takes two arguments (a pointer type and an options struct), so the generated file does not compile, and t27c test-report reports the whole spec BLOCKED, its pure tests included.
t27c test-report specs/repro/extern_repro.t27 --specs-dir specs prints BLOCKED does not compile: spec.zig:19:12: error: expected 2 arguments, found 1; line 19 of the generated Zig is return @extern("getpid");.
Where it bites
Four T27 OS host specs are BLOCKED under t27c on master: specs/t27os/glass_window.t27 (34 test or invariant blocks), keys_host.t27, keys_probe.t27, pty_server.t27. Their tests run only under t27b, which lowers @extern itself (see t27b: lower @extern calls to libSystem (blocks the T27 OS PTY server) #10902).
gen-zig lowers a fn whose body is a single @extern("sym") to a Zig extern declaration with the fn's own parameter and return types, called from the fn, so the module compiles and its pure tests run. Zig links an extern only when a reached call needs it.
The repro above reports twice_doubles passed, vacuous passes 0.
glass_window.t27, keys_host.t27, keys_probe.t27 and pty_server.t27 are no longer BLOCKED under t27c test-report on the Linux runner (a test that calls a Darwin-only extern would still fail to link there, which is the right report).
Boundary
The gen-zig emitter in bootstrap/src/compiler.rs (frozen core, the FROZEN_HASH rule applies) or its .t27 port. Related: #10295 (host fn declarations for gen-js and gen-ts), #10902 (t27b lowering of @extern), compiler defects tracked on #5980.
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
missing: ## User Scenarios -- at least one Given/When/Then scenario
missing: ## Requirements -- numbered obligations, FR-001: ... MUST ...
missing: ## Success Criteria -- an outcome a machine can settle: a number with a unit, a backticked file, exit 0, or a backticked command
Activity
github-actions commentedon Oct 20, 2026
Closed by the issue-shape gate (specs/policy/issue_shape.t27, #7498): an issue must have the template's sections. Edit the body; an edit that passes reopens it.
FR-001: ... MUST ...exit 0, or a backticked command