Skip to content
This repository was archived by the owner on Jun 27, 2020. It is now read-only.

Latest commit

 

History

110 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

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

About

A (WIP) WebAssembly System Interface implementation for Deno

Topics

Resources

Stars

130 stars

Watchers

1 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages