ReviewOS

zig-utils/zig-js

ABI: deliver pinned process signal events

#400
Closed chris opened this 9 days ago ·
9 days ago

Parent: #140 Profiles: #163, #164 Roadmap: #134

Implement the shared pending Bun__onSignalForJS boundary against zig-js's real process EventEmitter. Pin the Bun 4982b91 signal map and event behavior; do not expose a link-only stub.

Acceptance

  • Pin the exact BunProcess implementation source and cross-platform signal-name mapping.
  • Map supported native signal numbers to the canonical SIG* event names in Bun insertion order.
  • Emit synchronously on only the selected realm's process, with exact (signalName, signalNumber) arguments.
  • Preserve listener ordering, once/removal behavior, and listener-thrown exceptions through the private pending-exception boundary.
  • Reject null/dead globals, unknown signal numbers, and pre-existing pending exceptions without observable mutation.
  • Add focused unit and compiled Home/Bun profile coverage in Debug and ReleaseSafe.
  • Refresh exact inventories and concise README/API/ABI counts.
  • Record the bounded fixing CI and close.

Backward compatibility is intentionally out of scope.

9 days ago

Implemented in 99433614 and documented in a856d0ec. Focused semantics and both external profile fixtures pass in Debug and ReleaseSafe; Bun/Home audits, contract validation, and docs build pass. Counts are now Home 424/471 (47 pending), Bun 416/461 (45 pending). Awaiting fixing main CI.

9 days ago

Completed on main through 99433614 and a856d0ec. Canonical platform signal mapping, realm-local synchronous EventEmitter delivery, once/removal ordering, thrown-listener propagation, and dual-profile evidence are green in the fixing private-abi-boundary job.

Sign in to comment on this issue.