Run it yourself
The whole site, the engine, and every result in this section run from one repository. Here is how to get it going, rebuild the WebAssembly engine, and reproduce the numbers.
The whole site, the engine, and every result in this section run from one repository. Here is how to get it going, rebuild the WebAssembly engine, and reproduce the numbers.
The whole site, the engine, and every result in this section run from one repository. Here is how to get it going and reproduce the numbers.
Clone the repository. Everything lives here: the Rust engine, the website, and the research topics with their compute scripts.
git clone https://github.com/raphael-anjou/eternity2
cd eternity2
Three toolchains. The engine is Rust, the site is a Node app, and the engine ships to the browser as WebAssembly.
wasm32-unknown-unknown targetcorepack enable gets you pnpm)With just installed, two commands. The first builds the engine to
WebAssembly and installs the web dependencies; the second starts the site at
localhost:5173 with hot reload.
just setup
just dev
Prefer to run things directly? Every just recipe is a one-line wrapper, so
you can skip just entirely:
# build the engine to WebAssembly
cd engine && wasm-pack build --target web --out-dir ../web/src/engine/pkg --release
# install and run the site
cd ../web && pnpm install && pnpm dev
The engine is a normal Rust crate that also compiles to WebAssembly. Run its tests, then rebuild the WASM whenever you change it. The tests include cross-checks against real community boards, so they catch any change to the piece set, rotation, or scoring.
just test # cargo test --release
just wasm # rebuild the WebAssembly after a change
Each topic in this section is self-contained: an article, a compute script, and the committed output it produces. Re-running the script regenerates that output. Deterministic results come back byte-for-byte identical; runs that depend on randomness or take hours say so plainly, and ship the board they found so you can still check it in the viewer.
For example, the forbidden-patterns counts (about twenty seconds):
just research-forbidden-patterns
# or directly:
cd research/topics/forbidden-patterns/compute
cargo run --release > ../results/feasibility.json
Running just with no arguments lists every task, including the other
reproduce recipes (research-subgrid, research-index) and the engine's
native bench and stats runs.
One command runs what continuous integration runs: engine tests, type-check, lint, and the production build.
just check # engine tests, typecheck, lint, build