Expand description
The runtime ABI manifest: one row per praxis_* symbol the JIT can call.
Everything the compiler needs to know about a runtime wrapper — its exact
symbol name, its parameter and return kinds, and whether calling it can
allocate or fault — is one row in [runtime_symbols!] below, so no two
places can drift about a symbol’s signature or its effects.
A call target is a RuntimeSymbol, not a string. Adding a wrapper
means adding a row here and one arm to praxis_runtime::abi::address; both
are exhaustive matches, so anything else that must change is a compile
error rather than a runtime surprise.
This crate is the right home because it is the lowest common dependency of
the compiler crates that need the manifest (praxis-mir,
praxis-codegen-cranelift) and of praxis-runtime, which supplies the
addresses.
Structs§
- AbiSig
- One wrapper’s full ABI: what it takes, what it gives back, what it may do.
Enums§
- AbiKind
- The kind of one ABI parameter — what a value in that position is, which fixes the machine type the caller must pass.
- AbiRet
- What a wrapper returns.
- Effect
- The one answer to “does calling this need a root set, or a fault check?”
- Runtime
Symbol - Every
praxis_*runtime wrapper generated code may call.