mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-09 13:01:26 +00:00
Docs: Link to the wiki more prominently
This commit is contained in:
parent
6fb7a0c59f
commit
44375a43b2
29
README.md
29
README.md
@ -3,7 +3,9 @@
|
||||
|
||||
[](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`).
|
||||
|
23
bin/asc.json
23
bin/asc.json
@ -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": {
|
||||
|
@ -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");
|
||||
|
Loading…
x
Reference in New Issue
Block a user