@vscode/wasm-wasi

1.0.1 • Public • Published

WASM WASI Core API

Build Status

This npm module implements an API facade for the WASM WASI Core VS Code extension.

History

1.0.1

  • Readme updates.

1.0.0

The npm module now provides version specific import routes to support API migration in the future. The standard import import { Wasm } from '@vscode/wasm-wasi' still exists but points to deprecated code. Please switch to the new import route import { Wasm } from '@vscode/wasm-wasi/v1.

0.11.0

With release version 0.11.0 the implementation details of the WASM support for VS Code has changed. This npm module is now a facade around the wasm-wasi-core VS Code extension.

Example

The source code of the example can be found here

First we need to define a package.json for the extension that wants to execute a WASM process:

{
	"name": "...",
	...
	// depend on the wasm-wasi-core extension
	"extensionDependencies": [
		"ms-vscode.wasm-wasi-core"
	],
	// Depend on the wasm-wasi facade npm module to get easier API access to the
	// core extension.
	"dependencies": {
		"@vscode/wasm-wasi": "..."
	},
}

The actual source code to execute a WASM process looks like this

// Load the WASM API
const wasm: Wasm = await Wasm.load();

// Create a pseudoterminal to provide stdio to the WASM process.
const pty = wasm.createPseudoterminal();
const terminal = window.createTerminal({ name: 'Run C Example', pty, isTransient: true });
terminal.show(true);

// Load the WASM module. It is stored alongside the extension JS code.
// So we can use VS Code's file system API to load it. Makes it
// independent of whether the code runs in the desktop or the web.
try {
	const bits = await workspace.fs.readFile(Uri.joinPath(context.extensionUri, 'hello.wasm'));
	const module = await WebAssembly.compile(bits);
	// Create a WASM process.
	const process = await wasm.createProcess('hello', module, { stdio: pty.stdio });
	// Run the process and wait for its result.
	const result = await process.run();
} catch (error) {
	// Show an error message if something goes wrong.
	void window.showErrorMessage(error.message);
}

Readme

Keywords

Package Sidebar

Install

npm i @vscode/wasm-wasi

Weekly Downloads

102

Version

1.0.1

License

MIT

Unpacked Size

39.8 kB

Total Files

12

Last publish

Collaborators

  • rebornix
  • vscode-bot
  • microsoft1es
  • joaomoreno.ms
  • sbatten
  • alexandrudima
  • lszomoru
  • kaimaetzel