pub struct ModuleContext<'a> {
pub schemas: &'a TypeSchemaRegistry,
pub invoke_callable: Option<&'a dyn Fn(&KindedSlot, &[KindedSlot]) -> Result<KindedSlot, String>>,
pub raw_invoker: Option<RawCallableInvoker>,
pub function_hashes: Option<&'a [Option<[u8; 32]>]>,
pub vm_state: Option<&'a dyn VmStateAccessor>,
pub granted_permissions: Option<PermissionSet>,
pub scope_constraints: Option<ScopeConstraints>,
pub set_pending_resume: Option<&'a dyn Fn(KindedSlot)>,
pub set_pending_frame_resume: Option<&'a dyn Fn(usize, Vec<KindedSlot>)>,
}Expand description
Execution context available to module functions during a VM call.
The VM constructs this before each module function dispatch and passes it by reference.
Fields§
§schemas: &'a TypeSchemaRegistryType schema registry — lookup types by name or ID.
invoke_callable: Option<&'a dyn Fn(&KindedSlot, &[KindedSlot]) -> Result<KindedSlot, String>>Invoke a Shape callable (function/closure) from host code.
raw_invoker: Option<RawCallableInvoker>Raw invoker for extensions that need to capture a callable invoker beyond the borrow lifetime (e.g., CFFI callback userdata). Valid only for the duration of the current module function call.
function_hashes: Option<&'a [Option<[u8; 32]>]>Content-addressed function hashes indexed by function ID.
Provided by the VM when content-addressed metadata is available.
Uses raw [u8; 32] to avoid a dependency on shape-vm’s FunctionHash.
vm_state: Option<&'a dyn VmStateAccessor>Read-only access to VM state (call frames, locals, etc.). Provided by the VM when state introspection is needed.
granted_permissions: Option<PermissionSet>Permissions granted to the current execution context.
When Some, module functions check this before performing I/O.
When None, all operations are allowed (backwards compatible).
scope_constraints: Option<ScopeConstraints>Scope constraints for the current execution context. Narrows permissions to specific paths, hosts, etc.
set_pending_resume: Option<&'a dyn Fn(KindedSlot)>Callback for state.resume() to request full VM state restoration.
The module function stores the snapshot; the dispatch loop applies it
after the current instruction completes.
set_pending_frame_resume: Option<&'a dyn Fn(usize, Vec<KindedSlot>)>Callback for state.resume_frame() to request mid-function resume.
Stores (ip_offset, locals) so the dispatch loop can override the
call frame set up by invoke_callable.