AssemblyScript compiles strictly typed TypeScript to WebAssembly using Binaryen. Unlike other toolchains, asc
generates minimal WebAssembly modules while being just an npm install
away.
A few early examples to get an idea:
-
Conway's Game of Life
Continuously updates the cellular automaton and visualizes its state on a canvas. -
i64 polyfill
Exposes WebAssembly's i64 operations to JavaScript using 32-bit integers (low and high bits). -
PSON decoder
A PSON decoder implemented in AssemblyScript. -
TLSF memory allocator
A port of TLSF to AssemblyScript. -
μgc garbage collector
A port of μgc to AssemblyScript.
Or browse the compiler tests for a more in-depth overview of what's supported already. One of them is a showcase.
Note that this version of the compiler is relatively new and does not yet support some features a TypeScript programmer might expect, e.g., strings, arrays and classes. It is not on npm, yet, but you can already try it out today:
$> git clone https://github.com/AssemblyScript/assemblyscript.git
$> cd assemblyscript
$> npm install
$> npm link
Author your module using either
- the assembly definitions (base config) if all you care about is targeting WebAssembly/asm.js or
- the portable definitions (base config) if you also want to compile to JavaScript using
tsc
and run:
$> asc yourModule.ts
See the AssemblyScript wiki for additional documentation.
Building an UMD bundle to dist/assemblyscript.js
(binaryen.js remains an external dependency):
$> npm run build
Running the tests:
$> npm test