Wasmex.EngineConfig (wasmex v0.9.2)

Configures a Wasmex.Engine.

Options

  • :consume_fuel - Whether or not to consume fuel when executing Wasm instructions. This defaults to false.
  • :cranelift_opt_level - Optimization level for the Cranelift code generator. This defaults to :none.
  • :wasm_backtrace_details - Whether or not backtraces in traps will parse debug info in the Wasm file to have filename/line number information. This defaults to false.

Example

iex> _config = %Wasmex.EngineConfig{}
...>           |> Wasmex.EngineConfig.consume_fuel(true)
...>           |> Wasmex.EngineConfig.cranelift_opt_level(:speed)
...>           |> Wasmex.EngineConfig.wasm_backtrace_details(false)

Summary

Functions

Configures whether execution of WebAssembly will "consume fuel" to either halt or yield execution as desired.

Configures the Cranelift code generator optimization level.

Configures whether the WebAssembly memory type is 64-bit.

Configures whether backtraces in traps will parse debug info in the Wasm file to have filename/line number information.

Types

@type t() :: %Wasmex.EngineConfig{
  consume_fuel: boolean(),
  cranelift_opt_level: :none | :speed | :speed_and_size,
  memory64: boolean(),
  wasm_backtrace_details: boolean()
}

Functions

Link to this function

consume_fuel(config, consume_fuel)

@spec consume_fuel(t(), boolean()) :: t()

Configures whether execution of WebAssembly will "consume fuel" to either halt or yield execution as desired.

This can be used to deterministically prevent infinitely-executing WebAssembly code by instrumenting generated code to consume fuel as it executes. When fuel runs out a trap is raised.

Note that a Wasmex.Store starts with no fuel, so if you enable this option you'll have to be sure to pour some fuel into Wasmex.Store before executing some code. See Wasmex.StoreOrCaller.set_fuel/2.

Example

iex> config = %Wasmex.EngineConfig{}
...>          |> Wasmex.EngineConfig.consume_fuel(true)
iex> config.consume_fuel
true
Link to this function

cranelift_opt_level(config, cranelift_opt_level)

@spec cranelift_opt_level(t(), :none | :speed | :speed_and_size) :: t()

Configures the Cranelift code generator optimization level.

Allows one of the following values:

  • :none - No optimizations performed, minimizes compilation time by disabling most optimizations.
  • :speed - Generates the fastest possible code, but may take longer.
  • :speed_and_size - Similar to speed, but also performs transformations aimed at reducing code size.
Link to this function

memory64(config, memory64)

@spec memory64(t(), boolean()) :: t()

Configures whether the WebAssembly memory type is 64-bit.

Example

iex> config = %Wasmex.EngineConfig{}
...>          |> Wasmex.EngineConfig.memory64(true)
iex> config.memory64
true
Link to this function

wasm_backtrace_details(config, wasm_backtrace_details)

@spec wasm_backtrace_details(t(), boolean()) :: t()

Configures whether backtraces in traps will parse debug info in the Wasm file to have filename/line number information.

When enabled this will causes modules to retain debugging information found in Wasm binaries. This debug information will be used when a trap happens to symbolicate each stack frame and attempt to print a filename/line number for each Wasm frame in the stack trace.

Example

iex> config = %Wasmex.EngineConfig{}
...>          |> Wasmex.EngineConfig.wasm_backtrace_details(true)
iex> config.wasm_backtrace_details
true