•        24

The strong open source chess engine Stockfish compiled to JavaScript and WebAssembly using Emscripten. See it in action for local computer analysis on About 1.4MB uncompressed, 250 KB gzipped.



Related Projects

lichobile - mobile application

  •    TypeScript

Lichess mobile is a cordova application. It is written in TypeScript and JavaScript. The rendering library is mithril.js. It uses babel, browserify and gulp as build tools. It talks to a native Stockfish engine, supporting multiple variants, through a cordova plugin. Multi-variant chess library is brought by a JavaScript version of scalachess. Then copy env.json.example to env.json and modify settings to link your app to a lichess server.

stockfish-mac - Beautiful, powerful chess app for the Mac

  •    C++

Stockfish for Mac is a powerful chess analysis app. Play two-player games on the beautiful chess board, or get instant accurate analysis of any game. Features Stockfish for Mac does not have are currently open tickets in the issue tracker.

Stockfish - A powerful, open-source chess engine

  •    C++

Stockfish plays better and faster than humans. And it's one of the strongest chess engines in the world, appearing near or at the top of most chess engine rating lists.

libsodium.js - libsodium compiled to Webassembly and pure JavaScript, with convenient wrappers

  •    HTML

The sodium crypto library compiled to WebAssembly and pure Javascript using Emscripten, with automatically generated wrappers to make it easy to use in web applications. The complete library weights 188 Kb (minified, gzipped, includes pure js + webassembly versions) and can run in a web browser as well as server-side.

asm-dom - A minimal WebAssembly virtual DOM to build C++ SPA (Single page applications)

  •    C++

asm-dom is a minimal WebAssembly virtual DOM to build C++ SPA (Single page applications). You can write an entire SPA in C++ and compile it to WebAssembly (or asmjs as fallback) using Emscripten, asm-dom will call DOM APIs for you. This will produce an app that aims to execute at native speed by taking advantage of common hardware capabilities, also, you can use your C/C++ code without any change, you haven't to create a binding layer to use it (as we have to do if we want to use a C++ lib from JS). Basically we are creating an app in C++ that call javascript if needed instead of the opposite. You can write only once in C++ and share as much code as possible with desktop/mobile apps and web site. If you want to learn more about performance, please see this. asm-dom is a low-level virtual DOM library. It is unopinionated with regards to how you should structure your application.

lichess - Online Chess Game Server

  •    Scala

Lila (li[chess in sca]la) is a free online chess game server focused on realtime gameplay and ease of use. It features a search engine, computer analysis distributed with fishnet, tournaments, simuls, forums, teams, tactic trainer, a mobile app, and a shared analysis board. The UI is available in more than 80 languages thanks to the community.

binaryen - Compiler infrastructure and toolchain library for WebAssembly, in C++

  •    WebAssembly

Consult the contributing instructions if you're interested in participating. As a result, you might notice that round-trip conversions (wasm => Binaryen IR => wasm) change code a little in some corner cases.

bonsai-c - C to WebAssembly + asm.js compilation for humans

  •    Javascript

bonsai-c is a compiler from C to WebAssembly and asm.js-compatible Javascript, operating on a fundamentally different model to Emscripten. It's basically Java Applets 2.0.

perspective - Streaming pivot visualization via WebAssembly

  •    C++

A streaming data visualization engine for Javascript, Perspective makes it simple to build real-time & user configurable analytics entirely in the browser. A fast, memory efficient streaming pivot engine written principally in C++ and compiled to both WebAssembly and asm.js via the emscripten compiler.

wargo - Easy Rust to WebAssembly

  •    Javascript

To use, just wargo build instead of cargo build. We'll automatically make sure the Emscripten compiler is installed and configured before each run. Want to run your tests in the browser? No problem — we've got wargo test. Just run Selenium locally, set some environment variables, and you're ready to go.


  •    Javascript

This project is a proof-of-concept aiming at building C# applications into WebAssembly, by using Mono and compiling/linking everything statically into one .wasm file that can be easily delivered to browsers. The process does not use Emscripten (or Binaryen) but instead uses the experimental WebAssembly backend of LLVM with clang and lld to generate the final .wasm code. The goal is to use as few dependencies as possible. At the moment the only dependencies are LLVM, clang and lld trunk.

walt - :zap: Walt is a JavaScript-like syntax for WebAssembly text format :zap:

  •    Javascript

⚡️ Walt is an alternative syntax for WebAssembly text format. It's an experiment for using JavaScript syntax to write to as 'close to the metal' as possible. It's JavaScript with rules. .walt files compile directly to WebAssembly binary format. 🚀 Try it out in the Walt Explorer.

3D-Hartwig-chess-set - 3D chess game done in HTML/CSS/JS

  •    Javascript

3D chess game done in HTML/CSS/JS. Works only in webkit.

cargo-web - A Cargo subcommand for the client-side Web

  •    Rust

This cargo subcommand aims to make it easy and convenient to build, develop and deploy client-side Web applications written in Rust. Or clone and build with $ cargo build --release then place in your $PATH.

stdweb - A standard library for the client-side Web

  •    Rust

The goal of this crate is to provide Rust bindings to the Web APIs and to allow a high degree of interoperability between Rust and JavaScript.

yew - Rust framework for building client web apps

  •    Rust

Yew is a modern Rust framework inspired by Elm and ReactJS for creating multi-threaded frontend apps with WebAssembly. NEW! The framework supports multi-threading & concurrency out of the box. It uses Web Workers API to spawn actors (agents) in separate threads and uses a local scheduler attached to a thread for concurrent tasks.

js-nacl - Pure-Javascript High-level API to Emscripten-compiled libsodium routines.

  •    Javascript

A high-level Javascript API wrapping an Emscripten-compiled libsodium, a cryptographic library based on NaCl. Includes both in-browser and node.js support. The paper "The security impact of a new cryptographic library" is an excellent summary of the motivation behind the NaCl API and library design.

empythoned - CPython compiled to JS using emscripten

  •    Python

Empythoned is a build script that uses Emscripten to compile CPython for use in a browser. It attempts to compile the main interpreter as a single small executable and the whole standard library as dynamically loaded libraries. The project is in its infancy. Right now the core interpreter works very well, but many of the libraries either don't work at all or contain various bugs.

ilwasm - CIL to WebAssembly compiler

  •    CSharp

Maps a subset of .NET CIL to WebAssembly S-expressions. Implemented as a custom code generator backend for the JSIL CIL -> JS compiler.

webassembly - A minimal toolkit and runtime to produce and run WebAssembly modules.

  •    C

An experimental, minimal toolkit and runtime on top of node to produce and run WebAssembly modules. To run compiled WebAssembly modules, you'll either need a recent version of your browser with WebAssembly enabled or node.js 8 - but you probably already know that. For development, node.js 6 upwards is sufficient.