pub struct EvalContext {Show 19 fields
pub module_cache: RefCell<BTreeMap<PathBuf, BTreeMap<String, Value>>>,
pub current_file: RefCell<Vec<PathBuf>>,
pub module_exports: RefCell<Vec<Option<Vec<String>>>>,
pub module_load_stack: RefCell<Vec<PathBuf>>,
pub call_stack: RefCell<Vec<CallFrame>>,
pub span_table: RefCell<HashMap<usize, Span>>,
pub eval_depth: Cell<usize>,
pub max_eval_depth: Cell<usize>,
pub eval_step_limit: Cell<usize>,
pub eval_steps: Cell<usize>,
pub eval_deadline: Cell<Option<Instant>>,
pub sandbox: Sandbox,
pub user_context: RefCell<Vec<BTreeMap<Value, Value>>>,
pub hidden_context: RefCell<Vec<BTreeMap<Value, Value>>>,
pub context_stacks: RefCell<BTreeMap<Value, Vec<Value>>>,
pub eval_fn: Cell<Option<EvalCallbackFn>>,
pub call_fn: Cell<Option<CallCallbackFn>>,
pub interactive: Cell<bool>,
pub vm_backend: Cell<bool>,
}Fields§
§module_cache: RefCell<BTreeMap<PathBuf, BTreeMap<String, Value>>>§current_file: RefCell<Vec<PathBuf>>§module_exports: RefCell<Vec<Option<Vec<String>>>>§module_load_stack: RefCell<Vec<PathBuf>>§call_stack: RefCell<Vec<CallFrame>>§span_table: RefCell<HashMap<usize, Span>>§eval_depth: Cell<usize>§max_eval_depth: Cell<usize>§eval_step_limit: Cell<usize>§eval_steps: Cell<usize>§eval_deadline: Cell<Option<Instant>>Optional wall-clock deadline for evaluation. When set, both the tree-walker and the bytecode VM periodically check whether the current time has passed this instant and, if so, abort with an error. Used by the notebook engine to bound how long a single cell evaluation can run.
sandbox: Sandbox§user_context: RefCell<Vec<BTreeMap<Value, Value>>>§context_stacks: RefCell<BTreeMap<Value, Vec<Value>>>§eval_fn: Cell<Option<EvalCallbackFn>>§call_fn: Cell<Option<CallCallbackFn>>§interactive: Cell<bool>§vm_backend: Cell<bool>Whether the bytecode VM is the active backend. When true, (load ...)
compiles and runs the loaded file’s body on the VM (so async/channels work
in loaded files and the code runs at VM speed); when false (the
tree-walker, e.g. --tw), the body is tree-walked. Defaults to false so
embedders that never set it keep the tree-walker path. NOTE: import is
always tree-walked regardless (its module isolation needs lexical env
capture the VM does not yet provide — see docs/plans/2026-06-16-vm-module-loading.md).
Implementations§
Source§impl EvalContext
impl EvalContext
pub fn new() -> Self
pub fn new_with_sandbox(sandbox: Sandbox) -> Self
Sourcepub fn set_vm_backend(&self, on: bool)
pub fn set_vm_backend(&self, on: bool)
Mark whether the bytecode VM is the active backend (see vm_backend).
Sourcepub fn vm_backend(&self) -> bool
pub fn vm_backend(&self) -> bool
Whether the bytecode VM is the active backend.
pub fn push_file_path(&self, path: PathBuf)
pub fn pop_file_path(&self)
pub fn current_file_dir(&self) -> Option<PathBuf>
pub fn current_file_path(&self) -> Option<PathBuf>
pub fn get_cached_module( &self, path: &PathBuf, ) -> Option<BTreeMap<String, Value>>
pub fn cache_module(&self, path: PathBuf, exports: BTreeMap<String, Value>)
pub fn set_module_exports(&self, names: Vec<String>)
pub fn clear_module_exports(&self)
pub fn take_module_exports(&self) -> Option<Vec<String>>
pub fn begin_module_load(&self, path: &PathBuf) -> Result<(), SemaError>
pub fn end_module_load(&self, path: &PathBuf)
pub fn push_call_frame(&self, frame: CallFrame)
pub fn call_stack_depth(&self) -> usize
pub fn truncate_call_stack(&self, depth: usize)
pub fn capture_stack_trace(&self) -> StackTrace
pub fn merge_span_table(&self, spans: SpanMap)
pub fn lookup_span(&self, ptr: usize) -> Option<Span>
pub fn set_eval_step_limit(&self, limit: usize)
Sourcepub fn set_eval_deadline(&self, deadline: Option<Instant>)
pub fn set_eval_deadline(&self, deadline: Option<Instant>)
Set a wall-clock deadline after which evaluation should abort.
Passing None clears any existing deadline.
Sourcepub fn deadline_exceeded(&self) -> bool
pub fn deadline_exceeded(&self) -> bool
Returns true if a deadline is set and has been exceeded.
Sourcepub fn check_deadline(&self) -> Result<(), SemaError>
pub fn check_deadline(&self) -> Result<(), SemaError>
Returns an eval error if a deadline is set and exceeded; otherwise Ok(()).