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



Heimdall 1.5.0 - new version chess engine


HeimdallUCI chess engine written in Nim.
Author: Mattia Giambirtone

More info
Heimdall is available on Lichess under its old name (Nimfish), feel free to challenge it! I try to keep the engine running on there always up to date with the changes on the master branch

Heimdall 1.5.0 what's new?

More layers!
Ahoy! As it was foretold by the prophecy, I come to you today with a new major release of Heimdall, featuring a multi-layer NNUE for much-improved evaluation quality. Exciting!
What? You're asking me why I am releasing 1.5 so close to the release of 1.4.3? What are you talking about? There is no Heimdall 1.4.3, and any references or mentions to it are pure fiction. Seriously. Stop talking about it. (Seriously. You don't want to upset the Elo gods, do you?)
Anyway, here follows a changelog
What changed
Added a (shamelessly vibecoded) terminal UI with analysis, play/setup/replay flows, board rendering, eval/move arrows, user arrows, mate finding, annotations, PGN importing/exporting, and more; see here for details
Made UCI move parsing reject illegal moves more reliably
Improved command parsing so valid position and go commands embedded in otherwise malformed input can still be handled per the UCI spec
Switched to the first multilayer network in Heimdall's history, gramr
Added a new vnni target for improved inference speed on AVX512 processors that support it (no AVX2-VNNI, sorry Intel people)
Added Transparent Huge Pages support for aligned memory where available (detected at build time, not runtime)
Implemented a simplified ProbCut
Implemented fractional LMR and made the LMR base table tunable
Added continuation correction history and 2-ply continuation correction history
Tuned all search parameters
Fixed evaluation clamping and mate-score handling issues
Fixed the long-standing incorrect definition of improving
Tightened singular-extension and futility-pruning margins
Ensured NMP does not return false mates
Reduced false sharing and contention by changing how search parameters and worker state are copied/aligned
Used relaxed ordering for atomic operations where appropriate
Moved more objects to managed references and aligned more search-manager fields
Compressed moves into 16 bits
Heimdall is now NUMA-aware! On Linux machines with more than one processor (if configured with more than one thread), Heimdall will attempt to bind the transposition table and search threads in a way that maximizes performance and prevents needless back-and-forth between the different memory controllers. Should be significant at TCEC/CCC conditions
Reduced the time it takes for many-thread searches to start. Relevant at very high thread counts when low on time
En Passant moves are now considered as captures across search and movegen rather than being special-cased
IDK, probably forgot a bunch of stuff, but who ever reads changelogs anyway?
Strength
The keyword for this release is definitely scaling. That fat ass network surely seems to at least be worth the weight! The 8moves tests are benefitting 1.4.2 as well so the scaling is less pronounced, but I'm confident it's still there
UHO_Lichess_4852_v1.epd
STC:
Elo   | 82.77 +- 9.57 (95%)
Conf  | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2010 W: 800 L: 330 D: 880
Penta | [13, 106, 365, 440, 81]
https://chess.n9x.co/test/7152/
LTC:
Elo   | 97.81 +- 8.43 (95%)
Conf  | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2016 W: 832 L: 279 D: 905
Penta | [2, 76, 352, 523, 55]
https://chess.n9x.co/test/7154/
8moves_v3.epd
STC:
Elo   | 80.66 +- 9.06 (95%)
Conf  | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2030 W: 644 L: 181 D: 1205
Penta | [9, 90, 425, 411, 80]
https://chess.n9x.co/test/7156/
LTC:
Elo   | 71.80 +- 7.34 (95%)
Conf  | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2012 W: 491 L: 81 D: 1440
Penta | [2, 47, 535, 383, 39]


Heimdall 1.3.0 vs other engines:
Horsie 1.0.6 JA1.5/12-912 Games
Viridithas 16.0.01/8-68 Games
Sting Black Hole 96/6+66 Games
Deep HIARCS 15.4u4/6+26 Games
Ethereal 14.252/6-26 Games
Chess-System-Tal-22/6-26 Games
Caissa 1.212/6-26 Games
Alexandria 7.0.14 JA2/6-26 Games
Revenge 4.02/6-26 Games
Motor 0.8.0 JA2/6-26 Games
Lizard 11.2.01.5/6-36 Games
PlentyChess 4.0.11.5/6-36 Games
Clover 8.1 JA1.5/6-36 Games
HypnoS ++ 1.011.5/6-36 Games
Artemis 7TR1.5/6-36 Games
Dragon 3.31.5/6-36 Games
Velvet 8.1.1 JA1/6-46 Games
Obsidian 15.01 SE1/6-46 Games
Starzix 6.01/6-46 Games
Igel 3.6.0 JA1/6-46 Games
Stockfish dev-202502020.5/6-56 Games


Github: https://github.com/nocturn9x/heimdall

Comments