Sibling articles under this feature previously restated requirements in inconsistent forms.
Backends (JIT and AOT) - FAQ and troubleshooting
Platform spec article
Backends (JIT and AOT) - FAQ and troubleshooting
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).
Why does run pass but build --kind exe fail?
Section titled “Why does run pass but build --kind exe fail?”Linking and runtime packaging are AOT-only steps; inspect linker/runtime preparation diagnostics.
Why does object-only build skip runtime files?
Section titled “Why does object-only build skip runtime files?”ObjectOnly intentionally omits runtime preparation and native linking.
Why does build --kind static fail on Windows targets?
Section titled “Why does build --kind static fail on Windows targets?”Current static archive merge is implemented for Unix-style toolchains (ar/ranlib, and libtool on Apple hosts). Windows static archive merge currently returns an unsupported-linker-strategy error.
Why does build --kind exe --entrypoint foo fail?
Section titled “Why does build --kind exe --entrypoint foo fail?”Current executable linker strategy requires entrypoint symbol main; alternate executable entrypoint names are rejected.
Can JIT use a different lowering path?
Section titled “Can JIT use a different lowering path?”Not in the current contract; both backends share the same lowering entrypoint.