Docs: Link to the wiki more prominently

This commit is contained in:
dcodeIO 2018-02-02 19:05:49 +01:00
parent 6fb7a0c59f
commit 44375a43b2
3 changed files with 33 additions and 47 deletions

View File

@ -3,7 +3,9 @@
[![Build Status](https://travis-ci.org/AssemblyScript/assemblyscript.svg?branch=master)](https://travis-ci.org/AssemblyScript/assemblyscript)
**AssemblyScript** compiles strictly typed [TypeScript](http://www.typescriptlang.org) to [WebAssembly](http://webassembly.org) using [Binaryen](https://github.com/WebAssembly/binaryen). Unlike other toolchains, `asc` generates minimal WebAssembly modules while being just an `npm install` away.
**AssemblyScript** compiles strictly typed [TypeScript](http://www.typescriptlang.org) to [WebAssembly](http://webassembly.org) using [Binaryen](https://github.com/WebAssembly/binaryen). It generates minimal WebAssembly modules while being just an `npm install` away.
See [the AssemblyScript wiki](https://github.com/AssemblyScript/assemblyscript/wiki) for further instructions and documentation.
Examples
--------
@ -27,10 +29,10 @@ A few early examples to get an idea:
Or browse the [compiler tests](./tests/compiler) for a more in-depth overview of what's supported already. One of them is a [showcase](./tests/compiler/showcase.ts).
Getting started
---------------
Installation
------------
Note that this version of the compiler is relatively new and does not yet support some features a TypeScript programmer might expect, e.g., strings, arrays and classes. It is not on [npm](https://www.npmjs.com/package/assemblyscript), yet, but you can already try it out today:
Note that this version of the compiler is relatively new and that some features a TypeScript programmer might expect are [still in the works](https://github.com/AssemblyScript/assemblyscript/wiki/Status-and-Roadmap) (see also: [Limitations](https://github.com/AssemblyScript/assemblyscript/wiki/Limitations)). Therefore, it's not on [npm](https://www.npmjs.com/package/assemblyscript), yet, but you can already try it out today:
```
$> git clone https://github.com/AssemblyScript/assemblyscript.git
@ -39,23 +41,22 @@ $> npm install
$> npm link
```
Author your module using either
* the [assembly definitions](./std/assembly.d.ts) ([base config](./std/assembly.json)) if all you care about is targeting WebAssembly/asm.js or
* the [portable definitions](./std/portable.d.ts) ([base config](./std/portable.json)) if you also want to compile to JavaScript using `tsc`
and run:
Alternatively, it's also possible to point npm to the GitHub repository for now:
```
$> asc yourModule.ts
$> npm install AssemblyScript/assemblyscript
```
See [the AssemblyScript wiki](https://github.com/AssemblyScript/assemblyscript/wiki) for additional documentation.
Afterwards, once [your project is configured](https://github.com/AssemblyScript/assemblyscript/wiki/Configuring-a-project), it's just a matter of using your existing [TypeScript tooling](https://code.visualstudio.com) while coding, and [running the CLI](https://github.com/AssemblyScript/assemblyscript/wiki/Using-the-CLI) to build to WebAssembly:
```
$> asc myModule.ts -o myModule.wasm --optimize --validate --sourceMap
```
Building
--------
Building an UMD bundle to `dist/assemblyscript.js` ([binaryen.js](https://github.com/AssemblyScript/binaryen.js) remains an external dependency):
To build an UMD bundle to `dist/assemblyscript.js` ([binaryen.js](https://github.com/AssemblyScript/binaryen.js) remains an external dependency):
```
$> npm run build
@ -66,3 +67,5 @@ Running the [tests](./tests):
```
$> npm test
```
**Note** that freshly cloned copies of the compiler will use ts-node to run [the sources](./src) 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`).

View File

@ -1,11 +1,11 @@
{
"version": {
"desc": "Prints the compiler's version.",
"desc": "Prints just the compiler's version and exits.",
"type": "boolean",
"aliases": [ "v" ]
},
"help": {
"desc": "Prints this message.",
"desc": "Prints this message and exits.",
"type": "boolean",
"aliases": [ "h" ]
},
@ -34,7 +34,7 @@
"type": "number"
},
"validate": {
"desc": "Validates the module.",
"desc": "Validates the module using Binaryen. Exits if invalid.",
"type": "boolean",
"aliases": [ "c", "check" ]
},
@ -66,31 +66,34 @@
"type": "string"
},
"noTreeShaking": {
"desc": "Disables compiler-level tree-shaking.",
"desc": "Disables compiler-level tree-shaking, compiling everything.",
"type": "boolean"
},
"noDebug": {
"desc": "Disables maintaining debug information in binaries.",
"desc": "Disables maintaining of debug information in binaries.",
"type": "boolean"
},
"noAssert": {
"desc": "Replaces assertions with NOPs.",
"desc": "Replaces assertions with just their value without trapping.",
"type": "boolean"
},
"noEmit": {
"desc": "Performs compilation as usual without emitting code.",
"desc": "Performs compilation as usual but does not emit code.",
"type": "boolean"
},
"noMemory": {
"desc": "Does not set up a memory.",
"desc": "Does not set up a memory. Useful for low-level WebAssembly.",
"type": "boolean"
},
"noLib": {
"desc": "Does not include the standard library.",
"desc": "Does not include the shipped standard library.",
"type": "boolean"
},
"lib": {
"desc": "Adds one or multiple paths to custom library components.",
"desc": [
"Adds one or multiple paths to custom library components and",
"uses exports of all top-level files at this path as globals."
],
"type": "string"
},
"trapMode": {

View File

@ -1,11 +1,10 @@
var fs = require("fs");
var runner = require("./runner");
const fs = require("fs");
const runner = require("./runner");
function test(file) {
console.log("Testing '" + file + "' ...\n");
var exports = new WebAssembly.Instance(WebAssembly.Module(fs.readFileSync(__dirname + "/../" + file)), {
const exports = new WebAssembly.Instance(WebAssembly.Module(fs.readFileSync(__dirname + "/../" + file)), {
env: {
abort: function(msg, file, line, column) {
throw Error("Assertion failed: " + (msg ? "'" + getString(msg) + "' " : "") + "at " + getString(file) + ":" + line + ":" + column);
@ -21,29 +20,10 @@ function test(file) {
return String.fromCharCode.apply(String, str);
}
runner(exports, 10, 20000); // picked so I/O isn't the bottleneck
runner(exports, 50, 20000); // picked so I/O isn't the bottleneck
console.log("mem final: " + exports.memory.buffer.byteLength);
console.log();
}
function mem(memory, offset, count) {
if (!offset) offset = 0;
if (!count) count = 1024;
var mem = new Uint8Array(memory.buffer, offset);
var stackTop = new Uint32Array(memory.buffer, 4, 1)[0];
var hex = [];
for (var i = 0; i < count; ++i) {
var o = (offset + i).toString(16);
while (o.length < 3) o = "0" + o;
if ((i & 15) === 0) {
hex.push("\n" + o + ":");
}
var h = mem[i].toString(16);
if (h.length < 2) h = "0" + h;
hex.push(h);
}
console.log(hex.join(" ") + " ...");
}
test("tlsf.untouched.wasm");
test("tlsf.optimized.wasm");