mirror of
https://github.com/denoland/deno.git
synced 2024-11-23 15:16:54 -05:00
e8b93674ed
The usage example is a bit out of date and not compatible with the stricter definition of the WebAssembly namespace. This fixes that and makes it a bit cleaner.
2 KiB
2 KiB
wasi
This module provides an implementation of the WebAssembly System Interface
Supported Syscalls
wasi_snapshot_preview1
- args_get
- args_sizes_get
- environ_get
- environ_sizes_get
- clock_res_get
- clock_time_get
- fd_advise
- fd_allocate
- fd_close
- fd_datasync
- fd_fdstat_get
- fd_fdstat_set_flags
- fd_fdstat_set_rights
- fd_filestat_get
- fd_filestat_set_size
- fd_filestat_set_times
- fd_pread
- fd_prestat_get
- fd_prestat_dir_name
- fd_pwrite
- fd_read
- fd_readdir
- fd_renumber
- fd_seek
- fd_sync
- fd_tell
- fd_write
- path_create_directory
- path_filestat_get
- path_filestat_set_times
- path_link
- path_open
- path_readlink
- path_remove_directory
- path_rename
- path_symlink
- path_unlink_file
- poll_oneoff
- proc_exit
- proc_raise
- sched_yield
- random_get
- sock_recv
- sock_send
- sock_shutdown
Usage
import Context from "https://deno.land/std/wasi/snapshot_preview1.ts";
const context = new Context({
args: Deno.args,
env: Deno.env.toObject(),
});
const binary = await Deno.readFile("path/to/your/module.wasm");
const module = await WebAssembly.compile(binary);
const instance = await WebAssembly.instantiate(module, {
"wasi_snapshot_preview1": context.exports,
});
const {
_start: start,
_initialize: initialize,
memory,
} = instance.exports;
context.memory = memory as WebAssembly.Memory;
if (start instanceof Function) {
start();
} else if (initialize instanceof Function) {
initialize();
} else {
throw new Error(
"No '_start' or '_initialize' entry point found in WebAssembly module, make sure to compile with wasm32-wasi as the target.",
);
}
Testing
The test suite for this module spawns rustc processes to compile various example Rust programs. You must have wasm targets enabled:
rustup target add wasm32-wasi
rustup target add wasm32-unknown-unknown