Skip to main content

Program

Struct Program 

Source
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: FunctionHash

Hash of the entry-point function.

§function_store: HashMap<FunctionHash, FunctionBlob>

All function blobs keyed by content hash.

§top_level_locals_count: u16

Number 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: TypeSchemaRegistry

Type 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: DebugInfo

Debug 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: bool

R8 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: bool

R8 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 Clone for Program

Source§

fn clone(&self) -> Program

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Program

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Program

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Program

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> Allocation for T
where T: RefUnwindSafe + Send + Sync,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,