A currently 0x88 mailbox-based chess engine in Rust
fe_chess installs like a normal cargo crate: clone the repo and cargo build --release
.
The executable will be in target/release
.
It can also be ran with cargo run --release
or the binaries on the Releases page.
fe_chess currently only has a simple built-in shell that is not compatible with uci. Type help
to get a list of command. (UCI not functional).
- Add late-move-reduction to search moves that are considered worse by move ordering to a lesser depth
- Reimplement principal variation based on the transposition table
- Add quiescence move ordering
- Increase standard search depth to 6
- Start testing opening position
- Better move ordering
- Was only SEE
- Added: static eval
- Added: check
- Give TT move priority bonus for DRY coding
- Make score i16 instead of i32
- Remove PV from search
- Implement node counting
- Add beta and static eval to transposition table
- Rewrite tt.get usage
- Implement basic SEE-based move ordering
- Rewrites mostly related to the transposition table
- Make search use table hits of which the outcome is decided (Win, Draw, Loss)
- Remove previous PV from search
- Do not double search at depth 1 in the iterative deepening
- Delta prune in quiescence when alpha is game-ending
- Implement hashtable rehashing to improve performance under pressure
- Implement static exchange evaluation
- Quiscence search does not consider a move with see < 0
- Quiescence search does not consider moves where standing pat + SEE + a margin is below alpha
- Improve eval() significantly by evaluating mobility
- Implement a transposition table to speed up search significantly
- Implement zobrist hashing
- Implement delta pruning
- Remove mobility from evaluation
- Implement piece-square tables adapted from chessprogramming.org
- Store scores in a specialized struct
- Make search handle ending the game (it now can mate!)
- Let
think
output score and pv
- Initial release