Which WebAssembly interpreter should I use?

I am looking for a cross-platform WebAssembly interpreter to use in a project. Normally I would use Wasmer or Wasmtime, but I want to target mobile platforms and neither runtime supports iOS due to their "no JITs in the app store" policy[1].

Does anyone know of any WebAssembly interpreters that are written in pure Rust and can be cross-compiled to Android/iOS?

At the moment I'm using the wasm3 crate, but it isn't ideal because the crate binds to the WASM3 C library and that library is hard to cross-compile reliably.

  1. Well technically Wasmer says it supports iOS, but if you read the fine-print it actually requires you to pre-compile your WebAssembly to a DLL that gets loaded on the iOS device.

    That isn't really a solution for me because you lose all the benefits of using WebAssembly (use one binary for all platforms, easy introspection via custom sections, etc.) and if I just wanted a DLL I wouldn't bother with WebAssembly in the first place. ↩︎

Are you looking for https://crates.io/crates/wain (disclaimer: never used it)

Also, is it possible, on Android/iOS, to embed a JS/browser context and use wasm from there ?

You could try wasmi; It works on no-std so there should be no issues with cross-compilation to Android.

This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.