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 | COPE Bullet | COPE Rapid |
|---|---|---|---|---|
| JustBot v0.4.0 | 3500* | 3600* | ||
| JustBot v0.3.0 | 3400* | 3400* | 3426 [#37] | 3467 [#40] |
| JustBot v0.2.0 | 3124 [#226] | 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:
cargo build --release
# ./target/release/justbotOtherwise, if you have GNU make installed you can just run:
make
# ./justbot- Alpha-Beta Search
- Quiescence Search
- Check Evasions
- Principal Variation Search
- Time management
- Hard/Soft Bounds
- Node Scaling
- SEE Pruning
- Iterative Deepening
- Null Move Pruning
- Reverse Futility Pruning
- Aspiration Windows
- Late Move Reductions
- Late Move Pruning
- Futility Pruning
- Clustered Transposition Table
- Improving Modifier
- Singular Extensions
- Negative Extensions
- Double Extensions
- History Pruning
- Razoring
- NNUE
- Standard 768 Inputs
- Dual Perspective
- 768 HL
- 8 Output Buckets
- Horizontally Mirrored
- 3 Input Buckets
- Fused Updates
- Finny Tables
- Lazy Updates
- 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 |
| UCI_Chess960 | false | --- | Enables Chess960 support |
- 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:
