forked from Mirrors/wasm3
parent
4f0b769629
commit
d931d669d9
@ -0,0 +1,91 @@
|
||||
# Wasm3 cookbook
|
||||
|
||||
### Rust WASI app
|
||||
|
||||
TODO
|
||||
|
||||
### AssemblyScript WASI app
|
||||
|
||||
TODO
|
||||
|
||||
### TinyGo WASI app
|
||||
|
||||
TODO
|
||||
|
||||
### Zig WASI app
|
||||
|
||||
Create `hello.zig`:
|
||||
```zig
|
||||
const std = @import("std");
|
||||
|
||||
pub fn main() !void {
|
||||
const stdout = std.io.getStdOut().writer();
|
||||
try stdout.print("Hello, {s}!\n", .{"world"});
|
||||
}
|
||||
```
|
||||
|
||||
```sh
|
||||
$ zig build-exe -O ReleaseSmall -target wasm32-wasi hello.zig
|
||||
|
||||
$ wasm3 hello.wasm
|
||||
Hello, world!
|
||||
```
|
||||
|
||||
## Zig library
|
||||
|
||||
Create `add.zig`:
|
||||
```zig
|
||||
export fn add(a: i32, b: i32) i64 {
|
||||
return a + b;
|
||||
}
|
||||
```
|
||||
|
||||
```sh
|
||||
$ 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](https://github.com/wasienv/wasienv).
|
||||
|
||||
Create `hello.c`:
|
||||
```c
|
||||
#include <stdio.h>
|
||||
|
||||
int main()
|
||||
{
|
||||
printf("Hello, %s!\n", "world");
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
```sh
|
||||
$ wasicc -O3 -Wl,--stack-first hello.c -o hello.wasm
|
||||
|
||||
$ wasm3 hello.wasm
|
||||
Hello, world!
|
||||
```
|
||||
|
||||
### C++ WASI app
|
||||
|
||||
Create `hello.cpp`:
|
||||
```cpp
|
||||
#include <iostream>
|
||||
|
||||
int main()
|
||||
{
|
||||
std::cout << "Hello World!" << std::endl;
|
||||
return 0;
|
||||
}
|
||||
```
|
||||
|
||||
```sh
|
||||
$ wasic++ -O3 -Wl,--stack-first hello.cpp -o hello.wasm
|
||||
|
||||
$ wasm3 hello.wasm
|
||||
Hello World!
|
||||
```
|
Loading…
Reference in new issue