Published
Edited
Mar 26, 2021
Importers
2 stars
Insert cell
Insert cell
Insert cell
Insert cell
Insert cell
addWASM = asc.compileString(addSource, {
optimizeLevel: 3
})
Insert cell
memoryWASM = WebAssembly.instantiate(addWASM.binary, {})
Insert cell
Insert cell
memoryWASM.instance.exports.add(7, 4)
Insert cell
Insert cell
ascCompile(errorSource)
Insert cell
Insert cell
Insert cell
function ascCompile(source) {
const output = Object.create({
stdout: asc.createMemoryStream(),
stderr: asc.createMemoryStream()
});
asc.main(
["input.ts", "-O3", "--binaryFile", "binary", "--textFile", "text"],
{
stdout: output.stdout,
stderr: output.stderr,
readFile: name => (name === "input.ts" ? source : null),
writeFile: (name, contents) => {
output[name] = contents;
},
listFiles: () => []
},
err => {
if (err) throw new Error(output.stderr.toString());
}
);
return output;
}
Insert cell
// adapted from https://observablehq.com/@stwind/hello-assemblyscript
asc = {
// adapted from https://cdn.jsdelivr.net/npm/assemblyscript@0.18.16/dist/sdk.js
const BINARYEN_VERSION = "98.0.0-nightly.20210106";
const LONG_VERSION = "4.0.0";
const ASSEMBLYSCRIPT_VERSION = "0.18.16";

const ROOT = "https://cdn.jsdelivr.net/npm";

window.require = require;
return require.alias({
binaryen: require(`${ROOT}/binaryen@${BINARYEN_VERSION}/index.js`),
long: require(`${ROOT}/long@${LONG_VERSION}/dist/long.js`),
assemblyscript: require(`${ROOT}/assemblyscript@${ASSEMBLYSCRIPT_VERSION}/dist/assemblyscript.js`)
})(`${ROOT}/assemblyscript@${ASSEMBLYSCRIPT_VERSION}/dist/asc.js`);
}
Insert cell
Insert cell
Insert cell

Purpose-built for displays of data

Observable is your go-to platform for exploring data and creating expressive data visualizations. Use reactive JavaScript notebooks for prototyping and a collaborative canvas for visual data exploration and dashboard creation.
Learn more