1.0.1 • Published 1 year ago

@vscode/wasm-wasi v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
1 year ago

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

1 year ago

1.0.0

1 year ago

1.0.0-pre.2

1 year ago

1.0.0-pre.1

1 year ago

0.13.0-pre.1

2 years ago

0.11.0-next.0

2 years ago

0.11.0-next.1

2 years ago

0.9.0

3 years ago

0.8.1

3 years ago

0.8.2

3 years ago

0.7.2

3 years ago

0.7.1

3 years ago

0.7.0

3 years ago

0.6.0

3 years ago

0.1.0

3 years ago