Skip to content

Sp00ph/icarus

Repository files navigation

Icarus

LGBTQ+ friendly trans rights

A superhuman UCI chess engine written in Rust, 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.

Features

Move Generation

  • Fully legal move generation with threat bitboard computation
  • PEXT/PDEP accelerated slider move generation on modern CPUs
  • Black magic slider generation on older CPUs

Search

  • 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

Move Ordering

  • Hash Move
  • Quiet History
    • Threat Bucketing
  • Tactic History
  • Continuation History
  • Staged Move Generation
  • Static Exchange Evaluation

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

Acknowledgements

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:

Special thanks go to Jonathan Hallström for helping with generating most of the training data.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages