Struct wasmer_types::Features
source · pub struct Features {
pub threads: bool,
pub reference_types: bool,
pub simd: bool,
pub bulk_memory: bool,
pub multi_value: bool,
pub tail_call: bool,
pub module_linking: bool,
pub multi_memory: bool,
pub memory64: bool,
pub exceptions: bool,
pub relaxed_simd: bool,
pub extended_const: bool,
}
Expand description
Controls which experimental features will be enabled. Features usually have a corresponding WebAssembly proposal.
Fields§
§threads: bool
Threads proposal should be enabled
reference_types: bool
Reference Types proposal should be enabled
simd: bool
SIMD proposal should be enabled
bulk_memory: bool
Bulk Memory proposal should be enabled
multi_value: bool
Multi Value proposal should be enabled
tail_call: bool
Tail call proposal should be enabled
module_linking: bool
Module Linking proposal should be enabled
multi_memory: bool
Multi Memory proposal should be enabled
memory64: bool
64-bit Memory proposal should be enabled
exceptions: bool
Wasm exceptions proposal should be enabled
relaxed_simd: bool
Relaxed SIMD proposal should be enabled
extended_const: bool
Extended constant expressions proposal should be enabled
Implementations§
source§impl Features
impl Features
sourcepub fn threads(&mut self, enable: bool) -> &mut Self
pub fn threads(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly threads proposal will be enabled.
The WebAssembly threads proposal is not currently fully standardized and is undergoing development. Support for this feature can be enabled through this method for appropriate WebAssembly modules.
This feature gates items such as shared memories and atomic instructions.
This is false
by default.
sourcepub fn reference_types(&mut self, enable: bool) -> &mut Self
pub fn reference_types(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly reference types proposal will be enabled.
The WebAssembly reference types proposal is now fully standardized and enabled by default.
This feature gates items such as the externref
type and multiple tables
being in a module. Note that enabling the reference types feature will
also enable the bulk memory feature.
This is true
by default.
sourcepub fn simd(&mut self, enable: bool) -> &mut Self
pub fn simd(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly SIMD proposal will be enabled.
The WebAssembly SIMD proposal is not currently fully standardized and is undergoing development. Support for this feature can be enabled through this method for appropriate WebAssembly modules.
This feature gates items such as the v128
type and all of its
operators being in a module.
This is false
by default.
sourcepub fn bulk_memory(&mut self, enable: bool) -> &mut Self
pub fn bulk_memory(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly bulk memory operations proposal will be enabled.
The WebAssembly bulk memory operations proposal is now fully standardized and enabled by default.
This feature gates items such as the memory.copy
instruction, passive
data/table segments, etc, being in a module.
This is true
by default.
sourcepub fn multi_value(&mut self, enable: bool) -> &mut Self
pub fn multi_value(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly multi-value proposal will be enabled.
The WebAssembly multi-value proposal is now fully standardized and enabled by default, except with the singlepass compiler which does not support it.
This feature gates functions and blocks returning multiple values in a module, for example.
This is true
by default.
sourcepub fn tail_call(&mut self, enable: bool) -> &mut Self
pub fn tail_call(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly tail-call proposal will be enabled.
The WebAssembly tail-call proposal is not currently fully standardized and is undergoing development. Support for this feature can be enabled through this method for appropriate WebAssembly modules.
This feature gates tail-call functions in WebAssembly.
This is false
by default.
sourcepub fn module_linking(&mut self, enable: bool) -> &mut Self
pub fn module_linking(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly module linking proposal will be enabled.
The WebAssembly module linking proposal is not currently fully standardized and is undergoing development. Support for this feature can be enabled through this method for appropriate WebAssembly modules.
This feature allows WebAssembly modules to define, import and export modules and instances.
This is false
by default.
sourcepub fn multi_memory(&mut self, enable: bool) -> &mut Self
pub fn multi_memory(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly multi-memory proposal will be enabled.
The WebAssembly multi-memory proposal is not currently fully standardized and is undergoing development. Support for this feature can be enabled through this method for appropriate WebAssembly modules.
This feature adds the ability to use multiple memories within a single Wasm module.
This is false
by default.
sourcepub fn memory64(&mut self, enable: bool) -> &mut Self
pub fn memory64(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly 64-bit memory proposal will be enabled.
The WebAssembly 64-bit memory proposal is not currently fully standardized and is undergoing development. Support for this feature can be enabled through this method for appropriate WebAssembly modules.
This feature gates support for linear memory of sizes larger than 2^32 bits.
This is false
by default.
sourcepub fn exceptions(&mut self, enable: bool) -> &mut Self
pub fn exceptions(&mut self, enable: bool) -> &mut Self
Configures whether the WebAssembly exception-handling proposal will be enabled.
The WebAssembly exception-handling proposal is not currently fully standardized and is undergoing development. Support for this feature can be enabled through this method for appropriate WebAssembly modules.
This is false
by default.
sourcepub fn contains_features(&self, required: &Self) -> bool
pub fn contains_features(&self, required: &Self) -> bool
Checks if this features set contains all the features required by another set
sourcepub fn detect_from_wasm(wasm_bytes: &[u8]) -> Result<Self, BinaryReaderError>
pub fn detect_from_wasm(wasm_bytes: &[u8]) -> Result<Self, BinaryReaderError>
Detects required WebAssembly features from a module binary.
This method analyzes a WebAssembly module’s binary to determine which features it requires. It does this by:
- Attempting to validate the module with different feature sets
- Analyzing validation errors to detect required features
- Parsing the module to detect certain common patterns
§Arguments
wasm_bytes
- The binary content of the WebAssembly module
§Returns
A new Features
instance with the detected features enabled.
Trait Implementations§
source§impl Archive for Featureswhere
bool: Archive,
impl Archive for Featureswhere
bool: Archive,
§type Archived = ArchivedFeatures
type Archived = ArchivedFeatures
§type Resolver = FeaturesResolver
type Resolver = FeaturesResolver
source§const COPY_OPTIMIZATION: CopyOptimization<Self> = _
const COPY_OPTIMIZATION: CopyOptimization<Self> = _
serialize
. Read moresource§impl<'de> Deserialize<'de> for Features
impl<'de> Deserialize<'de> for Features
source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
source§impl PartialEq<ArchivedFeatures> for Features
impl PartialEq<ArchivedFeatures> for Features
source§fn eq(&self, other: &ArchivedFeatures) -> bool
fn eq(&self, other: &ArchivedFeatures) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialEq<Features> for ArchivedFeatures
impl PartialEq<Features> for ArchivedFeatures
source§impl PartialEq for Features
impl PartialEq for Features
impl Eq for Features
impl StructuralPartialEq for Features
Auto Trait Implementations§
impl Freeze for Features
impl RefUnwindSafe for Features
impl Send for Features
impl Sync for Features
impl Unpin for Features
impl UnwindSafe for Features
Blanket Implementations§
§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
§type ArchivedMetadata = ()
type ArchivedMetadata = ()
§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
§impl<T> ArchiveUnsized for Twhere
T: Archive,
impl<T> ArchiveUnsized for Twhere
T: Archive,
§type Archived = <T as Archive>::Archived
type Archived = <T as Archive>::Archived
Archive
, it may be
unsized. Read more§fn archived_metadata(
&self,
) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
fn archived_metadata( &self, ) -> <<T as ArchiveUnsized>::Archived as ArchivePointee>::ArchivedMetadata
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
source§default unsafe fn clone_to_uninit(&self, dst: *mut T)
default unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key
and return true
if they are equal.