A superhuman UCI chess engine, supporting standard and (Double) Fischer Random chess, with NNUE evaluation trained exclusively on self-play data. This repository contains no LLM-generated or LLM-assisted code.
- Fully legal move generation with threat bitboard computation
- PEXT/PDEP accelerated slider move generation on modern CPUs
- Black magic slider generation on older CPUs
- Negamax using Alpha-Beta Pruning
- Iterative Deepening
- Quiescence Search
- Transposition Table
- Principal Variation Search
- Reverse Futility Pruning
- Null Move Pruning
- Late Move Reduction
- Late Move Pruning
- Futility Pruning
- SEE Pruning
- Aspiration Windows
- History Pruning
- Singular Extension (thanks to @kelseyde)
- Double Extensions
- Negative Extensions
- Multicut
- Multithreading using LazySMP
- Hash Move
- Quiet History
- Threat Bucketing
- Tactic History
- Continuation History
- Staged Move Generation
- Static Exchange Evaluation
- NNUE
- Dual Perspective
- Horizontal Mirroring
- Trained only on self-play using bullet
- Initial version trained on data generated using PeSTO piece-square tables.
- Correction History
- Pawn corrhist
- Minor corrhist
- Major corrhist
- Non-pawn corrhist
Icarus takes inspiration from other engines, including but not limited to:
Additionally, there are many individuals who have made developing Icarus easier and more fun, including but very much not limited to:
- Tecci, author of cherry
- Ciekce, author of Stormphrax
- Cosmo, author of Viridithas
- Dan Kelsey, author of Hobbes and contributor to Icarus
- Jonathan Hallström, author of pawnocchio and co-author of vine
- lily, author of Rose and SIMD wizard