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