ReviewOS

zig-utils/zig-js

C API: define and enforce the complete public JavaScriptCore target inventory

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

Parent: #134

Pin a concrete public JavaScriptCore header target and make API completeness mechanically auditable.

Acceptance:

  • Check in the exact target SDK/header version and a machine-readable inventory of public functions, callbacks, types, and enum values.
  • Provide compatible public headers under include/JavaScriptCore.
  • Classify every inventoried symbol as implemented, intentionally platform-gated, or pending with a linked child issue.
  • Add a verifier that fails when headers, exported symbols, inventory, and implementation drift.
  • Reach zero pending public symbols before closing.
  • Add C/C++ compile-link-runtime conformance coverage for the completed surface.

Target: the public JavaScriptCore C headers shipped by the macOS 27.0 Command Line Tools SDK.

Tracked implementation children:

  • #136 — JSTypedArray and ArrayBuffer embedding surface
  • #137 — JSClassRef callbacks and property-name APIs
  • #148 — context groups, global metadata, syntax checking, and inspectability
  • #149 — UTF-16 strings, borrowed characters, sizing, and equality
  • #150 — remaining values, BigInt, comparison, JSON, and protect ABI repair
  • #151 — remaining ordinary-object constructors and property APIs
  • #139 / #152 — public inspectability controls backed by real inspector sessions; full debugger work remains tracked by #139, #153, and #154

Completion evidence

71bc743 completes the pinned macOS 27.0 public matrix: 117/117 functions implemented, zero pending, 117 public exports, and 12 zig-js extensions. Seven compatible headers plus the extension header are checked in and SDK hashes are pinned. Real C and C++ hosts pass. The two-fixture system-JSC differential matches 34/34 rows (a8ecd5e83f9f35ca).

9 days ago

The pinned macOS 27.0 public JavaScriptCore C API inventory is now 117/117 implemented with zero pending symbols. Headers, inventory verifier, C/C++ runtime hosts, and 34/34 differential rows are published through 71bc743. Broader private and debugger surfaces remain correctly separated under #134.

Sign in to comment on this issue.