After three intense months of development, I think ChessKISS has become a pretty strong chess engine. I've played countless games and run tournaments against previous versions, strong new competitors, and, of course, my own bugs. It's been a lot of fun — and stressful at times!
- Added space evaluation to improve positional play.
- Improved king safety, piece positioning, passed-pawn evaluation and threat detection.
- Introduced a new ProbCut implementation, negative extensions and Internal Iterative Reduction (IIR).
- Added a new unit bitbase and support for King and Pawn vs. King endgames.
- Refined search extensions with depth-dependent limits. Single-reply extensions are now also applied to hash moves when evading check.
- Improved repetition and draw detection throughout the search, including material draws, the 50-move rule and threefold repetition.
- Added static evaluation to the search stack, keeping evaluation scores separate from history heuristics.
- Removed lazy evaluation.
- Improved quiescence search with a new mechanism for handling checks.
- Tuned aspiration windows, late-move pruning thresholds and null-move reduction depths.
- Changed parallel search scheduling: workers now search to a maximum depth rather than for a fixed amount of time, stopping when the main worker finishes.
- Refined knight and pawn evaluation in the middlegame.