Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Rust ABI profile — Boundary and stability

Platform spec article

Rust ABI profile — Boundary and stability

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki

The normative stable surface for loaders and generated code is the set of exported symbols and their documented C-compatible signatures published through beskid_abi and realized in beskid_runtime. Conformance tests lock this set for a given runtime ABI version (see compiler/crates/beskid_tests/src/abi/contracts.rs).

Rust types, modules, and internal helpers inside beskid_runtime that are not part of the exported symbol contract may change across compiler releases without a major ABI version bump, provided tests and documented runtime behavior remain compatible.

Runtime entrypoints may use extern "C-unwind" (or equivalent) where platform policy requires interoperable unwinding with generated code. The exact mapping is profile-defined and must stay consistent with panic and IO documentation under /execution/runtime/.