Sibling articles under this feature previously restated requirements in inconsistent forms.
Backends (JIT and AOT) - Contracts and edge cases
Platform spec article
Backends (JIT and AOT) - Contracts and edge cases
Spec standingStandard
-
This feature hub owns normative MUST/SHOULD contract text for Backends (JIT and AOT).
Context
Decision
This feature hub owns normative MUST/SHOULD contract text. Sibling articles must not redefine hub requirements and should link here for authority.
Consequences
Contract changes start on the hub or in linked ADRs, then propagate to articles and implementation anchors.
Verification anchors
site/website/src/content/docs/platform-spec/compiler/build-pipeline/backends-jit-aot/index.mdxarticle bundle under the same feature directory.
-
Platform-spec text supersedes informal crate comments for Backends (JIT and AOT).
Context
Implementation crates accumulated informal notes that diverged from published contracts.
Decision
Normative platform-spec prose and ADRs under this feature supersede informal comments in implementation crates until explicitly migrated into spec text.
Consequences
Engineers file spec/ADR updates when behavior changes; crate comments are non-authoritative for conformance arguments.
Verification anchors
compiler/crates/beskid_analysis/
-
JIT and AOT must consume the same lowered artifact.
Context
Lowering produces one
CodegenArtifact; backend selection happens after semantic gates complete.Decision
Both JIT (
beskid_engine::JitModule) and AOT link flows must accept the same schema fields frombeskid_codegenwithout forking lowering.Consequences
Backend-specific options attach at execution time; lowering stays single-path.
Verification anchors
compiler/crates/beskid_engine/src/jit_module.rscompiler/crates/beskid_codegencompiler/crates/beskid_tests/src/runtime/jit.rs.
- Backends (JIT and AOT) - Contracts and edge cases Required backend guarantees for output kinds, entrypoints, and shared lowering semantics.
- Backends (JIT and AOT) - Design model Backend responsibility split and shared artifact model for run and build commands.
- Backends (JIT and AOT) - Examples Example command outcomes for JIT execution and AOT output kinds.
- Backends (JIT and AOT) - FAQ and troubleshooting Troubleshooting for backend-specific build or run failures.
- Backends (JIT and AOT) - Flow and algorithm Ordered backend execution for run and build after lowering completes.
- Backends (JIT and AOT) - Verification and traceability Crate-level anchors and tests that verify backend divergence and shared lowering contract.
0 revisions (git unavailable at build; counts may be empty)
No commits recorded for this path.
Full tree: run pnpm verify:platform-spec-layout (writes src/generated/platform-spec-layout-report.json).
- JIT and AOT must not diverge in front-end semantic results for the same source.
- Entrypoint contract for executables requires symbol
mainin current AOT linker strategy. - AOT supports
Exe,SharedLib,StaticLib, andObjectOnlyoutput kinds, with platform limits enforced by linker strategy checks. - Static archive merge currently targets Unix-style toolchains (
ar/ranliborlibtoolon Apple hosts); Windows static archive merge is rejected as unsupported. - When JIT extern loading is enabled (
extern_dlopen), symbol resolution must respect configured allow/deny policy filters (BESKID_EXTERN_ALLOW,BESKID_EXTERN_DENY). - Backend failures should report compile/build diagnostics, not silently fallback to alternate modes.