AOT backend specification
Purpose
Section titled “Purpose”This chapter defines AOT backend responsibilities in Beskid’s execution stack. It focuses on architecture boundaries, not toolchain automation policy.
AOT scope
Section titled “AOT scope”- Consume lowered artifacts produced by shared frontend/lowering.
- Emit target object code through
ObjectModulesemantics. - Orchestrate runtime bundling and final linkage for production artifacts.
- Respect runtime ABI ownership and boundary invariants.
AOT pipeline model
Section titled “AOT pipeline model”- Build target ISA from target triple.
- Declare runtime ABI imports from the shared runtime symbol surface.
- Define lowered functions and data objects.
- Emit object file.
- Link final output (exe/shared/static) with bundled runtime.
Runtime bundling policy
Section titled “Runtime bundling policy”- Final executable and library outputs bundle Beskid runtime components.
- Runtime bundling is part of AOT backend behavior, not userland feature logic.
- Runtime ABI version and symbol surface remain authoritative for compatibility.
Output and export rules
Section titled “Output and export rules”- Export behavior is derived from language visibility and explicit export policy.
- Internal symbols are not part of public runtime ABI.
- Entrypoint requirements are backend policy and must align with architecture boundary docs.
Non-goals
Section titled “Non-goals”- Defining language-level semantics (owned by
docs/spec). - Defining platform syscall policy (owned by runtime boundary docs).
- Defining memory model internals (owned by
docs/execution/memory).
See also
Section titled “See also”docs/execution/architecture/jit-aot-boundary.mddocs/execution/runtime/syscalls-and-abi-boundary.mddocs/execution/ir-and-lowering/clif-lowering.md