JustBot is a competitive chess engine written in Rust, it's my attempt at learning the language while simultaneously working on something interesting to me; it has been a lot of fun and a huge learning experience and I hope to be able to continue working on it. This project has only been possible thanks to the wonderful open-source community. JustBot contains no LLM generated code.
| Version | CCRL 40/15 | CCRL Blitz |
|---|---|---|
| JustBot v0.3.0 | 3400* | 3400* |
| JustBot v0.2.0 | 3124 | 3000* |
| JustBot v0.1.0 | 2400* | 2400* |
Note
*Elo is only an estimate
You can find precompiled binaries for Linux, Windows and macOS here
avx512: The fastest build, only compatible with newer CPUsavx2: Usable on most modern CPUsgeneric: The slowest build, should run on any x86-64 CPU.
To build the project, you need a working installation of Rust and Cargo, once the repository is cloned, you can run for a general build:
cargo build --releaseFor a targeted build you can run:
cargo rustc --release --bin justbot -- -C target-cpu=nativeThe binary should be located within ./target/release/
- Alpha-Beta Search
- Quiescence Search
- Check Evasions
- Principal Variation Search
- Time management
- Hard/Soft Bounds
- SEE Pruning
- Iterative Deepening
- Check Extensions
- Null Move Pruning
- Reverse Futility Pruning
- Aspiration Windows
- Late Move Reductions
- Late Move Pruning
- Futility Pruning
- Clustered Transposition Table
- Improving Modifier
- NNUE
- Standard 768 Inputs
- Dual Perspective
- 512 HL
- 8 Output Buckets
- Noisy History
- Quiet History
- 1 and 2 Ply Continuation Histories
| Name | Default | Max | Description |
|---|---|---|---|
| Hash | 16 | 1048576 | Sets the size of the transposition table in MB |
| Clear Hash | --- | --- | Clears all entries in the transposition table |
| Threads | 1 | 512 | Sets the number of threads to use during search |
- Chess Programming Wiki
- Maksim Korzh for helpful introductory videos, and where my magic numbers are from
- The very helpful members of the Stockfish Discord Server
- OpenBench as the testing framework, and for data generation
- Bullet for NNUE training
- Pawnocchio for converting PGNs to Viriformat
Additionally, the following engines have been huge sources of ideas and inspiration:
