The site is built with VuePress and reuses its default theme to ease upgrading to newer versions.
The more important files are:
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.