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
Four-way audit (VM/opcode layer, native capability modules, compiler
parsing/type-checking, GBC+runtime state) for duplication that had
already drifted or was one edit away from drifting.
Real bugs fixed:
- cap_ffi.zig's extractI64 was missing the isFinite NaN guard cap_net.zig
already had; bytes.zig's argAsI64 had the same gap but reachable with no
capability at all (std.bytes.u8(1e300) aborted the host process).
Consolidated with vm.floatToIntSafe/core.zig's floatToIntChecked into one
common.safeI64FromFloat used by all five call sites.
- cap_fs_write's content argument used a hand-rolled string-extraction
switch with no .named_value case, unlike every other string arg in the
file (which use vms.asStringValue) — rejected named string types.
- structInstanceLitAfterValue (generic-instantiation/type-alias struct
literals) left no ExprPrimInfo on its result, unlike its sibling
structInstanceLit — a dunder operator on a generic struct was
unreachable from a literal built directly in an expression. Fixing this
needed lookupDunderCallee to fall back to a type name stripped of its
"[...]" suffix, since generic methods are registered under the
template's name but field-compatibility checking needs the concrete
instantiated name.
- Runtime.init() was missing fs_state.setActive, unlike its sibling
initWithConfig() and unlike every other per-runtime global it pins
inline in the same function.
Also consolidated (no behavior change): vm.zig's four copies of the
minInt(i64)/-1 division-overflow guard into one divModOverflows helper;
vm_bigint.zig's addBi/subBi into one addSubBi; cap_net.zig's
cap_net_dial/cap_net_dial_tls into one dialImpl.
Verified under standard, -Dpreset=stress, and -Dgc_stress=true builds.
0 commit comments