mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-05-01 09:52:19 +00:00
77 lines
3.0 KiB
Markdown
77 lines
3.0 KiB
Markdown
AssemblyScript NEXT
|
|
===================
|
|
|
|
[](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
|
|
```
|