Interop
Platform spec area
Interop
No architecture decision records under adr/ for this feature yet. Standard features must
publish at least one ADR or keep a ## Decisions summary on the hub.
- No directly attached article pages for this node. Nested descendants exist deeper in this subtree.
0 revisions (git unavailable at build; counts may be empty)
No commits recorded for this path.
| Section id | Required | Found |
|---|---|---|
scope | yes | yes |
features | yes | yes |
Full tree: run pnpm verify:platform-spec-layout (writes src/generated/platform-spec-layout-report.json).
Scope
This area defines how Beskid programs interact with foreign code and with the Rust-hosted runtime that implements execution services.
v0.3 FFI (spec-first, Standard in platform-spec) covers user interop and layout only. The runtime ABI (BESKID_RUNTIME_ABI_VERSION, builtin exports) stays on the Rust ABI profile and is not versioned with user FFI layout bands.
| Feature | Role |
|---|---|
| Interop.Contracts | Symbols, call shapes, ownership, callbacks, conformance |
| FFI and extern | Extern import syntax and attributes |
| Export and callbacks | [Export] and host callback registration |
| C ABI profile | Link-time linking, interop views, tier-1 platforms |
| Rust ABI profile | Embedding runtime exports (unchanged scope) |
| Foreign library import | project.link + CLI import lib + ExternalLibrary trait |
Delivery bands: v0.3.0 — interop views + link-time + export/callbacks (spec). v0.3.1 — CLayout primitive structs (Proposed). Complex nested FFI types after basic FFI is in place.
Execution chapters under /platform-spec/execution/ document lowering and drivers; they pair with this area but do not replace normative language rules here.
Feature index
Use the tiles below for normative feature contracts in this area.
Features
- C ABI profileSystem V-style C ABI binding for user extern contracts—types, calling conventions, libraries, and engine resolution policy.
- Export and callbacksv0.3 normative Beskid export to C hosts and callback registration tables.
- FFI and externv0.3 normative language surface for foreign import (Extern), interop views, and links to export/callback features.
- Interop.ContractsLanguage-agnostic primitives for foreign boundaries—symbols, call shapes, ownership, and conformance—shared by C and Rust ABI profiles.
- Rust ABI profileRust-hosted runtime surface—exported symbols, unwind at the boundary, and stability rules distinct from user C extern libraries.