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

discontinued
outdated

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
115
pub points
93%
popularity

Publisher

verified publisherlabs.dart.dev

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