clingo-wasm v0.1.1
Clingo WebAssembly
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.
Installation and Usage
Node
npm install clingo-wasm
or yarn add clingo-wasm
.
const clingo = require("clingo-wasm");
clingo.run("a. b:- a.").then(console.log);
In the Browser
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>
Developers
Build WASM file
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.
Build and Test JavaScript
Run yarn build
to build the js files. Run yarn test
to run tests in node.
Update Lua, Clingo, or Emscripten
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.