Pounce
A UCI compatible chess engine written in Rust.
Features
- Fast, bitboard based move generation
- PV alpha-beta search with quiescence search
- Iterative deepening and aspiration windows
- Lockless transposition tables
- MVV-LVA capture ordering
- Killer moves
- History heuristic
- Internal iterative reduction
- Null move pruning
- Reverse futility pruning
- Late move reductions
- Node effort based time management
- Lazy SMP parallelism
There's also a magic bitboard generator in the wiz binary, and an alternate
datagen binary (datagen) that's still WIP.
Building
You can build an optimized binary with:
make pgo-release
This requires cargo-pgo which will be installed automatically by the Makefile.
A normal release build can be built with:
cargo build --release
If you'd like to build either additional binaries (wiz or datagen), you can use:
cargo build --release --features wiz --bin wiz
or
cargo build --release --features datagen --bin datagen
Credits
- Sebastian Lague's Coding Adventure chess engine series. on YouTube for the inspiration to write a chess engine, as well as cogent explanations of the concepts involved.
- The Chess Programming Wiki
- Jordan Bray's Chess rust package for inspiration for fast move generation.
Also the following engines for their inspiration and ideas:
Also Fastchess for sprt testing.