From 411f53f7bbff54ff8b16f4d4c0f6d2ef573926f1 Mon Sep 17 00:00:00 2001 From: Andy Hayden Date: Fri, 15 Nov 2019 09:42:40 -0800 Subject: [PATCH] Add wasm example to manual (#3353) --- std/manual.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/std/manual.md b/std/manual.md index f5aed463cd..affcfd3959 100644 --- a/std/manual.md +++ b/std/manual.md @@ -951,6 +951,33 @@ for await (const req of serve(":8000")) { $ deno run --importmap=import_map.json hello_server.ts ``` +## WASM support + +Deno can execute [wasm](https://webassembly.org/) binaries. + + +```js +const wasmCode = new Uint8Array([ + 0, 97, 115, 109, 1, 0, 0, 0, 1, 133, 128, 128, 128, 0, 1, 96, 0, 1, 127, + 3, 130, 128, 128, 128, 0, 1, 0, 4, 132, 128, 128, 128, 0, 1, 112, 0, 0, + 5, 131, 128, 128, 128, 0, 1, 0, 1, 6, 129, 128, 128, 128, 0, 0, 7, 145, + 128, 128, 128, 0, 2, 6, 109, 101, 109, 111, 114, 121, 2, 0, 4, 109, 97, + 105, 110, 0, 0, 10, 138, 128, 128, 128, 0, 1, 132, 128, 128, 128, 0, 0, + 65, 42, 11 +]); +const wasmModule = new WebAssembly.Module(wasmCode); +const wasmInstance = new WebAssembly.Instance(wasmModule); +console.log(wasmInstance.exports.main().toString()); +``` + + +WASM files can also be loaded using imports: + +```ts +import { fib } from "./fib.wasm"; +console.log(fib(20)); +``` + ## Program lifecycle Deno supports browser compatible lifecycle events: `load` and `unload`. You can