Wasmtime
config.h
Go to the documentation of this file.
1
7#ifndef WASMTIME_CONFIG_H
8#define WASMTIME_CONFIG_H
9
10#include <wasm.h>
11#include <wasmtime/conf.h>
12#include <wasmtime/error.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
22typedef uint8_t wasmtime_strategy_t;
23
29enum wasmtime_strategy_enum { // Strategy
33
37
40 //
44};
45
51typedef uint8_t wasmtime_opt_level_t;
52
58enum wasmtime_opt_level_enum { // OptLevel
66};
67
74
80enum wasmtime_profiling_strategy_enum { // ProfilingStrategy
95};
96
103
109enum wasmtime_regalloc_algorithm_enum { // RegallocAlgorithm
128};
129
130#define WASMTIME_CONFIG_PROP(ret, name, ty) \
131 WASM_API_EXTERN ret wasmtime_config_##name##_set(wasm_config_t *, ty);
132
142WASMTIME_CONFIG_PROP(void, debug_info, bool)
143
144
151WASMTIME_CONFIG_PROP(void, consume_fuel, bool)
152
167WASMTIME_CONFIG_PROP(void, epoch_interruption, bool)
168
182WASMTIME_CONFIG_PROP(void, max_wasm_stack, size_t)
183
184#ifdef WASMTIME_FEATURE_THREADS
185
191WASMTIME_CONFIG_PROP(void, wasm_threads, bool)
192
193#endif // WASMTIME_FEATURE_THREADS
194
200WASMTIME_CONFIG_PROP(void, shared_memory, bool)
201
202
207WASMTIME_CONFIG_PROP(void, wasm_tail_call, bool)
208
209#ifdef WASMTIME_FEATURE_GC
210
217WASMTIME_CONFIG_PROP(void, wasm_reference_types, bool)
218
219
225WASMTIME_CONFIG_PROP(void, wasm_function_references, bool)
226
232WASMTIME_CONFIG_PROP(void, wasm_gc, bool)
233
234#endif // WASMTIME_FEATURE_GC
235
242WASMTIME_CONFIG_PROP(void, gc_support, bool)
243
244
250WASMTIME_CONFIG_PROP(void, wasm_simd, bool)
251
258WASMTIME_CONFIG_PROP(void, wasm_relaxed_simd, bool)
259
266WASMTIME_CONFIG_PROP(void, wasm_relaxed_simd_deterministic, bool)
267
274WASMTIME_CONFIG_PROP(void, wasm_bulk_memory, bool)
275
282WASMTIME_CONFIG_PROP(void, wasm_multi_value, bool)
283
290WASMTIME_CONFIG_PROP(void, wasm_multi_memory, bool)
291
298WASMTIME_CONFIG_PROP(void, wasm_memory64, bool)
299
306WASMTIME_CONFIG_PROP(void, wasm_wide_arithmetic, bool)
307
314WASMTIME_CONFIG_PROP(void, wasm_branch_hinting, bool)
315
316#ifdef WASMTIME_FEATURE_GC
317
323WASMTIME_CONFIG_PROP(void, wasm_exceptions, bool)
324
325#endif // WASMTIME_FEATURE_GC
326
333WASMTIME_CONFIG_PROP(void, wasm_custom_page_sizes, bool)
334
335
341WASMTIME_CONFIG_PROP(void, wasm_compact_imports, bool)
342
343#ifdef WASMTIME_FEATURE_COMPILER
344
351WASMTIME_CONFIG_PROP(void, wasm_stack_switching, bool)
352
353
358WASMTIME_CONFIG_PROP(void, strategy, wasmtime_strategy_t)
359
360#endif // WASMTIME_FEATURE_COMPILER
361
362#ifdef WASMTIME_FEATURE_PARALLEL_COMPILATION
363
371WASMTIME_CONFIG_PROP(void, parallel_compilation, bool)
372
373#endif // WASMTIME_FEATURE_PARALLEL_COMPILATION
374
375#ifdef WASMTIME_FEATURE_COMPILER
376
385WASMTIME_CONFIG_PROP(void, cranelift_debug_verifier, bool)
386
387
400WASMTIME_CONFIG_PROP(void, cranelift_nan_canonicalization, bool)
401
407WASMTIME_CONFIG_PROP(void, cranelift_opt_level, wasmtime_opt_level_t)
408
415WASMTIME_CONFIG_PROP(void, cranelift_regalloc_algorithm,
417
418#endif // WASMTIME_FEATURE_COMPILER
419
425WASMTIME_CONFIG_PROP(void, profiler, wasmtime_profiling_strategy_t)
426
427
436WASMTIME_CONFIG_PROP(void, memory_may_move, bool)
437
445WASMTIME_CONFIG_PROP(void, memory_reservation, uint64_t)
446
453WASMTIME_CONFIG_PROP(void, memory_guard_size, uint64_t)
454
462WASMTIME_CONFIG_PROP(void, memory_reservation_for_growth, uint64_t)
463
473WASMTIME_CONFIG_PROP(void, native_unwind_info, bool)
474
475#ifdef WASMTIME_FEATURE_CACHE
476
489WASM_API_EXTERN wasmtime_error_t *
491
492#endif // WASMTIME_FEATURE_CACHE
493
506WASMTIME_CONFIG_PROP(wasmtime_error_t *, target, const char *)
507
508#ifdef WASMTIME_FEATURE_COMPILER
509
520 const char *);
521
532 const char *key,
533 const char *value);
534
535#endif // WASMTIME_FEATURE_COMPILER
536
546WASMTIME_CONFIG_PROP(void, macos_use_mach_ports, bool)
547
548
559WASMTIME_CONFIG_PROP(void, signals_based_traps, bool)
560
570typedef uint8_t *(*wasmtime_memory_get_callback_t)(void *env, size_t *byte_size,
571 size_t *byte_capacity);
572
580 size_t new_size);
581
590 void *env;
596 void (*finalizer)(void *);
598
610typedef wasmtime_error_t *(*wasmtime_new_memory_callback_t)(
611 void *env, const wasm_memorytype_t *ty, size_t minimum, size_t maximum,
612 size_t reserved_size_in_bytes, size_t guard_size_in_bytes,
613 wasmtime_linear_memory_t *memory_ret);
614
624 void *env;
628 void (*finalizer)(void *);
630
644WASM_API_EXTERN void
647
665WASMTIME_CONFIG_PROP(void, memory_init_cow, bool)
666
667#ifdef WASMTIME_FEATURE_POOLING_ALLOCATOR
668
677
684
691
692#define WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(name, ty) \
693 WASM_API_EXTERN void wasmtime_pooling_allocation_config_##name##_set( \
694 wasmtime_pooling_allocation_config_t *, ty);
695
703WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_unused_warm_slots, uint32_t)
704
705
711WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(decommit_batch_size, size_t)
712
713#ifdef WASMTIME_FEATURE_ASYNC
721WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(async_stack_keep_resident, size_t)
722#endif
723
731WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(linear_memory_keep_resident, size_t)
732
733
740WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(table_keep_resident, size_t)
741
749WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(total_component_instances, uint32_t)
750
758WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_component_instance_size, size_t)
759
767WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_core_instances_per_component,
768 uint32_t)
769
777WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_memories_per_component, uint32_t)
778
786WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_tables_per_component, uint32_t)
787
795WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(total_memories, uint32_t)
796
803WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(total_tables, uint32_t)
804
805#ifdef WASMTIME_FEATURE_ASYNC
813WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(total_stacks, uint32_t)
814#endif
815
823WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(total_core_instances, uint32_t)
824
825
832WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_core_instance_size, size_t)
833
840WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_tables_per_module, uint32_t)
841
849WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(table_elements, size_t)
850
858WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_memories_per_module, uint32_t)
859
866WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(max_memory_size, size_t)
867
874WASMTIME_POOLING_ALLOCATION_CONFIG_PROP(total_gc_heaps, uint32_t)
875
886
887#endif // WASMTIME_FEATURE_POOLING_ALLOCATOR
888
889#ifdef WASMTIME_FEATURE_COMPONENT_MODEL
890
898WASMTIME_CONFIG_PROP(void, wasm_component_model, bool)
899
900
907WASMTIME_CONFIG_PROP(void, concurrency_support, bool)
908
916WASMTIME_CONFIG_PROP(void, wasm_component_model_map, bool)
917
926WASMTIME_CONFIG_PROP(void, wasm_component_model_implements, bool)
927
935WASMTIME_CONFIG_PROP(void, wasm_component_model_canonical_names, bool)
936
944WASMTIME_CONFIG_PROP(void, wasm_component_model_accessors, bool)
945
946#endif // WASMTIME_FEATURE_COMPONENT_MODEL
947
948#ifdef WASMTIME_FEATURE_COMPONENT_MODEL_ASYNC
949
957WASMTIME_CONFIG_PROP(void, wasm_component_model_async, bool)
958
959
966WASMTIME_CONFIG_PROP(void, wasm_component_model_more_async_builtins, bool)
967
975WASMTIME_CONFIG_PROP(void, wasm_component_model_async_stackful, bool)
976
977#endif // WASMTIME_FEATURE_COMPONENT_MODEL_ASYNC
978
979#ifdef __cplusplus
980} // extern "C"
981#endif
982
983#endif // WASMTIME_CONFIG_H
Build-time defines for how the C API was built.
struct wasmtime_memory_creator wasmtime_memory_creator_t
WASM_API_EXTERN wasmtime_error_t * wasmtime_config_cache_config_load(wasm_config_t *, const char *)
Enables Wasmtime's cache and loads configuration from the specified path.
struct wasmtime_linear_memory wasmtime_linear_memory_t
WASM_API_EXTERN void wasmtime_pooling_allocation_strategy_set(wasm_config_t *, const wasmtime_pooling_allocation_config_t *)
Sets the Wasmtime allocation strategy to use the pooling allocator. It does not take ownership of the...
uint8_t wasmtime_strategy_t
Specifier for how Wasmtime will compile code, values are in wasmtime_strategy_enum.
Definition: config.h:22
WASM_API_EXTERN wasmtime_pooling_allocation_config_t * wasmtime_pooling_allocation_config_new()
Creates a new pooling allocation configuration object. Must be deallocated with a call to wasmtime_po...
WASM_API_EXTERN void wasmtime_pooling_allocation_config_delete(wasmtime_pooling_allocation_config_t *)
Deallocates a pooling allocation configuration object created with a call to wasmtime_pooling_allocat...
WASM_API_EXTERN void wasmtime_config_cranelift_flag_enable(wasm_config_t *, const char *)
Enables a target-specific flag in Cranelift.
uint8_t wasmtime_profiling_strategy_t
Different ways wasmtime can enable profiling JIT code.
Definition: config.h:73
WASM_API_EXTERN void wasmtime_config_cranelift_flag_set(wasm_config_t *, const char *key, const char *value)
Sets a target-specific flag in Cranelift to the specified value.
wasmtime_regalloc_algorithm_enum
Different ways to allocate registers.
Definition: config.h:109
@ WASMTIME_REGALLOC_BACKTRACKING
Definition: config.h:116
@ WASMTIME_REGALLOC_SINGLE_PASS
Definition: config.h:127
wasmtime_profiling_strategy_enum
Different ways to profile JIT code.
Definition: config.h:80
@ WASMTIME_PROFILING_STRATEGY_VTUNE
Definition: config.h:90
@ WASMTIME_PROFILING_STRATEGY_PERFMAP
Definition: config.h:94
@ WASMTIME_PROFILING_STRATEGY_NONE
No profiling is enabled at runtime.
Definition: config.h:82
@ WASMTIME_PROFILING_STRATEGY_JITDUMP
Definition: config.h:85
wasmtime_strategy_enum
Different ways that Wasmtime can compile WebAssembly.
Definition: config.h:29
@ WASMTIME_STRATEGY_CRANELIFT
Definition: config.h:36
@ WASMTIME_STRATEGY_WINCH
Definition: config.h:43
@ WASMTIME_STRATEGY_AUTO
Definition: config.h:32
uint8_t *(* wasmtime_memory_get_callback_t)(void *env, size_t *byte_size, size_t *byte_capacity)
Definition: config.h:570
wasmtime_opt_level_enum
Different ways Wasmtime can optimize generated code.
Definition: config.h:58
@ WASMTIME_OPT_LEVEL_SPEED_AND_SIZE
Definition: config.h:65
@ WASMTIME_OPT_LEVEL_NONE
Generated code will not be optimized at all.
Definition: config.h:60
@ WASMTIME_OPT_LEVEL_SPEED
Generated code will be optimized purely for speed.
Definition: config.h:62
uint8_t wasmtime_opt_level_t
Specifier of what optimization level to use for generated JIT code.
Definition: config.h:51
uint8_t wasmtime_regalloc_algorithm_t
Different ways Cranelift can allocate registers.
Definition: config.h:102
wasmtime_error_t *(* wasmtime_new_memory_callback_t)(void *env, const wasm_memorytype_t *ty, size_t minimum, size_t maximum, size_t reserved_size_in_bytes, size_t guard_size_in_bytes, wasmtime_linear_memory_t *memory_ret)
Definition: config.h:610
WASM_API_EXTERN void wasmtime_config_host_memory_creator_set(wasm_config_t *, wasmtime_memory_creator_t *)
wasmtime_error_t *(* wasmtime_memory_grow_callback_t)(void *env, size_t new_size)
Definition: config.h:579
struct wasmtime_pooling_allocation_config_t wasmtime_pooling_allocation_config_t
A type containing configuration options for the pooling allocator.
Definition: config.h:675
Definition and accessors of wasmtime_error_t.
Global engine configuration.
An opaque object representing the type of a memory.
Errors generated by Wasmtime.
Definition: config.h:588
wasmtime_memory_get_callback_t get_memory
Callback to get the memory and size of this LinearMemory.
Definition: config.h:592
void * env
User provided value to be passed to get_memory and grow_memory.
Definition: config.h:590
wasmtime_memory_grow_callback_t grow_memory
Callback to request growing the memory.
Definition: config.h:594
Definition: config.h:622
void(* finalizer)(void *)
An optional finalizer for env.
Definition: config.h:628
wasmtime_new_memory_callback_t new_memory
The callback to create new memory, must be thread safe.
Definition: config.h:626
void * env
User provided value to be passed to new_memory.
Definition: config.h:624