A UCI chess engine written in Rust, from scratch, as a way of learning the language.
Written by hand — see CLAUDE.md for the rules I work under. Design decisions and the reasoning behind them are logged in docs/decisions.md.
Milestone 1 of 7 — board representation. Does not yet play chess.
cargo runcargo testPerft counts the leaf nodes of the move tree to a given depth. Because the correct counts are published, it's an exact test of move generation — either the number matches or there is a bug. It is the backbone of this project's test suite.
Reference values come from the Chess Programming Wiki perft results page.
| Position | Depth | Nodes | Time | Nodes/sec |
|---|---|---|---|---|
| pending milestone 3 |
Not yet measurable — needs search (milestone 4) and UCI (milestone 6).
- Board representation — pieces, squares, state, FEN parse/emit
- Move generation — pseudo-legal, then legality filtering
- Perft — correctness proof for the above
- Search — negamax with alpha-beta
- Evaluation — material, then piece-square tables
- UCI — plays in Cute Chess / Arena
- Strength — iterative deepening, transposition table, move ordering, quiescence
Progress is tracked in issues and on the project board.