The strong chess engine Stockfish with multi-variant support compiled to JavaScript and WebAssembly
npm install stockfish.jsstockfish.js
============
The strong open source chess engine
Stockfish
compiled to JavaScript and WebAssembly using
Emscripten. See it in action
for local computer analysis on lichess.org.



Maintained with bugfixes to keep supporting older browsers, but active
development is happening on stockfish.wasm.
Releases
--------
About 1.4MB uncompressed, 250 KB gzipped.
Building
--------
Install Emscripten and
uglifyjs,
then:
```
./build.sh
Or using Docker:
``
docker run --user $(id -u):$(id -g) --volume $(pwd):/home/builder/stockfish.js:rw niklasf/emscripten-for-stockfish
Usage
-----
`javascript
var wasmSupported = typeof WebAssembly === 'object' && WebAssembly.validate(Uint8Array.of(0x0, 0x61, 0x73, 0x6d, 0x01, 0x00, 0x00, 0x00));
var stockfish = new Worker(wasmSupported ? 'stockfish.wasm.js' : 'stockfish.js');
stockfish.addEventListener('message', function (e) {
console.log(e.data);
});
stockfish.postMessage('uci');
``
Changes to original Stockfish
-----------------------------
* Expose as web worker.
* Web workers are inherently single threaded. Limit to one thread.
* Break down main iterative deepening loop to allow interrupting search.
* Limit total memory to 32 MB.
* Disable Syzygy tablebases.
* Disable benchmark.
Acknowledgements
----------------
Thanks to @nmrugg for doing the same
thing with Stockfish 6, to @ddugovic for his
multi-variant Stockfish fork and to
the Stockfish team for ...
Stockfish.