wasm 0.1.0+1 copy "wasm: ^0.1.0+1" to clipboard
wasm: ^0.1.0+1 copied to clipboard

Utilities for loading and running WASM modules from Dart code

Provides utilities for loading and running WASM modules

Built on top of the Wasmer runtime.

Setup #

Start by installing the tools needed to build the Wasmer runtime:

Basic Usage #

As a simple example, we'll try to call a simple C function from Dart using package:wasm. For a more detailed example that uses WASI, check out the example directory.

  1. First create new Dart app folder: dart create wasmtest

  2. Add a dependency to package wasm in pubspec.yaml and run dart pub get

  3. Next run dart run wasm:setup to build the Wasmer runtime. This will take a few minutes.

  4. Then add a new file square.cc with the following contents:

    extern "C" int square(int n) { return n * n; }
    
  5. We can compile this C++ code to WASM using a recent version of the clang compiler:

    clang --target=wasm32 -nostdlib "-Wl,--export-all" "-Wl,--no-entry" -o square.wasm square.cc
    
  6. Replace the contents of your Dart program (bin/wasmtest.dart) with:

    import 'dart:io';
    import 'package:wasm/wasm.dart';
       
    void main() {
      final data = File('square.wasm').readAsBytesSync();
      final mod = WasmModule(data);
      print(mod.describe());
      final inst = mod.builder().build();
      final square = inst.lookupFunction('square');
      print(square(12));
    }
    
  7. Run the Dart program: dart run. This should print:

    export memory: memory
    export function: int32 square(int32)
       
    144
    
87
likes
140
points
21
downloads

Publisher

verified publisherlabs.dart.dev

Weekly Downloads

Utilities for loading and running WASM modules from Dart code

Repository (GitHub)
View/report issues

Documentation

API reference

License

BSD-3-Clause (license)

Dependencies

ffi, package_config

More

Packages that depend on wasm