You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
wasm3/docs/Cookbook.md

1.2 KiB

Wasm3 cookbook

Rust WASI app

TODO

AssemblyScript WASI app

TODO

TinyGo WASI app

TODO

Zig WASI app

Create hello.zig:

const std = @import("std");

pub fn main() !void {
    const stdout = std.io.getStdOut().writer();
    try stdout.print("Hello, {s}!\n", .{"world"});
}
$ zig build-exe -O ReleaseSmall -target wasm32-wasi hello.zig

$ wasm3 hello.wasm
Hello, world!

Zig library

Create add.zig:

export fn add(a: i32, b: i32) i64 {
    return a + b;
}
$ zig build-lib add.zig -O ReleaseSmall -target wasm32-freestanding

$ wasm3 --repl add.wasm
wasm3> add 1 2
Result: 3

C WASI app

The easiest way to start is to use Wasienv.

Create hello.c:

#include <stdio.h>

int main()
{
   printf("Hello, %s!\n", "world");
   return 0;
}
$ wasicc -O3 -Wl,--stack-first hello.c -o hello.wasm

$ wasm3 hello.wasm                      
Hello, world!

C++ WASI app

Create hello.cpp:

#include <iostream>

int main()
{
    std::cout << "Hello World!" << std::endl;
    return 0;
}
$ wasic++ -O3 -Wl,--stack-first hello.cpp -o hello.wasm

$ wasm3 hello.wasm
Hello World!