Wasmtime
config.h File Reference

Wasmtime-specific extensions to wasm_config_t. More...

#include <wasm.h>
#include <wasmtime/error.h>

Go to the source code of this file.

Typedefs

typedef uint8_t wasmtime_strategy_t
 Specifier for how Wasmtime will compile code, values are in wasmtime_strategy_enum.
 
typedef uint8_t wasmtime_opt_level_t
 Specifier of what optimization level to use for generated JIT code. More...
 
typedef uint8_t wasmtime_profiling_strategy_t
 Different ways wasmtime can enable profiling JIT code. More...
 

Enumerations

enum  wasmtime_strategy_enum { WASMTIME_STRATEGY_AUTO , WASMTIME_STRATEGY_CRANELIFT }
 Different ways that Wasmtime can compile WebAssembly. More...
 
enum  wasmtime_opt_level_enum { WASMTIME_OPT_LEVEL_NONE , WASMTIME_OPT_LEVEL_SPEED , WASMTIME_OPT_LEVEL_SPEED_AND_SIZE }
 Different ways Wasmtime can optimize generated code. More...
 
enum  wasmtime_profiling_strategy_enum { WASMTIME_PROFILING_STRATEGY_NONE , WASMTIME_PROFILING_STRATEGY_JITDUMP , WASMTIME_PROFILING_STRATEGY_VTUNE }
 Different ways to profile JIT code. More...
 

Functions

void wasmtime_config_debug_info_set (wasm_config_t *, bool)
 Configures whether DWARF debug information is constructed at runtime to describe JIT code. More...
 
void wasmtime_config_consume_fuel_set (wasm_config_t *, bool)
 Whether or not fuel is enabled for generated code. More...
 
void wasmtime_config_epoch_interruption_set (wasm_config_t *, bool)
 Whether or not epoch-based interruption is enabled for generated code. More...
 
void wasmtime_config_max_wasm_stack_set (wasm_config_t *, size_t)
 Configures the maximum stack size, in bytes, that JIT code can use. More...
 
void wasmtime_config_wasm_threads_set (wasm_config_t *, bool)
 Configures whether the WebAssembly threading proposal is enabled. More...
 
void wasmtime_config_wasm_reference_types_set (wasm_config_t *, bool)
 Configures whether the WebAssembly reference types proposal is enabled. More...
 
void wasmtime_config_wasm_simd_set (wasm_config_t *, bool)
 Configures whether the WebAssembly SIMD proposal is enabled. More...
 
void wasmtime_config_wasm_bulk_memory_set (wasm_config_t *, bool)
 Configures whether the WebAssembly bulk memory proposal is enabled. More...
 
void wasmtime_config_wasm_multi_value_set (wasm_config_t *, bool)
 Configures whether the WebAssembly multi value proposal is enabled. More...
 
void wasmtime_config_wasm_multi_memory_set (wasm_config_t *, bool)
 Configures whether the WebAssembly multi-memory proposal is enabled. More...
 
void wasmtime_config_wasm_memory64_set (wasm_config_t *, bool)
 Configures whether the WebAssembly memory64 proposal is enabled. More...
 
void wasmtime_config_strategy_set (wasm_config_t *, wasmtime_strategy_t)
 Configures how JIT code will be compiled. More...
 
void wasmtime_config_parallel_compilation_set (wasm_config_t *, bool)
 Configure wether wasmtime should compile a module using multiple threads. More...
 
void wasmtime_config_cranelift_debug_verifier_set (wasm_config_t *, bool)
 Configures whether Cranelift's debug verifier is enabled. More...
 
void wasmtime_config_cranelift_nan_canonicalization_set (wasm_config_t *, bool)
 Configures whether Cranelift should perform a NaN-canonicalization pass. More...
 
void wasmtime_config_cranelift_opt_level_set (wasm_config_t *, wasmtime_opt_level_t)
 Configures Cranelift's optimization level for JIT code. More...
 
void wasmtime_config_profiler_set (wasm_config_t *, wasmtime_profiling_strategy_t)
 Configures the profiling strategy used for JIT code. More...
 
void wasmtime_config_static_memory_maximum_size_set (wasm_config_t *, uint64_t)
 Configures the maximum size for memory to be considered "static". More...
 
void wasmtime_config_static_memory_guard_size_set (wasm_config_t *, uint64_t)
 Configures the guard region size for "static" memory. More...
 
void wasmtime_config_dynamic_memory_guard_size_set (wasm_config_t *, uint64_t)
 Configures the guard region size for "dynamic" memory. More...
 
wasmtime_error_twasmtime_config_cache_config_load (wasm_config_t *, const char *)
 Enables Wasmtime's cache and loads configuration from the specified path. More...
 

Detailed Description

Wasmtime-specific extensions to wasm_config_t.

Typedef Documentation

◆ wasmtime_opt_level_t

typedef uint8_t wasmtime_opt_level_t

Specifier of what optimization level to use for generated JIT code.

See wasmtime_opt_level_enum for possible values.

◆ wasmtime_profiling_strategy_t

Different ways wasmtime can enable profiling JIT code.

See wasmtime_profiling_strategy_enum for possible values.

Enumeration Type Documentation

◆ wasmtime_opt_level_enum

Different ways Wasmtime can optimize generated code.

The default value is WASMTIME_OPT_LEVEL_SPEED.

Enumerator
WASMTIME_OPT_LEVEL_NONE 

Generated code will not be optimized at all.

WASMTIME_OPT_LEVEL_SPEED 

Generated code will be optimized purely for speed.

WASMTIME_OPT_LEVEL_SPEED_AND_SIZE 

Generated code will be optimized, but some speed optimizations are disabled if they cause the generated code to be significantly larger.

◆ wasmtime_profiling_strategy_enum

Different ways to profile JIT code.

The default is WASMTIME_PROFILING_STRATEGY_NONE.

Enumerator
WASMTIME_PROFILING_STRATEGY_NONE 

No profiling is enabled at runtime.

WASMTIME_PROFILING_STRATEGY_JITDUMP 

Linux's "jitdump" support in perf is enabled and when Wasmtime is run under perf necessary calls will be made to profile generated JIT code.

WASMTIME_PROFILING_STRATEGY_VTUNE 

Support for VTune will be enabled and the VTune runtime will be informed, at runtime, about JIT code.

Note that this isn't always enabled at build time.

◆ wasmtime_strategy_enum

Different ways that Wasmtime can compile WebAssembly.

The default value is WASMTIME_STRATEGY_AUTO.

Enumerator
WASMTIME_STRATEGY_AUTO 

Automatically picks the compilation backend, currently always defaulting to Cranelift.

WASMTIME_STRATEGY_CRANELIFT 

Indicates that Wasmtime will unconditionally use Cranelift to compile WebAssembly code.

Function Documentation

◆ wasmtime_config_cache_config_load()

wasmtime_error_t * wasmtime_config_cache_config_load ( wasm_config_t ,
const char *   
)

Enables Wasmtime's cache and loads configuration from the specified path.

By default the Wasmtime compilation cache is disabled. The configuration path here can be NULL to use the default settings, and otherwise the argument here must be a file on the filesystem with TOML configuration - https://bytecodealliance.github.io/wasmtime/cli-cache.html.

An error is returned if the cache configuration could not be loaded or if the cache could not be enabled.

◆ wasmtime_config_consume_fuel_set()

void wasmtime_config_consume_fuel_set ( wasm_config_t ,
bool   
)

Whether or not fuel is enabled for generated code.

This setting is false by default. When enabled it will enable fuel counting meaning that fuel will be consumed every time a wasm instruction is executed, and trap when reaching zero.

◆ wasmtime_config_cranelift_debug_verifier_set()

void wasmtime_config_cranelift_debug_verifier_set ( wasm_config_t ,
bool   
)

Configures whether Cranelift's debug verifier is enabled.

This setting in false by default.

When cranelift is used for compilation this enables expensive debug checks within Cranelift itself to verify it's correct.

◆ wasmtime_config_cranelift_nan_canonicalization_set()

void wasmtime_config_cranelift_nan_canonicalization_set ( wasm_config_t ,
bool   
)

Configures whether Cranelift should perform a NaN-canonicalization pass.

When Cranelift is used as a code generation backend this will configure it to replace NaNs with a single canonical value. This is useful for users requiring entirely deterministic WebAssembly computation.

This is not required by the WebAssembly spec, so it is not enabled by default.

The default value for this is false

◆ wasmtime_config_cranelift_opt_level_set()

void wasmtime_config_cranelift_opt_level_set ( wasm_config_t ,
wasmtime_opt_level_t   
)

Configures Cranelift's optimization level for JIT code.

This setting in WASMTIME_OPT_LEVEL_SPEED by default.

◆ wasmtime_config_debug_info_set()

void wasmtime_config_debug_info_set ( wasm_config_t ,
bool   
)

Configures whether DWARF debug information is constructed at runtime to describe JIT code.

This setting is false by default. When enabled it will attempt to inform native debuggers about DWARF debugging information for JIT code to more easily debug compiled WebAssembly via native debuggers. This can also sometimes improve the quality of output when profiling is enabled.

◆ wasmtime_config_dynamic_memory_guard_size_set()

void wasmtime_config_dynamic_memory_guard_size_set ( wasm_config_t ,
uint64_t   
)

Configures the guard region size for "dynamic" memory.

For more information see the Rust documentation at https://bytecodealliance.github.io/wasmtime/api/wasmtime/struct.Config.html#method.dynamic_memory_guard_size.

◆ wasmtime_config_epoch_interruption_set()

void wasmtime_config_epoch_interruption_set ( wasm_config_t ,
bool   
)

Whether or not epoch-based interruption is enabled for generated code.

This setting is false by default. When enabled wasm code will check the current epoch periodically and abort if the current epoch is beyond a store-configured limit.

Note that when this setting is enabled all stores will immediately trap and need to have their epoch deadline otherwise configured with wasmtime_context_set_epoch_deadline.

Note that the current epoch is engine-local and can be incremented with wasmtime_engine_increment_epoch.

◆ wasmtime_config_max_wasm_stack_set()

void wasmtime_config_max_wasm_stack_set ( wasm_config_t ,
size_t   
)

Configures the maximum stack size, in bytes, that JIT code can use.

This setting is 2MB by default. Configuring this setting will limit the amount of native stack space that JIT code can use while it is executing. If you're hitting stack overflow you can try making this setting larger, or if you'd like to limit wasm programs to less stack you can also configure this.

Note that this setting is not interpreted with 100% precision. Additionally the amount of stack space that wasm takes is always relative to the first invocation of wasm on the stack, so recursive calls with host frames in the middle will all need to fit within this setting.

◆ wasmtime_config_parallel_compilation_set()

void wasmtime_config_parallel_compilation_set ( wasm_config_t ,
bool   
)

Configure wether wasmtime should compile a module using multiple threads.

For more information see the Rust documentation at https://docs.wasmtime.dev/api/wasmtime/struct.Config.html#method.parallel_compilation.

◆ wasmtime_config_profiler_set()

void wasmtime_config_profiler_set ( wasm_config_t ,
wasmtime_profiling_strategy_t   
)

Configures the profiling strategy used for JIT code.

This setting in WASMTIME_PROFILING_STRATEGY_NONE by default.

◆ wasmtime_config_static_memory_guard_size_set()

void wasmtime_config_static_memory_guard_size_set ( wasm_config_t ,
uint64_t   
)

Configures the guard region size for "static" memory.

For more information see the Rust documentation at https://bytecodealliance.github.io/wasmtime/api/wasmtime/struct.Config.html#method.static_memory_guard_size.

◆ wasmtime_config_static_memory_maximum_size_set()

void wasmtime_config_static_memory_maximum_size_set ( wasm_config_t ,
uint64_t   
)

Configures the maximum size for memory to be considered "static".

For more information see the Rust documentation at https://bytecodealliance.github.io/wasmtime/api/wasmtime/struct.Config.html#method.static_memory_maximum_size.

◆ wasmtime_config_strategy_set()

void wasmtime_config_strategy_set ( wasm_config_t ,
wasmtime_strategy_t   
)

Configures how JIT code will be compiled.

This setting is WASMTIME_STRATEGY_AUTO by default.

◆ wasmtime_config_wasm_bulk_memory_set()

void wasmtime_config_wasm_bulk_memory_set ( wasm_config_t ,
bool   
)

Configures whether the WebAssembly bulk memory proposal is enabled.

This setting is false by default.

◆ wasmtime_config_wasm_memory64_set()

void wasmtime_config_wasm_memory64_set ( wasm_config_t ,
bool   
)

Configures whether the WebAssembly memory64 proposal is enabled.

This setting is false by default.

◆ wasmtime_config_wasm_multi_memory_set()

void wasmtime_config_wasm_multi_memory_set ( wasm_config_t ,
bool   
)

Configures whether the WebAssembly multi-memory proposal is enabled.

This setting is false by default.

◆ wasmtime_config_wasm_multi_value_set()

void wasmtime_config_wasm_multi_value_set ( wasm_config_t ,
bool   
)

Configures whether the WebAssembly multi value proposal is enabled.

This setting is true by default.

◆ wasmtime_config_wasm_reference_types_set()

void wasmtime_config_wasm_reference_types_set ( wasm_config_t ,
bool   
)

Configures whether the WebAssembly reference types proposal is enabled.

This setting is false by default.

◆ wasmtime_config_wasm_simd_set()

void wasmtime_config_wasm_simd_set ( wasm_config_t ,
bool   
)

Configures whether the WebAssembly SIMD proposal is enabled.

This setting is false by default.

◆ wasmtime_config_wasm_threads_set()

void wasmtime_config_wasm_threads_set ( wasm_config_t ,
bool   
)

Configures whether the WebAssembly threading proposal is enabled.

This setting is false by default.

Note that threads are largely unimplemented in Wasmtime at this time.