Features
- Library builds emit a contract sidecar: a profile that declares a sidecar path gets a deterministic
*.contract.jsonbeside the archive — exported symbols with marshalled signatures, record/union type tables in declaration order, and a 64-bit build id that is also readable from the archive itself through synthesized constant getters (safe to call before init and after a trap). Two builds of the same tree produce byte-identical sidecars, so embedder tooling can diff contracts mechanically.
Fixes
- Comparing a union value against
nullorundefinedwhen the union has no such arm now answers the constant the type system already knows (falsefor===,truefor!==) instead of trapping at runtime;switchcases on absent unit arms fold the same way. The scrutinee is still evaluated exactly once. - Programs using
netauto-select-family timeouts no longer fail at link on the default backend: the code generator's symbol table spelled two runtime symbols differently than the runtime defines them. The ABI audit now verifies every runtime symbol the code generator can emit against the runtime header, so this class of skew fails in CI rather than at a user's link step.