wasmerio/wasmer · error · anyhow::Error

No backends support the required features for the Wasm…

Error message

No backends support the required features for the Wasm module. Feel free to open an issue at https://github.com/wasmerio/wasmer/issues

What it means

When filtering the available backends by the module's required features leaves an empty list, no compiler in this binary can run the module, so get_engine_for_features bails with this message. It points users to file an issue because it usually means a feature/backend support gap in Wasmer itself.

Solutions

  1. Install/use a Wasmer build with all backends (singlepass, cranelift, llvm features enabled)
  2. Downgrade the module's required features (recompile the wasm with fewer/older features)
  3. File an issue at https://github.com/wasmerio/wasmer/issues if a shipped backend should support the features

Example fix

// before
cargo install wasmer --no-default-features --features singlepass
// after
cargo install wasmer --features singlepass,cranelift,llvm
Defensive patterns

Strategy: validation

Validate before calling

let required = module.features();
if BackendType::all().filter(|b| b.supports_features(&required)).count() == 0 {
    return Err("no installed backend supports this module's features; rebuild wasmer with all compilers");
}

Try / catch

match result {
    Err(e) if e.to_string().contains("No backends support the required features") => {
        eprintln!("rebuild wasmer with singlepass+cranelift+llvm");
        Err(e)
    }
    other => other?,
}

Prevention

When it happens

Trigger: get_engine_for_module encounters a module whose required feature set (from its compile-time features) intersects with no installed backend, on a build where filter_backends_by_features returns [].

Common situations: Minimal/feature-restricted Wasmer builds (e.g. singlepass-only) running modules that need unsupported proposals; very new Wasm proposals before backend support; stripped custom binaries.

Related errors


AI-assisted analysis of wasmerio/wasmer@8c4b9ee9d3 (2026-09-01). Data as JSON: /api/errors/347d09cc61b5bfbd. Report an issue: GitHub.

Appendix: source

Thrown at lib/cli/src/backend.rs:328

        if filtered_backends.is_empty() {
            let enabled_backends = BackendType::enabled();
            if backends.len() == 1 && enabled_backends.len() > 1 {
                // If the user has chosen an specific backend, we can suggest to use another one
                let filtered_backends =
                    Self::filter_backends_by_features(enabled_backends, required_features, target);
                let extra_text: String = if !filtered_backends.is_empty() {
                    format!(". You can use --{} instead", filtered_backends[0])
                } else {
                    "".to_string()
                };
                bail!(
                    "The {} backend does not support the required features for the Wasm module{}",
                    backends[0],
                    extra_text
                );
            } else {
                bail!(
                    "No backends support the required features for the Wasm module. Feel free to open an issue at https://github.com/wasmerio/wasmer/issues"
                );
            }
        }
        filtered_backends.first().unwrap().get_engine(target, self)
    }

    #[cfg(feature = "compiler")]
    /// Get the enabled Wasm features.
    pub fn get_features(&self, default_features: &Features) -> Result<Features> {
        if self.features.all {
            return Ok(Features::all());
        }

        let mut result = default_features.clone();
        if !self.features.disable_threads {
            result.threads(true);
        }

View on GitHub (pinned to 8c4b9ee9d3)