21.1 Interop overview
Language-meta interop domain and how profiles bind primitives.
Interop overview
Start at Interop. Profiles define which boundary is supported: C ABI is the user-authored foreign-code boundary, while Rust ABI documents the language-owned runtime. Higher-level mapping rules live under Interop contracts. ABI v4 narrows the stable runtime surface to kernel exports plus dispatch envelope layout—soft ops route through tags, not ~80 direct linker symbols.
Caution: A user-authored
externtarget must use the C ABI profile. To call a Rust library, expose a C-compatible shim and declare that shim as the target; do not link the crate through the Rust ABI profile. That profile is runtime-only.
See runtime registration only when working on the language-owned runtime’s handler tables and status codes.
Pick the owner before the mechanism
Section titled “Pick the owner before the mechanism”Use the Interop domain for source-level declarations and profile selection. Use the execution ABI pages for host dispatch, and use core-library integration pages only where they are explicitly linked by the chosen profile. This prevents an implementation convenience from being mistaken for a portable application boundary.
Reading route
Section titled “Reading route”- Read Interop for the category of boundary.
- For user code, select C ABI; use Rust ABI only for runtime integration.
- Follow to extern dispatch and policy when host behavior matters.