Zahak
Zahak,
a UCI compliant open source chess engine by Amanj Sherwany, written in Go, licensed under the MIT License and first released on GitHub in February 2021 [2].
Since version 7, Zahak's hand crafted evaluation function is replaced with an NNUE style evaluation, which is trained by a from scratch written trainer, that is written in Go as well[3]. The network is trained on self-play games between different versions of Zahak. As of version 8, Zahak features an own network architecture which consists of 769 input features, that represents all the pieces on the board as well as a feature to represent white-to-move. The training process is thoroughly documented[4]. As of the time of this writing, Zahak is the only NNUE engine that is written in Go.
Zahak started its first debut in TCEC in Swiss 2 event of S21[5].
Name
Zahak (or Zahhak or Azhi Dahak) is an evil figure in Iranian/Kurdish/Perisan mythology, evident in ancient Iranian folklore as Azhi Dahāka, the name by which he also appears in the texts of the Avesta. Legend has it, that he had two giant snakes on his shoulders and he had to feed them two human brains on daily basis[6].
Features
Board Representation
- Bitboards
- Magic Bitboards for sliding pieces.
- Multi-Stage Pseudo-Legal Move Generation
Search
- Iterative Deepening
- Aspiration Windows
- Lazy SMP
- Principal Variation Search
- Transposition Table
- Move Ordering
- Selectivity
Evaluation
- NNUE (>= Zahak 7)
Misc
Forum Posts
2021
- Zahak's announcement by Amanj Sherwany, CCRL Discussion Board, March 13, 2021