Module yksom::vm[][src]

The yksom run-time. The run-time uses trait objects but stores them as thin pointers (using the experimental natrob library. This allows integer tagging to be used. The Val struct stores tagged integers / pointers to boxed objects. The Obj trait is the “supertype” trait of all objects, but it is not intended that most parts of the VM call Obj directly: one should use the identically named methods on Val. As this suggests, users should, in most cases, either operate directly on a Val or Val::downcast (or Val::try_downcast) it to a concrete implementation of Obj.

Re-exports

pub use crate::vm::core::VM;
pub use crate::vm::error::VMError;
pub use crate::vm::error::VMErrorKind;

Modules

core

The core part of the interpreter.

error
function
objects

This module contains the core SOM objects. Note that there is a fundamental constraint that must be obeyed by the programmer at all times: upon their creation, instances of the Obj trait must immediately be passed to Val::from_obj. In other words this is safe:

somstack
val

Tagged pointer support.