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) [![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 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). 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 $> git clone https://github.com/AssemblyScript/assemblyscript.git
@ -39,23 +41,22 @@ $> npm install
$> npm link $> npm link
``` ```
Author your module using either Alternatively, it's also possible to point npm to the GitHub repository for now:
* 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:
``` ```
$> 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
-------- --------
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 $> npm run build
@ -66,3 +67,5 @@ Running the [tests](./tests):
``` ```
$> npm test $> 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": { "version": {
"desc": "Prints the compiler's version.", "desc": "Prints just the compiler's version and exits.",
"type": "boolean", "type": "boolean",
"aliases": [ "v" ] "aliases": [ "v" ]
}, },
"help": { "help": {
"desc": "Prints this message.", "desc": "Prints this message and exits.",
"type": "boolean", "type": "boolean",
"aliases": [ "h" ] "aliases": [ "h" ]
}, },
@ -34,7 +34,7 @@
"type": "number" "type": "number"
}, },
"validate": { "validate": {
"desc": "Validates the module.", "desc": "Validates the module using Binaryen. Exits if invalid.",
"type": "boolean", "type": "boolean",
"aliases": [ "c", "check" ] "aliases": [ "c", "check" ]
}, },
@ -66,31 +66,34 @@
"type": "string" "type": "string"
}, },
"noTreeShaking": { "noTreeShaking": {
"desc": "Disables compiler-level tree-shaking.", "desc": "Disables compiler-level tree-shaking, compiling everything.",
"type": "boolean" "type": "boolean"
}, },
"noDebug": { "noDebug": {
"desc": "Disables maintaining debug information in binaries.", "desc": "Disables maintaining of debug information in binaries.",
"type": "boolean" "type": "boolean"
}, },
"noAssert": { "noAssert": {
"desc": "Replaces assertions with NOPs.", "desc": "Replaces assertions with just their value without trapping.",
"type": "boolean" "type": "boolean"
}, },
"noEmit": { "noEmit": {
"desc": "Performs compilation as usual without emitting code.", "desc": "Performs compilation as usual but does not emit code.",
"type": "boolean" "type": "boolean"
}, },
"noMemory": { "noMemory": {
"desc": "Does not set up a memory.", "desc": "Does not set up a memory. Useful for low-level WebAssembly.",
"type": "boolean" "type": "boolean"
}, },
"noLib": { "noLib": {
"desc": "Does not include the standard library.", "desc": "Does not include the shipped standard library.",
"type": "boolean" "type": "boolean"
}, },
"lib": { "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" "type": "string"
}, },
"trapMode": { "trapMode": {

View File

@ -1,11 +1,10 @@
var fs = require("fs"); const fs = require("fs");
const runner = require("./runner");
var runner = require("./runner");
function test(file) { function test(file) {
console.log("Testing '" + file + "' ...\n"); 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: { env: {
abort: function(msg, file, line, column) { abort: function(msg, file, line, column) {
throw Error("Assertion failed: " + (msg ? "'" + getString(msg) + "' " : "") + "at " + getString(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); 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("mem final: " + exports.memory.buffer.byteLength);
console.log(); 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.untouched.wasm");
test("tlsf.optimized.wasm"); test("tlsf.optimized.wasm");