1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-12-28 10:09:20 -05:00
denoland-deno/std/wasi
Casper Beyer be89bdfed7
test(std/wasi): reduce test duplication (#8053)
This fast-forwards wasi-test-suite a couple of commits removed
duplicate, or near duplicate tests with not much additional value.

Other tests have been merged to reduce the number of modules to make
tests topical to the syscall that is being tested.
2020-10-20 22:54:27 +02:00
..
testdata@ffbe85d231 test(std/wasi): reduce test duplication (#8053) 2020-10-20 22:54:27 +02:00
README.md docs(std): version all imports in README (#7442) 2020-10-04 14:18:36 +02:00
snapshot_preview1.ts chore(std/wasi): enable and fix lint errors in snapshot_preview1 (#7360) 2020-09-29 11:41:22 +02:00
snapshot_preview1_test.ts test(std/wasi): reduce test duplication (#8053) 2020-10-20 22:54:27 +02:00
snapshot_preview1_test_runner.ts chore(std/wasi): enable and fix lint errors in snapshot_preview1 (#7360) 2020-09-29 11:41:22 +02:00

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@$STD_VERSION/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.",
  );
}