ReviewOS

zig-utils/zig-js

Bridge: pin the Objective-C API inventory and build gate

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

Parent: #138 Depends on: #135 and #137

Pin the declared macOS Objective-C JavaScriptCore surface before implementation so bridge completeness is exact and auditable.

Acceptance:

  • Check in the macOS 27.0 / SDK build 26A5368g JSContext.h, JSValue.h, JSVirtualMachine.h, JSManagedValue.h, and JSExport.h target inventory with source hashes.
  • Inventory every targeted Objective-C class, protocol, initializer, method, property, category, macro, and availability boundary with no hidden declarations.
  • Add an audit tool that rejects checked-in header drift, duplicate/missing entries, invalid status values, and unlinked unfinished entries.
  • Check in compatible Objective-C umbrella headers and explicit platform/version gates; unsupported hosts or SDK revisions fail clearly.
  • Add a macOS-only Objective-C compile-link smoke target without imposing Objective-C/Foundation on non-macOS C/Zig consumers.
  • Document the declared target and reproduction commands in README and API docs.
9 days ago

Foundation pushed in two reviewable chunks: 11ffd37 pins normalized installable copies plus raw/normalized SDK hashes, 11 containers, and 108 selector/signature-level declarations; 9ef5672 adds the Apple-only umbrella and ARC/blocks compile gate.

Passing gates:

  • zig build objc-api-audit
  • zig build test-objc-api-headers
  • live SDK comparison against macOS 27.0 build 26A5368g
  • unchanged 117/117 C API audit and real C/C++ hosts

The compile-link-runtime checkbox remains open until #158 provides real Objective-C class symbols; the current gate is deliberately named test-objc-api-headers.

9 days ago

Completed through d06e264. The pinned macOS 27.0 / 26A5368g inventory now drives header drift, real ARC/blocks header compilation, and a macOS Objective-C compile-link-runtime host (zig build test-objc-api) without adding Foundation requirements to non-macOS or plain C consumers. Current runtime coverage is tracked separately in #158 at 32 implemented / 76 pending.

Sign in to comment on this issue.