/website

AssemblyScript's website and documentation.

Primary LanguageHTML

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

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.