Skip to main content

AssemblyScript

AssemblyScript compiles a strict variant of TypeScript to WebAssembly, enabling high-performance code execution in the browser. It is designed for developers familiar with TypeScript who want to target WebAssembly.

Usage​

Demo​

show code
import { createPlayground } from 'livecodes';

const options = {
"template": "assemblyscript"
};
createPlayground('#container', options);

Loading the Wasm Module​

The compiled WebAssembly module is loaded using the livecodes.loadWasm() method, which optionally takes an import object and returns a promise that resolves to an object containing:

  • wasmModule - the instantiated WebAssembly module (with exported functions)
  • text - the WebAssembly Text Format (WAT) representation (can be viewed in compiled code viewer)
  • binary - the raw WebAssembly binary
const { wasmModule } = await livecodes.loadWasm();
const { increment } = wasmModule.exports;

Working with Strings​

AssemblyScript manages strings differently than JavaScript. Any exported function that returns a string must be accessed via the __getString helper provided by the AssemblyScript loader.

Example:

AssemblyScript
export function greet(): string {
return "Hello, AssemblyScript!"
}
JavaScript
const { wasmModule } = await livecodes.loadWasm();
const { __getString, greet } = wasmModule.exports;
const message = __getString(greet());
document.body.textContent = message;

If __getString is not used, you will get a raw memory pointer instead of the actual string value.

Import Object​

The loadWasm() method accepts an optional import object, allowing the AssemblyScript module to call JavaScript functions. Use @external("env", "functionName") to declare imports.

Example:

AssemblyScript
@external("env", "getMultiplier")
declare function getMultiplier(): i32;

export function applyMultiplier(value: i32): i32 {
return value * getMultiplier();
}
JavaScript
const { wasmModule } = await livecodes.loadWasm({
env: {
getMultiplier: () => 10,
},
});
const result = wasmModule.exports.applyMultiplier(5);
console.log(result); // 50

Language Info​

Name​

assemblyscript

Aliases​

as

Extensions​

.as

Editor​

script

Compiler​

AssemblyScript compiler

Version​

assemblyscript: v0.28.9

Code Formatting​

Using Prettier.

Custom Settings​

Custom settings added to the property assemblyscript are passed as options to the AssemblyScript compiler. Please check the documentation for full reference.

Please note that custom settings should be valid JSON (i.e. functions are not allowed).

Example:

Custom Settings
{
"assemblyscript": {
"optimizeLevel": 3
}
}

Starter Template​

https://livecodes.io/?template=assemblyscript