pub struct LinkedProgram {Show 29 fields
pub entry: FunctionHash,
pub instructions: Vec<Instruction>,
pub constants: Vec<Constant>,
pub strings: Vec<String>,
pub functions: Vec<LinkedFunction>,
pub hash_to_id: HashMap<FunctionHash, usize>,
pub debug_info: DebugInfo,
pub data_schema: Option<DataFrameSchema>,
pub module_binding_names: Vec<String>,
pub top_level_locals_count: u16,
pub top_level_local_storage_hints: Vec<StorageHint>,
pub type_schema_registry: TypeSchemaRegistry,
pub module_binding_storage_hints: Vec<StorageHint>,
pub function_local_storage_hints: Vec<Vec<StorageHint>>,
pub top_level_frame: Option<FrameDescriptor>,
pub top_level_local_concrete_types: Vec<ConcreteType>,
pub function_local_concrete_types: Vec<Vec<ConcreteType>>,
pub function_return_concrete_types: Vec<ConcreteType>,
pub monomorphized_method_call_sites: HashMap<(Span, Option<usize>), usize>,
pub value_call_return_concrete_types: HashMap<(Span, Option<usize>), ConcreteType>,
pub operator_trait_dispatch_sites: HashMap<Span, (String, u16)>,
pub trait_method_symbols: HashMap<String, String>,
pub foreign_functions: Vec<ForeignFunctionEntry>,
pub native_struct_layouts: Vec<NativeStructLayoutEntry>,
pub total_required_permissions: PermissionSet,
pub closure_function_layouts: Vec<Option<Arc<ClosureLayout>>>,
pub trait_vtables: HashMap<String, Arc<VTable>>,
pub has_imported_const_inline: bool,
pub has_w17_marshal_residual: bool,
}Expand description
A linked, execution-ready program with flat instruction/constant/string arrays.
This mirrors today’s BytecodeProgram layout so the executor can run it
with minimal changes. Produced by the linker from a Program.
Fields§
§entry: FunctionHashHash of the entry-point function for execution.
instructions: Vec<Instruction>Flat instruction array (all functions concatenated).
constants: Vec<Constant>Merged constant pool.
strings: Vec<String>Merged string pool.
functions: Vec<LinkedFunction>Linked function table (replaces Vec<Function>).
hash_to_id: HashMap<FunctionHash, usize>Reverse lookup: content hash -> function index in functions.
debug_info: DebugInfoDebug information.
data_schema: Option<DataFrameSchema>DataFrame schema for column name resolution.
module_binding_names: Vec<String>Module-binding variable names.
top_level_locals_count: u16Number of locals used by top-level code.
top_level_local_storage_hints: Vec<StorageHint>Storage hints for top-level locals.
type_schema_registry: TypeSchemaRegistryType schema registry for TypedObject field resolution.
module_binding_storage_hints: Vec<StorageHint>Storage hints for module bindings.
function_local_storage_hints: Vec<Vec<StorageHint>>Per-function local storage hints.
top_level_frame: Option<FrameDescriptor>Typed frame layout for top-level locals.
top_level_local_concrete_types: Vec<ConcreteType>Per-slot fully-resolved ConcreteType for top-level locals.
ADR-006 §2.7.5 conduit (top-level concrete-types side-table):
propagated from BytecodeProgram.top_level_local_concrete_types
through the linker so JIT compilation of linked programs can use
the typed-array / TypedObject fast paths. Not serialised — the
embedded StructLayoutId / EnumLayoutId are compile-time-local
registry indices; cached-program loads fall through to the legacy
NaN-boxed path.
function_local_concrete_types: Vec<Vec<ConcreteType>>Per-user-function per-MIR-slot ConcreteType side-table.
ADR-006 §2.7.5 conduit (W12-jit-aggregate-non-array, 2026-05-12):
LinkedProgram mirror of Program.function_local_concrete_types
— propagated through the linker so JIT compilation of linked
programs can use the TypedObject Aggregate short-circuit inside
user-function bodies. Not serialised — same rationale as
top_level_local_concrete_types.
function_return_concrete_types: Vec<ConcreteType>Per-user-function declared ConcreteType for the return value.
ADR-006 §2.7.5 conduit (W12-jit-call-return-kind, 2026-05-12):
LinkedProgram mirror of
Program.function_return_concrete_types — propagated through
the linker so the conduit can stamp Call-terminator destination
slots from the callee’s declared return type. Not serialised —
same rationale.
monomorphized_method_call_sites: HashMap<(Span, Option<usize>), usize>ADR-006 §2.7.5 conduit (V3-S6b-jit-method-monomorph-conduit
close, 2026-05-15): LinkedProgram mirror of
Program.monomorphized_method_call_sites — propagated through
the linker so the conduit producer can lift
function_return_concrete_types[specialized_idx] into the
destination slot’s ConcreteType at MirConstant::Method Call-
terminator sites. Not serialised — same rationale.
value_call_return_concrete_types: HashMap<(Span, Option<usize>), ConcreteType>ADR-006 §2.7.5 conduit (cluster-2-cw-IB-class-b close, 2026-05-16):
LinkedProgram mirror of Program.value_call_return_concrete_types
— propagated through the linker so the conduit producer can stamp
value-call TerminatorKind::Call destination slots from the
closure-bound callee’s inferred return ConcreteType. Not
serialised — same rationale.
operator_trait_dispatch_sites: HashMap<Span, (String, u16)>ADR-006 §2.7.5 conduit (W10 jit-call-method-user-trait-fix close,
2026-05-17): LinkedProgram mirror of
Program.operator_trait_dispatch_sites — propagated through the
linker so the JIT consumer can re-emit user-type binary/unary
trait-dispatch as method-call IR. Not serialised — same rationale.
trait_method_symbols: HashMap<String, String>Trait method dispatch registry.
foreign_functions: Vec<ForeignFunctionEntry>Foreign function metadata table.
native_struct_layouts: Vec<NativeStructLayoutEntry>Native type C layout metadata table.
total_required_permissions: PermissionSetTransitive union of all required permissions across all blobs.
Computed by the linker during link().
closure_function_layouts: Vec<Option<Arc<ClosureLayout>>>Closure spec §14.6 (H6.5): per-function ClosureLayout propagated
from BytecodeProgram.closure_function_layouts so the linked
program carries enough metadata for op_make_closure’s raw
producer path. None entries indicate the function is not a
closure body or the layout wasn’t computed. Not serialised —
programs loaded from disk fall back to the legacy HeapValue:: Closure variant in the VM producer.
trait_vtables: HashMap<String, Arc<VTable>>ADR-006 §2.7.24 Q25.C trait-object vtable registry. Keyed by
"Trait::ConcreteType". Threaded through from the
content-addressed Program at link time so the VM op_box_trait_object
handler can look up the vtable to build Arc<TraitObjectStorage>.
Not serialised (Arc
has_imported_const_inline: boolR8 W8 Cluster A surface-and-stop flag (2026-05-25).
Mirrors BytecodeProgram::has_imported_const_inline; propagated
through the linker so the JIT executor (which receives the
post-link BytecodeProgram) can refuse to JIT-compile the program
when imported pub const identifiers were inlined-at-use as
PushConst(<value>) by compile_expr_identifier. Triggers W12
[jit-fallback] deopt to bytecode interpreter; root-cause fix in
JIT identifier-eval lowering is v0.4 per
docs/v0.3-close-summary.md §5.16. NOT serialised — compile-time
state.
has_w17_marshal_residual: boolR8 W9 B1 W17-marshal-return surface-and-stop flag (2026-05-25).
Mirror of Program::has_w17_marshal_residual propagated through
the linker so the JIT executor can refuse to JIT-compile programs
containing direct stdlib-imported function calls. Triggers W12
[jit-fallback] deopt to bytecode interpreter; root-cause fix in
JIT ModuleFn dispatch (jit_call_value arm + dispatch_module_fn_call
todo!()) is v0.4 per docs/v0.3-close-summary.md §5.16. NOT
serialised — compile-time state.
Trait Implementations§
Source§impl Clone for LinkedProgram
impl Clone for LinkedProgram
Source§fn clone(&self) -> LinkedProgram
fn clone(&self) -> LinkedProgram
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for LinkedProgram
impl Debug for LinkedProgram
Source§impl Default for LinkedProgram
impl Default for LinkedProgram
Source§fn default() -> LinkedProgram
fn default() -> LinkedProgram
Source§impl<'de> Deserialize<'de> for LinkedProgram
impl<'de> Deserialize<'de> for LinkedProgram
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Auto Trait Implementations§
impl !Freeze for LinkedProgram
impl RefUnwindSafe for LinkedProgram
impl Send for LinkedProgram
impl Sync for LinkedProgram
impl Unpin for LinkedProgram
impl UnsafeUnpin for LinkedProgram
impl UnwindSafe for LinkedProgram
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more