Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Contracts and edge cases

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki
IDRequirement
ABI-001RUNTIME_EXPORT_SYMBOLS in beskid_abi must list every symbol the JIT registers and the runtime exports with #[unsafe(no_mangle)] under the same spelling.
ABI-002BUILTIN_SPECS must be the sole source of Cranelift import signatures for runtime builtins; hand-written CLIF calls must not invent alternate calling conventions.
ABI-003Hosts should reject execution when beskid_runtime_abi_version()BESKID_RUNTIME_ABI_VERSION compiled into the active compiler.
ABI-004Breaking layout or signature changes must increment BESKID_RUNTIME_ABI_VERSION; silent mismatches are forbidden.
ABI-005Additive symbols may ship without a version bump only if older generated code never imports them and older runtimes ignore unknown symbols safely.
ABI-006JIT and AOT for the same release must target identical beskid_abi revision (same symbol set and signatures).
ScenarioExpected behavior
Stale VSIX / CLI with fresh runtimeVersion check fails fast with actionable diagnostics before running user main.
Renamed builtin without version bumpLink or JIT finalize fails (MissingFunction) or undefined behavior if forced—treated as a release process violation.
Optional runtime features (arrays_backing, metrics)Do not change BESKID_RUNTIME_ABI_VERSION; see Runtime feature flags.
Dynamic Extern symbolsResolved addresses are extras in BeskidJitModule::new_with_symbols; they are not part of RUNTIME_EXPORT_SYMBOLS.
  • Release notes should document ABI bumps and list removed or renamed symbols.
  • Conformance fixtures should assert symbol list parity between symbols.rs and beskid_runtime::lib.rs re-exports.