Clingo compiled to WebAssembly with Emscripten. Try it online at https://observablehq.com/@cmudig/clingo or https://domoritz.github.io/clingo-wasm.
This repo combines work from two previous repos: https://github.com/Aluriak/webclingo-example and https://github.com/domoritz/wasm-clingo.
npm install clingo-wasm
or yarn add clingo-wasm
.
const clingo = require("clingo-wasm");
clingo.run("a. b:- a.").then(console.log);
Load Clingo from the JSDelivr CDN.
<script src="https://cdn.jsdelivr.net/npm/clingo-wasm@VERSION"></script>
We expose an UMD bundle that runs Clingo in a separate worker thread. Therefore, all commands need to be asynchronous.
<script>
async function main() {
// optionally pass URL to WASM file:
// await clingo.init("https://cdn.jsdelivr.net/npm/clingo-wasm@VERSION/dist/clingo.wasm")
console.log(await clingo.run("a. b :- a."));
console.log(await clingo.run("{a; b; c}.", 0));
}
main();
</script>
Run yarn build:wasm
if you have Docker. For testing purposes, you can run scripts/build_clingo.sh
from the root directory of the project.
Run yarn build
to build the js files. Run yarn test
to run tests in node.
Update the versions in scripts/versions.sh
and in the badges in this README.md
. Then push to a new branch and let GitHub actions build the new WASM file.