Skip to content

Latest commit

 

History

History
 
 

src

Compiler

Portable compiler sources that compile to both JavaScript using tsc and WebAssembly using asc.

Architecture

Usage

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

Building

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.

Building to JavaScript

To build the compiler to a JavaScript bundle, run:

npm run build

Uses webpack under the hood, building to dist/.

Building to WebAssembly

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