This package provides an implementation of the WebAssembly System Interface for the Deno TypeScript runtime.
This is a work in progress so if a function isn't implemented, hit refresh.
Name | Status | Notes |
---|---|---|
args_get |
✓ | |
args_sizes_get |
✓ | |
environ_get |
✓ | |
environ_sizes_get |
✓ | |
clock_res_get |
✓ | |
clock_time_get |
✓ | |
fd_advise |
This has no obvious path to implementation at this time. | |
fd_allocate |
This has no obvious path to implementation at this time. | |
fd_close |
✓ | |
fd_datasync |
This is blocking on getting fdatasync(2) implemented upstream in Deno. | |
fd_fdstat_get |
✓ | This currently does not write flags and rights as we do not track those at the moment. |
fd_fdstat_set_flags |
This has no obvious path to implementation at this time. | |
fd_fdstat_set_rights |
||
fd_filestat_get |
This is blocking on getting fstat implemented upstream in Deno. | |
fd_filestat_set_size |
This is blocking on getting ftruncate implemented upstream in Deno. | |
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 |
✓ | This is blocking on getting fsync(2) implemented upstream in Deno. |
fd_tell |
✓ | |
fd_write |
✓ | |
path_create_directory |
✓ | |
path_filestat_get |
✓ | |
path_filestat_set_times |
✓ | |
path_link |
✓ | |
path_open |
✓ | Opening directories is not portable |
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 |
import WASI from "https://deno.land/x/wasi/mod.ts";
const wasi = new WASI({
args: Deno.args,
env: Deno.env,
});
const binary = Deno.readAll("command.wasm");
const module = await WebAssembly.compile(binary);
const instance = await WebAssembly.instantiate(module, {
wasi_snapshot_preview1: wasi.exports,
});
wasi.memory = module.exports.memory;
if (module.exports._start) {
instance.exports._start();
} else if (module.exports._initialize) {
instance.exports._initialize();
} else {
throw new Error("No entry point found");
}