KiyEngine - UCI chess engine
Author: Kiy-Khoi
Author: Kiy-Khoi
KiyEngine V3 is a high-performance UCI chess engine written in Rust. It combines a Mamba-MoE (Mixture of Experts) Neural Network for evaluation with a classic Alpha-Beta Search enhanced by a Massive Transposition Table.
A major release bringing Static Exchange Evaluation, full PV tracking, advanced extensions, NNUE infrastructure, and comprehensive search optimizations.
Highlights
| Metric | Value |
|---|---|
| NPS | ~1.93M nodes/sec (4 threads) |
| Search Depth | 15-19 ply in 60s+1s time control |
| PV Output | Full multi-move principal variation lines |
| NNUE | Infrastructure ready (accumulator, features, SIMD eval) |
Benchmark (depth 20, 4 threads)
Position: 3r2k1/pp3pp1/2p1bn1p/8/4P3/2N2N2/PPP2PPP/3R2K1 w
Version Nodes NPS Wall Time
------- ---------- ---------- ---------
v5.2.0 33,900,000 2,180,000 ~15.6s
v6.0.0 23,358,906 1,931,426 ~12.1s
New Features
Static Exchange Evaluation (SEE)
- Full exchange analysis with x-ray sliding attack support
all_attackers_to()computes attackers through removed pieces (x-ray discovery)see_score()returns material gain/loss via negamax walk-back- Handles promotions, king safety, and cheapest-attacker ordering
SEE Integration
- Main search pruning: depth-scaled thresholds (-20×depth for captures, -50×depth for quiets)
- Quiescence pruning: skip all captures with SEE < 0
- LMR adjustment: captures with negative SEE get +1 additional reduction
- Replaces crude attacker-vs-victim heuristic with proper exchange evaluation
Triangular PV Table
pv_table[ply][i]tracks full principal variation across all plies- PV copied from child to parent on alpha improvement
- Full multi-move PV lines in UCI
infooutput (was single-move only)
New Extensions
- Recapture extension: +1 depth when capturing on the same square as previous move
- Passed pawn push extension: +1 depth for pawns pushed to 6th or 7th rank
Improved Lazy SMP
- Helper threads use varied depth offsets (1, 2, or 3) based on thread index
- Better exploration diversity across the search tree (Stockfish-inspired)
NNUE Evaluation Infrastructure
- (768 → 512)×2 → SCReLU → 1024 → 1 architecture
- AVX2 SIMD evaluate with Lizard SCReLU trick
- Incremental accumulator updates (zero-copy split_at_mut)
- Binary format with i16 quantized weights (385.5 KB)
- Training pipeline with knowledge distillation + self-play RL
Search Tuning
- More aggressive LMR table (ln(d)×ln(m)/2.25)
- Tighter aspiration windows (δ=12, start at depth ≥ 5)
- Null move reduction R = 4 + depth/6
- Reverse futility pruning extended to depth ≤ 9
- Futility pruning extended to depth ≤ 8
- Late move pruning extended to depth ≤ 8
- Gentler history aging (3/4 decay instead of 1/2)
- Queen promotions added to quiescence search
- IIR at depth ≥ 3 for non-PV nodes
- Multi-cut after singular extension failure
Other Changes
- Stockfish-inspired time management (soft/hard bounds, stability, falling eval)
- Repetition detection (search path + game history, zero-allocation)
- Enhanced static evaluation (bishop pair, rook files, passed/doubled/isolated pawns)
- Continuation history, countermove heuristic, capture history
- Incremental move picking (avoids sorting pruned moves)
- Docker support (Dockerfile + docker-compose.yml)
- Updated ARCHITECTURE.md, DOCUMENTATION.md, CHANGELOG.md, README.md

Comments
Post a Comment