Skip to content
Beskid Platform specification

Beskid

Jump to a Beskid service

Beskid

Jump to a Beskid service

Contracts and edge cases

Platform spec article

Contracts and edge cases

Spec standingStandard

Owner
Piotr Mikstacki
Submitter
Piotr Mikstacki
IDRequirement
EXT-001If dynamic extern resolution is disabled, compilation must fail when the artifact references extern symbols, listing each unresolved import.
EXT-002Engine-validated extern signatures must use only approved scalar Cranelift kinds; all other types must be rejected.
EXT-003Dynamic loading on Linux must use RTLD_LOCAL | RTLD_NOW; error paths must surface dlerror() text.
EXT-004(library, symbol) resolution must be cached for process lifetime without double dlopen of the same library path.
EXT-005interop_dispatch_* builtins must follow layouts documented in beskid_runtime interop_layout.rs for the active ABI version.
EXT-006User-facing docs must not expose internal __interop_* mangling; stable names are interop_dispatch_* only.
CaseBehavior
Missing shared libraryCompile/link failure with library path in diagnostic when dynamic path enabled
Missing symboldlsym failure with symbol + library name
Extern in artifact, feature offFail fast (EXT-001); no silent stub addresses
Mixed link-time + dynamic in one workspaceEach artifact follows its manifest/link profile; engine caches are per-process
Non-Linux host with extern_dlopenUnsupported; compilation or tests should skip with explicit platform guard
  • New packages should use link-time C ABI profile rather than extern_dlopen.
  • Panic from foreign code should be treated as process-fatal; Beskid does not translate C aborts into Option.