ReviewOS

zig-utils/zig-js

ABI: implement exact private strict and SameValue equality shims

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

Parents: #163, #164 Depends on: #166

Implement the shared private equality boundary used by both pinned Home and Bun core profiles.

Acceptance:

  • Export the exact JSC__JSValue__isStrictEqual and JSC__JSValue__isSameValue signatures.
  • Decode JSC64 immediates and context-owned cells without exposing zig-js internal value bits.
  • Match === for primitives, strings, BigInts, and object identity.
  • Match SameValue for NaN and signed zero while preserving strict semantics elsewhere.
  • Reject empty/deleted/invalid/foreign-context cell inputs safely.
  • Cover exact signatures and semantic boundaries in the compile-link-runtime fixture.
  • Update both pinned inventory totals and public documentation without changing public/extension counts.
9 days ago

Completed on main in 9538d72; documentation followed in f5e54f4.

Focused evidence:

  • zig build test-home-private-abi: 9/9 symbols linked and the runtime matrix passed;
  • exact strict/SameValue coverage includes int32-vs-double equality, NaN, signed zero, equal/distinct strings, BigInt value equality, object identity, empty/deleted sentinels, and foreign-context cells;
  • zig build c-api-audit: 117 public, 19 extensions, 9 private profile exports;
  • pinned Bun core audit: 9 implemented / 413 pending; Home: 9 / 423.

The Bun inventory tool now also supports deliberate implementation-status refreshes without regenerating its revision-pinned source denominator.

Sign in to comment on this issue.