Portable compiler sources that compile to both JavaScript using tsc
and WebAssembly using asc
.
Note that using the compiler as a library requires awaiting Binaryen ready state, like so:
const binaryen = require("binaryen");
const assemblyscript = require("assemblyscript");
binaryen.ready.then(() => {
// do something with assemblyscript
});
Note that building the compiler is not necessary if you only want to run it (in development). If not built, ts-node
is used to run the sources directly.
To build the compiler to a JavaScript bundle, run:
npm run build
Uses webpack under the hood, building to dist/
.
To build the compiler to a WebAssembly binary, run:
npm run bootstrap
Uses the AssemblyScript compiler compiled to JavaScript to compile itself to WebAssembly, building to WebAssembly again using itself compiled to WebAssembly. Builds to out/
. Performs a git diff
to make sure that both the initial and the final artifacts are the same. Note that this builds the compiler as a library, while the asc
frontend setting it up and feeding it source files is JavaScript for now.
Running asc
with the WebAssembly variant:
asc [options...] --wasm out/assemblyscript.optimized-bootstrap.wasm
Running the compiler tests with the WebAssembly variant:
npm run test:compiler -- --wasm out/assemblyscript.optimized-bootstrap.wasm