User C ABI separate from runtime Rust exports
Platform spec ADR
User C ABI separate from runtime Rust exports
Spec standingStandard
- Contract import syntax How extern contracts declare foreign imports and map to symbols and call shapes.
- Extern attribute schema Normative Extern and per-method interop attributes for contract imports (v0.3).
- FFI and extern — Verification and traceability Conformance strategy for v0.3 FFI spec (fixtures, diagnostics, ignored runtime tests).
0 revisions (git unavailable at build; counts may be empty)
No commits recorded for this path.
Full tree: run pnpm verify:platform-spec-layout (writes src/generated/platform-spec-layout-report.json).
Context
Section titled “Context”Mixing user Extern symbols with BESKID_RUNTIME_ABI_VERSION exports caused namespace and stability risk.
Decision
Section titled “Decision”| Plane | Rule |
|---|---|
| User libraries | C ABI profile + link-time binding |
| Runtime embedding | Rust ABI profile / frozen builtin table |
| Separation | User Extern must not mutate runtime builtin symbol namespace |
Consequences
Section titled “Consequences”JIT registration and engine policy keep tables disjoint; see profile boundary map on hub.
Verification anchors
Section titled “Verification anchors”compiler/crates/beskid_abi; Rust ABI profile; C ABI profile.