assemblyscript/README.md

77 lines
3.0 KiB
Markdown

AssemblyScript NEXT
===================
[![Build Status](https://travis-ci.org/AssemblyScript/next.svg?branch=master)](https://travis-ci.org/AssemblyScript/next)
**AssemblyScript** is a new compiler targeting WebAssembly while utilizing [TypeScript](http://www.typescriptlang.org)'s syntax and [node](https://nodejs.org)'s vibrant ecosystem. Instead of requiring complex toolchains to set up, you can simply `npm install` it - or run it in a browser.
By compiling a variant of TypeScript to [Binaryen](https://github.com/WebAssembly/binaryen) IR, the resulting module can be validated, optimized, emitted in WebAssembly text or binary format and converted to [asm.js](http://asmjs.org) as a polyfill.
The compiler itself is written in "portable AssemblyScript" so it can be compiled to both JavaScript using `tsc` and, eventually, to WebAssembly using `asc`.
Development status
------------------
This version of the compiler (0.5.0, NEXT) is relatively new and does not yet support some features a TypeScript programmer might expect, e.g., strings, arrays and classes. For now, you can see the [compiler tests](https://github.com/AssemblyScript/next/tree/master/tests/compiler) for an overview of what's supposed to be working already.
Getting started
---------------
If you'd like to try it today or even plan to contribute, this is how you do it:
```
$> git clone https://github.com/AssemblyScript/next.git
$> cd next
$> npm install
```
Author your module in AssemblyScript ([definitions](./assembly.d.ts)) or portable AssemblyScript ([definitions](./portable-assembly.d.ts)) and run:
```
$> node bin\asc yourModule.ts
```
Using the CLI
-------------
```
Syntax: asc [options] [entryFile ...]
Examples: asc hello.ts
asc hello.ts -b hello.wasm -t hello.wast -a hello.js
asc hello.ts -b > hello.wasm
Options:
-v, --version Prints the compiler's version.
-h, --help Prints this message.
-O, --optimize Optimizes the module.
-c, --validate Validates the module.
-o, --outFile Specifies the output file. Format is determined by file extension.
-b, --binaryFile Specifies the binary format output file (.wasm).
-t, --textFile Specifies the text format output file (.wast).
-a, --asmjsFile Specifies the asm.js format output file (.js).
--noTreeShaking Disables tree-shaking.
--noDebug Disables assertions.
--trapMode Sets the trap mode to use.
allow Allow trapping operations. This is the default.
clamp Replace trapping operations with clamping semantics.
js Replace trapping operations with JS semantics.
```
Unless a bundle has been built to `dist/`, `asc` runs the TypeScript sources on the fly via [ts-node](https://www.npmjs.com/package/ts-node). Useful for development.
Building
--------
Building an UMD bundle to `dist/assemblyscript.js` (does not bundle [binaryen.js](https://github.com/AssemblyScript/binaryen.js)):
```
$> npm run build
```
Running the [tests](./tests):
```
$> npm test
```