AssemblyScript / website

AssemblyScript's website and documentation.
https://www.assemblyscript.org
57 stars 86 forks source link
assemblyscript documentation website

AssemblyScript's Website

Deploy

The site is built with VuePress and reuses its default theme to ease upgrading to newer versions.

The more important files are:

Editor component

Markdown files can make use of a custom editor component using the editor language tag, like so:

```editor
#!optimize=size&runtime=none&noAssert&explicitStart&enable=simd,reference-types
export function add(a: i32, b: i32): i32 {
  return a + b
}

#!html
<script type="module">
const exports = await instantiate(await compile(), { /* imports */ })
console.log(exports.add(1, 2))
</script>

The first line is an optional shebang indicating selected compiler options. Available options are:

* **optimize** = `string`<br />
  Optimization preset to use. Valid presets are `speed`, `size` and `none`
* **noAssert**<br />
  Replaces assertions with just their value without trapping.
* **debug**<br />
  Enables debug information in emitted binaries.
* **runtime** = `string`<br />
  Specifies the runtime variant to include in the program. Valid variants are `full`, `half`, `stub` and `none`.
* **noExportMemory**<br />
  Does not export the memory to the host.
* **importMemory**<br />
  Imports the memory from the host.
* **exportTable**<br />
  Exports the function table to the host.
* **importTable**<br />
  Imports the function table from the host.
* **explicitStart**<br />
  Exports an explicit start function to call.
* **memoryBase** = `integer`<br />
  Sets the start offset of emitted memory segments.
* **tableBase** = `integer`<br />
  Sets the start offset of emitted table elements.
* **use** = `string`<br />
  Comma separated list of global aliases, e.g. to switch the default 'Math' implementation used: `Math=JSMath`
* **enable** = `string`<br />
  Comma-separated list of future WebAssembly features to enable. Valid features are `sign-extension`, `bulk-memory`, `simd`, `threads` and `reference-types`.

The current source and associated compiler options can be serialized into a base64 blob this way. For example, when the 🔗 button is clicked, `document.location.hash` is updated with that blob and the then-sharable link is copied to clipboard.

Building
--------

To work on the site locally, install the dependencies and start a development server serving at [localhost:8080](http://localhost:8080/):

```sh
npm install
npm start

To build the site to dist, i.e. to verify that it works as expected:

npm run build

Distribution files can also be served instead of using the development server with:

npm run serve

The page is automatically deployed on pushes to the repository, plus at least once a day to sync contributors and sponsors.