KiyEngine 6.0.0 - new version chess engine




KiyEngine - UCI chess engine
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

MetricValue
NPS~1.93M nodes/sec (4 threads)
Search Depth15-19 ply in 60s+1s time control
PV OutputFull multi-move principal variation lines
NNUEInfrastructure 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 info output (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

Popular posts from this blog

We already have the new Fritz 20 program - what does it look like and how does it work?

Stockfish 250702 wins Android Chess Engines Tournament, 2025.08.03-04