Since you’re here...

We hope you will consider supporting us today. We need your support to continue to exist, because good entries are more and more work time. Every reader contribution, however big or small, is so valuable. Support "Chess Engines Diary" even a small amount– and it only takes a minute. Thank you.
============================== My email: jotes@go2.pl



Hydra 1.1.0 - new version chess engine


Hydra UCI-compatible chess engine written in pure Python — no C extensions, no numpy, no external dependencies.
Estimated strength: ~2000 Elo (Stockfish UCI_Elo calibration, 100 ms/move).
Author: Miloslav Macůrek

Hydra 1.1.0 what's new?
This release is focused entirely on performance. No new features, no new search algorithms — just making the existing engine significantly faster, which directly translates to stronger play.

Estimated strength: ~2000 ELO

What changed
Evaluation cache — static eval is now cached by Zobrist hash (up to 65 536 entries), avoiding redundant recomputation for positions seen multiple times during search
Pawn structure cache enlarged from 4 096 → 32 768 entries
Removed hanging-pieces detection from static evaluation — SEE (Static Exchange Evaluation) already handles tactical compensation in search, making the static penalty redundant and expensive
Conditional SEE skip — captures where the victim is worth more than the attacker are ordered directly via MVV-LVA, saving a full SEE call per move in most exchanges
Faster LSB extraction in move generation — replaced De Bruijn multiplication + table lookup with (bb & -bb).bit_length() - 1, leveraging CPython's native integer representation (~21% faster per call, 82 call sites updated)
History-malus micro-optimisations — destination square hoisted out of inner loop, set-literal allocations eliminated.


Comments