pub struct WasmtimeEngine { /* private fields */ }Expand description
Wasmtime-based Wasm engine implementation.
Wraps a wasmtime::Engine configured per WasmtimeEngineConfig.
Thread-safe: the inner wasmtime::Engine is Send + Sync and can
be shared across async tasks.
§COLD PATH — constructed once at host startup.
§Examples
use torvyn_engine::{WasmtimeEngine, WasmtimeEngineConfig};
let config = WasmtimeEngineConfig::default();
let engine = WasmtimeEngine::new(config).expect("engine creation");Implementations§
Source§impl WasmtimeEngine
impl WasmtimeEngine
Sourcepub fn new(config: WasmtimeEngineConfig) -> Result<Self, EngineError>
pub fn new(config: WasmtimeEngineConfig) -> Result<Self, EngineError>
Create a new WasmtimeEngine with the given configuration.
§COLD PATH — called once at host startup.
§Errors
Returns EngineError::Internal if the Wasmtime Config is invalid.
Sourcepub fn inner(&self) -> &Engine
pub fn inner(&self) -> &Engine
Returns a reference to the underlying Wasmtime engine.
Useful for downstream crates that need to create linkers or other engine-dependent objects.
Sourcepub fn config(&self) -> &WasmtimeEngineConfig
pub fn config(&self) -> &WasmtimeEngineConfig
Returns a reference to the engine configuration.
Trait Implementations§
Source§impl WasmEngine for WasmtimeEngine
impl WasmEngine for WasmtimeEngine
Source§fn set_fuel(
&self,
instance: &mut ComponentInstance,
fuel: u64,
) -> Result<(), EngineError>
fn set_fuel( &self, instance: &mut ComponentInstance, fuel: u64, ) -> Result<(), EngineError>
§WARM PATH — called before each invocation.
Source§fn fuel_remaining(&self, instance: &ComponentInstance) -> Option<u64>
fn fuel_remaining(&self, instance: &ComponentInstance) -> Option<u64>
§HOT PATH — called after each invocation.
Source§fn memory_usage(&self, instance: &ComponentInstance) -> usize
fn memory_usage(&self, instance: &ComponentInstance) -> usize
§WARM PATH
Source§fn compile_component(
&self,
bytes: &[u8],
) -> Result<CompiledComponent, EngineError>
fn compile_component( &self, bytes: &[u8], ) -> Result<CompiledComponent, EngineError>
Compile a Wasm component binary to native code. Read more
Source§fn serialize_component(
&self,
compiled: &CompiledComponent,
) -> Result<Vec<u8>, EngineError>
fn serialize_component( &self, compiled: &CompiledComponent, ) -> Result<Vec<u8>, EngineError>
Serialize a compiled component for disk caching. Read more
Source§unsafe fn deserialize_component(
&self,
bytes: &[u8],
) -> Result<Option<CompiledComponent>, EngineError>
unsafe fn deserialize_component( &self, bytes: &[u8], ) -> Result<Option<CompiledComponent>, EngineError>
Deserialize a previously compiled component from cached bytes. Read more
Source§fn instantiate<'life0, 'life1, 'async_trait>(
&'life0 self,
compiled: &'life1 CompiledComponent,
imports: ImportBindings,
component_id: ComponentId,
) -> Pin<Box<dyn Future<Output = Result<ComponentInstance, EngineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn instantiate<'life0, 'life1, 'async_trait>(
&'life0 self,
compiled: &'life1 CompiledComponent,
imports: ImportBindings,
component_id: ComponentId,
) -> Pin<Box<dyn Future<Output = Result<ComponentInstance, EngineError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Instantiate a compiled component with the given import bindings. Read more
Auto Trait Implementations§
impl Freeze for WasmtimeEngine
impl !RefUnwindSafe for WasmtimeEngine
impl Send for WasmtimeEngine
impl Sync for WasmtimeEngine
impl Unpin for WasmtimeEngine
impl UnsafeUnpin for WasmtimeEngine
impl !UnwindSafe for WasmtimeEngine
Blanket Implementations§
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
Mutably borrows from an owned value. Read more
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>
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 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>
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