Skip to main content

RuntimeConfig

Struct RuntimeConfig 

Source
pub struct RuntimeConfig {
    pub fuel: u64,
    pub max_wasm_stack: usize,
    pub memory_reservation: u64,
    pub memory_guard_size: u64,
    pub memory_reservation_for_growth: u64,
    pub max_store_bytes: u64,
    pub timeout: Option<Duration>,
    pub async_yield_fuel: Option<u64>,
}

Fields§

§fuel: u64§max_wasm_stack: usize§memory_reservation: u64§memory_guard_size: u64§memory_reservation_for_growth: u64§max_store_bytes: u64§timeout: Option<Duration>§async_yield_fuel: Option<u64>

Implementations§

Source§

impl RuntimeConfig

Source

pub fn native_stack_size(&self) -> usize

The native stack a thread running programs under this config needs.

max_wasm_stack is an interpreter budget, but a host call that re-enters Wasm (a callback passed to map, say) nests interpreter frames on the thread’s own stack. The engine charges each crossing 4 KiB of the budget; this bounds re-entry depth, not the thread’s available native stack. Debug builds have measured about 64 KiB per crossing, so this reservation allows 128 KiB per crossing, with an 8 MiB minimum for setup and shallow calls.

Embedders must provide this stack on every thread that polls execution, including after an async task migrates between workers. The runners do not create a thread or inspect remaining stack space. Poll them near the root of the thread, rather than underneath deep native recursion. Undersized stacks can overflow and abort the process instead of returning a trap. Custom host functions must also bound their own native recursion.

Set a Tokio runtime’s thread_stack_size for worker threads. Its block_on caller runs on the calling thread, so size that thread separately (also for a current-thread runtime or pollster::block_on). Compilation separately requires crate::compiler_limits::COMPILER_STACK_BYTES; use the larger requirement when a thread performs both operations.

Source

pub fn engine(&self) -> Result<Engine>

Source

pub fn engine_async(&self) -> Result<Engine>

Same as engine. Config::async_support is a no-op in wasmtime 44+; this entry point exists so async embedders have a distinct call site to evolve independently.

Source

pub fn wasmtime_config(&self) -> Config

Source

pub fn store<T>(&self, engine: &Engine, data: T) -> Result<Store<T>>

Source

pub fn store_async<T>(&self, engine: &Engine, data: T) -> Result<Store<T>>

Source

pub fn arm_timeout(&self, engine: &Engine) -> Result<Option<Watchdog>>

Arm the configured timeout, failing setup if its thread cannot be created. Keep the returned guard alive until guest execution finishes.

Source

pub async fn run(&self, wasm_bytes: &[u8]) -> Result<RunResult>

One-shot runner: load compiled Wasm, instantiate, call main, return typed result and captured console. Async like the rest of the runtime — a caller that isn’t on a runtime bridges it itself (pollster::block_on for compute/fs-only programs, a tokio runtime when http is involved). For live console streaming, build a custom Store<StoreData> and call dispatch_main_async directly.

§Native stack

Every thread polling this future must meet Self::native_stack_size’s caller contract. This method does not provision a stack. Compilation separately requires crate::compiler_limits::COMPILER_STACK_BYTES.

Source

pub async fn run_compiled(&self, compiled: &CompiledScript) -> Result<RunResult>

Runs a compiled script with its result type information and captured console.

§Native stack

Every thread polling this future must meet Self::native_stack_size’s caller contract, just as for Self::run. Compiling the script separately requires crate::compiler_limits::COMPILER_STACK_BYTES.

Trait Implementations§

Source§

impl Clone for RuntimeConfig

Source§

fn clone(&self) -> Self

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 RuntimeConfig

Source§

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

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

impl Default for RuntimeConfig

Source§

fn default() -> Self

Returns the “default value” for a type. 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> 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: Sized + 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: Sized + 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 = !

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

fn try_from(value: U) -> Result<T, !>

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<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