A modular chess engine written in Rust.
- Magic bitboard-based move generation
- Alpha-beta search with iterative deepening
- Transposition tables with Zobrist hashing
- Move ordering: TT move, SEE, MVV-LVA, killer moves, history heuristic
- Null move pruning and late move reductions (LMR)
- Aspiration windows
- Quiescence search with delta pruning
- UCI protocol support
aether/
├── core/ - Core types: BitBoard, Move, Piece, Square, etc.
├── attacks/ - Magic bitboards and attack lookup tables
├── board/ - Board representation, make/unmake, FEN parsing
├── movegen/ - Move generation, legality, perft
├── engine/ - Search and evaluation
└── interface/ - UCI protocol implementation
Requires Rust stable (Edition 2024).
cargo build --releasecargo run --releaseThe engine communicates via UCI protocol. Use with any UCI-compatible GUI (Arena, Cutechess, etc.).
cargo test --workspaceRun the move-generation correctness suite:
cargo test -p movegen --test perft --releaseperft is also available inside a UCI session:
printf 'position startpos\nperft 6\nquit\n' | cargo run --releaseGenerate magic constants (only needed after modifying move generation):
cargo run -p attacks --features codegen --bin gen_magicsOutput: attacks/src/magic_constants.rs