Wasmex.EngineConfig (wasmex v0.8.3)

Configures a Wasmex.Engine.

options

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

Example

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

Link to this section 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 backtraces in traps will parse debug info in the Wasm file to have filename/line number information.

Link to this section Types

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

Link to this section 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.add_fuel/2.

example

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

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

Example

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