wasmerio/wasmer · error · anyhow::Error

No backends support the required features for the Wasm modul

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.

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)

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.