ReviewOS

zig-utils/zig-js

ABI: implement exact no-side-effects value stringification

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

Parent: #134 Related: #140, #163, #164

Goal

Implement the shared pinned Bun__noSideEffectsToString boundary used by fatal and unhandled-error reporting.

Acceptance

  • Return exact strings for undefined, null, booleans, int32/double values, BigInts, and described/undescribed Symbols.
  • Return string inputs unchanged and collapse every other object/function/error/proxy to [object Object].
  • Never invoke conversion hooks, getters, proxy traps, or mutable globals.
  • Validate VM/global ownership and preserve existing pending-exception state.
  • Add focused primitive/large-BigInt/Symbol/proxy/identity/foreign coverage and a compile-link-runtime fixture call.
  • Refresh Home/Bun inventories with zero unclassified symbols.
  • Update README and compatibility docs, publish small implementation/docs commits on origin/main, and close only after evidence is live.
9 days ago

Implemented and published in two direct main commits:

  • 8a5391ec — exact pure primitive/BigInt/Symbol formatting, raw string identity, VM-small-string stability, object collapse, wrong-VM rejection, zero proxy/conversion observability, pending-state preservation, focused coverage, fixture linkage, and refreshed inventories
  • 53d471db — README and compatibility evidence/count refresh

Verification:

  • focused pure-stringification matrix: 3/3 passed, 0 leaked
  • Home fixture: 227/227 symbols linked and runtime matrix passed
  • Home inventory: 228/431 implemented, 203 pending
  • Bun core inventory: 222/421 implemented, 199 pending
  • public/private audit: 117 public, 19 extensions, 232 private/support exports
  • zero unclassified inventory entries

The benchmark artifact remains 36a617b3: this diagnostic ABI path does not change measured execution performance.

Sign in to comment on this issue.