pub struct Program {Show 24 fields
pub entry: FunctionHash,
pub function_store: HashMap<FunctionHash, FunctionBlob>,
pub top_level_locals_count: u16,
pub top_level_local_storage_hints: Vec<StorageHint>,
pub module_binding_names: Vec<String>,
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 data_schema: Option<DataFrameSchema>,
pub type_schema_registry: TypeSchemaRegistry,
pub trait_method_symbols: HashMap<String, String>,
pub foreign_functions: Vec<ForeignFunctionEntry>,
pub native_struct_layouts: Vec<NativeStructLayoutEntry>,
pub debug_info: DebugInfo,
pub closure_function_layouts_by_name: HashMap<String, Arc<ClosureLayout>>,
pub trait_vtables: HashMap<String, Arc<VTable>>,
pub has_imported_const_inline: bool,
pub has_w17_marshal_residual: bool,
}Expand description
A content-addressed program: a set of FunctionBlobs plus program-level metadata.
This is the storage / cache representation. Before execution the linker
flattens it into a LinkedProgram.
Fields§
§entry: FunctionHashHash of the entry-point function.
function_store: HashMap<FunctionHash, FunctionBlob>All function blobs keyed by content hash.
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.
module_binding_names: Vec<String>Module-binding variable names (index -> name).
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 (content-addressed mirror of
BytecodeProgram.top_level_local_concrete_types). Survives the
Program → link() → LinkedProgram → BytecodeProgram
round-trip so JIT compilation of in-memory-compiled programs can
use the typed-array / TypedObject fast paths. Not serialised —
ConcreteType carries opaque registry IDs that aren’t a stable
wire shape; 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):
content-addressed mirror of
BytecodeProgram.function_local_concrete_types. Survives the
Program → link() → LinkedProgram → BytecodeProgram round-
trip so JIT compilation of in-memory-compiled programs can use
the TypedObject Aggregate short-circuit inside user-function
bodies (Smoke 1.5 divide, Smoke 2 first_positive, 28 stdlib
helpers). 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 close, 2026-05-12):
content-addressed mirror of
BytecodeProgram.function_return_concrete_types. Survives the
Program → link() → LinkedProgram → BytecodeProgram
round-trip so the conduit can stamp Call-terminator destination
slots from the callee’s declared return type. Not serialised —
same rationale as the sibling *_concrete_types side-tables.
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): content-addressed mirror of
BytecodeProgram.monomorphized_method_call_sites. Survives the
Program → link() → LinkedProgram → BytecodeProgram
round-trip 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 — opaque per-program FunctionId
indices aren’t a stable wire shape.
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):
content-addressed mirror of
BytecodeProgram.value_call_return_concrete_types. Survives the
Program → link() → LinkedProgram → BytecodeProgram
round-trip so the conduit producer can stamp value-call
TerminatorKind::Call destination slots from the closure-bound
callee’s inferred return ConcreteType. Not serialised —
ConcreteType carries opaque registry IDs that aren’t a stable
wire shape.
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): content-addressed mirror of
BytecodeProgram.operator_trait_dispatch_sites. Survives the
Program → link() → LinkedProgram → BytecodeProgram
round-trip so the JIT consumer can re-emit user-type binary/unary
trait-dispatch as method-call IR. Not serialised — Spans carry
source-position offsets that aren’t a stable wire shape.
data_schema: Option<DataFrameSchema>DataFrame schema for column name resolution.
type_schema_registry: TypeSchemaRegistryType schema registry for TypedObject field resolution.
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.
debug_info: DebugInfoDebug information (source files, variable names).
closure_function_layouts_by_name: HashMap<String, Arc<ClosureLayout>>Closure spec §14.6 (H6.5): per-function-name ClosureLayout
side-table threaded through the content-addressed Program so it
survives the link() → LinkedProgram → BytecodeProgram round-
trip. Keyed by function name because the content-addressed store
reorders blobs topologically; the linker remaps to post-link
function-id positions in LinkedProgram.closure_function_layouts.
Not serialised — programs loaded from disk fall back to the
legacy HeapValue::Closure variant.
trait_vtables: HashMap<String, Arc<VTable>>ADR-006 §2.7.24 Q25.C trait-object vtable registry. Keyed by
"Trait::ConcreteType" strings (matching the existing
trait_method_symbols key prefix). Built at impl-block
compilation; consumed at op_box_trait_object runtime to build
Arc<TraitObjectStorage>. Not serialised because Arc<VTable>
is not a stable wire shape; in cached-program-load mode the
vtables are rebuilt at link time from trait_method_symbols.
has_imported_const_inline: boolR8 W8 Cluster A surface-and-stop flag (2026-05-25). Mirror of
BytecodeProgram::has_imported_const_inline for the content-
addressed Program shape; propagated through the linker so the JIT
executor can deopt the whole program to the bytecode interpreter
when imported pub const identifiers were inlined-at-use by
compile_expr_identifier. v0.4 root-cause fix per close-summary
§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 BytecodeProgram::has_w17_marshal_residual for the
content-addressed Program shape; propagated through the linker so
the JIT executor can deopt the whole program to the bytecode
interpreter when the program contains direct calls to imported
stdlib functions (which route through Ptr(HeapKind::ModuleFn)
callees that the JIT’s jit_call_value silently returns
TAG_NULL for). v0.4 root-cause fix per close-summary §5.16.
NOT serialised — compile-time state.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for Program
impl<'de> Deserialize<'de> for Program
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 Program
impl RefUnwindSafe for Program
impl Send for Program
impl Sync for Program
impl Unpin for Program
impl UnsafeUnpin for Program
impl UnwindSafe for Program
Blanket Implementations§
impl<T> Allocation for T
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,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
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