Chess engine (kirin_engine)¶
- group Chess engine (kirin_engine)
Pure chess — movegen, search, evaluation, UCI. No hardware dependencies.
Pure chess, no hardware dependencies. Bitboard move generation with magic bitboards, Zobrist hashing, alpha-beta search with iterative deepening and a transposition table, classical + NNUE evaluation, and the UCI protocol.
Design reference:
docs/engine-docs/.- The invariant
This library must build and test standalone. Nothing here may include a hardware header, touch GPIO, or open a serial port. That boundary is what lets the same engine ship in the product, on the lichess bot, and in CI on a machine with no board attached.
- Types, not identities
The engine reasons about piece types: it knows “a black knight is on d5”, not “the b8-knight is on d5”. Anything needing per-piece identity lives in Hardware layer (kirin_hardware) — see PieceTracker for where the two reconcile.
Files¶
- engine/attacks.cpp
- engine/attacks.h
- engine/bitboard.cpp
- engine/bitboard.h
- engine/engine.h
- engine/evaluation.cpp
- engine/evaluation.h
- engine/movegen.cpp
- engine/movegen.h
- engine/nnue.cpp
- engine/nnue.h
- engine/position.cpp
- engine/position.h
- engine/san.cpp
- engine/san.h
- engine/search.cpp
- engine/search.h
- engine/types.cpp
- engine/types.h
- engine/uci.cpp
- engine/uci.h
- engine/utils.cpp
- engine/utils.h
- engine/zobrist.cpp
- engine/zobrist.h