diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6887c61 --- /dev/null +++ b/.gitignore @@ -0,0 +1,7 @@ +codegen +chess.wasm +mbb_bishop.h +mbb_rook.h +tests +*.dSYM +between_lookup.h diff --git a/chess-worker.js b/chess-worker.js new file mode 100644 index 0000000..685749d --- /dev/null +++ b/chess-worker.js @@ -0,0 +1,26 @@ +let exports; + +async function init() { + const resp = await fetch("./chess.wasm"); + if (!resp.ok) { + throw new Error("fetch wasm failed ${resp.status} ${resp.statusText}"); + } + + const { instance } = + await WebAssembly.instantiateStreaming(resp, {}); + + exports = instance.exports; +} +await init(); +self.postMessage({ type: "ready" }); + +self.onmessage = (e) => { + const { id, method, args = [] } = e.data; + try { + const value = exports[method](...args); + self.postMessage({ id, ok: true, value }); + } catch (err) { + self.postMessage({ id, ok: false, error: String(err?.message ?? err) }); + } +}; + diff --git a/chess.html b/chess.html index c31b45a..d4e4887 100644 --- a/chess.html +++ b/chess.html @@ -5,31 +5,37 @@