AssemblyScript compiles strictly typed TypeScript to WebAssembly using Binaryen. It generates minimal WebAssembly modules while being just an npm install
away.
See the AssemblyScript wiki for further instructions and documentation.
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 simple decoder for the PSON binary format. -
TLSF memory allocator
An implementation of the TLSF memory allocator. -
ฮผgc garbage collector
A port of the ฮผgc garbage collector library.
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 that some features a TypeScript programmer might expect are still in the works (see also: Limitations). Therefore, it's 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
Alternatively, it's also possible to point npm to the GitHub repository for now:
$> npm install AssemblyScript/assemblyscript
Afterwards, once your project is configured, it's just a matter of using your existing TypeScript tooling while coding, and running the CLI to build to WebAssembly:
$> asc myModule.ts -o myModule.wasm --optimize --validate --sourceMap
To build an UMD bundle to dist/assemblyscript.js
(binaryen.js remains an external dependency):
$> npm run build
Running the tests:
$> npm test
Note that freshly cloned copies of the compiler will use ts-node to run the sources directly, which is useful in development. Once built, asc
will use the distribution files instead. This can also be checked by running asc -v
(it is running the sources if it states -dev
).