Note: This module has been merged into Deno, further development will take place in the Deno repository
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 |
instance.exports._start();
} else if (module.exports._initialize) {
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._initialize();
} else {
throw new Error("No entry point found");
}