Skip to content
This repository has been archived by the owner on Jun 27, 2020. It is now read-only.
/ deno-wasi Public archive

A (WIP) WebAssembly System Interface implementation for Deno

License

Notifications You must be signed in to change notification settings

caspervonb/deno-wasi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebAssembly System Interface implementation for Deno

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.

Status

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

Example

	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");
}