Skip to content

shareup/wasm-interpreter-apple

Repository files navigation

WasmInterpreter

WasmInterpreter is a small Swift wrapper around CWasm3, which packages wasm3 inside of a Swift package while adding a few minor conveniences on top. The overriding goal of WasmInterpreter is to provide a clean, Swift-y interface to wasm3.

The core class inside of WasmInterpreter is, naturally, WasmInterpreter. This class is initialized with a stack size (default: 512 KB) and a Wasm module. WasmInterpreter takes care of initializing the WebAssembly environment, runtime, and module, and exposes a clean interface for calling Wasm functions, importing native functions into Wasm modules, and extracting data from the runtime's heap. You can find examples for all of these things by looking at the tests.

Installation

To use WasmInterpreter with the Swift Package Manager, add a dependency to your Package.swift file:

dependencies: [
  .package(name: "WasmInterpreter", url: "https://github.com/shareup/wasm-interpreter-apple.git", from: "0.5.3"),
],

Troubleshooting

Can't build tests with 'ld: Could not open or create -dependency_info file' error

The Address Sanitizer can't be run when linking against SynchronizedDynamic—the dynamic library version of Synchronized. So, either change WasmInterpreter to use Synchronized or disable the Address Sanitizer.

License

The license for WasmInterpreter is the standard MIT license. You can find it in the LICENSE file.