bytecodealliance / bytecodealliance/wizer
Allow reference types as long as not used by the initialization function?
- Dominant language
- Rust
- Stars
- 1.1k
- Forks
- 64
- PR merge metrics
- No merged PRs in 30d
Description
I have a WASM module that uses reference types, but the initialization function (some pure precomputation) doesn't use them. Currently, wizer categorically fails with
```
Error: reference types support is not enabled (at offset 0x31ef)
```
However, when I apply this patch
```diff
diff --git a/src/lib.rs b/src/lib.rs
index f2ceb94..7f5adc9 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -623,7 +623,7 @@ impl Wizer {
config.wasm_simd(self.wasm_simd.unwrap_or(DEFAULT_WASM_SIMD));
// Proposals that we should add support for.
- config.wasm_reference_types(false);
+ config.wasm_reference_types(true);
config.wasm_threads(false);
Ok(config)
@@ -642,7 +642,7 @@ impl Wizer {
multi_value: self.wasm_multi_value.unwrap_or(DEFAULT_WASM_MULTI_VALUE),
// Proposals that we should add support for.
- reference_types: false,
+ reference_types: true,
simd: self.wasm_simd.unwrap_or(DEFAULT_WASM_SIMD),
threads: false,
tail_call: false,
```
everything works fine, both initialization and later usage of the WASM module (including reference types).
Would it make sense to allow reference types a priori, and instead error when instructions related to reference types are encountered during initialization? I could take a stab at a PR if this makes sense.
Contributor guide
Assessment
This issue has not been assessed yet.