wasmtime-crypto 12.0.2

Command-line interface for Wasmtime with the crypto extensions
Documentation
# AssemblyScript

[AssemblyScript] has included support for targeting WASI since version 0.10.0. If you're not familiar with AssemblyScript, check out the [docs](https://www.assemblyscript.org/introduction.html) or the [discord server](https://discord.gg/assemblyscript).
To setup this demo, you need a valid installation of [NodeJS](https://nodejs.org/), [Deno](https://deno.com/runtime), or [Bun](https://bun.sh/) along with a installation of [wasmtime](https://github.com/bytecodealliance/wasmtime).

For the rest of this documentation, we'll default to NPM as our package manager. Feel free to use the manager of your choice.

Let's walk through a simple hello world example using the latest AssemblyScript runtime (at the time of this writing, it is AssemblyScript runtime included in version 0.27.x):

## Hello World!

Enabling WASI support in AssemblyScript requires some configuration and dependencies in order to compile with WASI support.

First, we'll install [assemblyscript](https://github.com/AssemblyScript/AssemblyScript) along with [wasi-shim](https://github.com/AssemblyScript/wasi-shim) which is a plugin that adds support for WASI.

```sh
$ npm install --save-dev assemblyscript @assemblyscript/wasi-shim
```

Next, we'll use the built in `asinit` command to create our project files. When prompted, type `y` and return.

```sh
$ npx asinit .
```

Next, we need to configure our project to use WASI as a build target. Navigate to `asconfig.json` and add the following line.

`asconfig.json`
```json
{
    // "targets": { ... },
    "extends": "./node_modules/@assemblyscript/wasi-shim/asconfig.json"
}
```

With AssemblyScript now configured to use WASI, we can enter `./assembly/index.ts` and change it to the following. This will tell WASI to print the string to the terminal.

`assembly/index.ts`
```js
console.log("Hello World!");
```

Now, compile our WASI module using the `asc` command and run it using `wasmtime`.

```sh
$ npx asc assembly/index.ts --target release
$ wasmtime ./build/release.wasm
```

Now that we know how to use WASI, we'll test the capabilities of WASI using a demo.

## WASI Demo

First, clone the [wasmtime](https://github.com/bytecodealliance/wasmtime) repository and navigate to the `docs/assemblyscript_demo` directory.

```sh
$ git clone https://github.com/bytecodealliance/wasmtime
$ cd wasmtime/docs/assemblyscript_demo
```

Install our dependencies with NPM or your preferred package manager.

```sh
$ npm install
```

Take a look at the code in `docs/assemblyscript_demo/wasi-demo.ts` and then build the WASM/WASI binary by running

```sh
$ npx asc wasi-demo.ts --target wasi-demo
```

Lastly, run the demo using

```sh
$ wasmtime ./build/wasi-demo.wasm
```