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.4.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.4.0 what's new?

Fixed a critical bug in the alpha-beta implementation of both PVS and Quiescence where a beta cutoff would not be considered an alpha raise, causing the best move not to be stored (see test above)
Merged a slightly improved neural network trained on the new data from mistilteinn-v2 using a training schedule cooked up by @ciekce, thanks!
Implemented ttpv tracking: nodes that were previously part of a principal variation are now reduced less aggresively
Some fixes to time management which should hopefully address the time loss issues in high concurrency environments at fast time controls (bullet) like at CCC (Thanks Andrew for the precious debugging help and time on the chesscom machines!)
Both RFP and NMP are now avoided in nodes that were previously in the principal variation
History depth is now increased if bestScore beats beta by some threshold
Added threat indexing to capture history
Added support for static contempt with the Contempt UCI option
TT scores are now used in qsearch standpat cutoffs when possible
The ShowWDL option was renamed to UCI_ShowWDL to comply with the UCI specification
Tweaked the initial size of the aspiration window
Improving is no longer true if we were in check 2 plies ago
The evaluation is now immediately cached to the TT if we didn't get a hit in the current node
Separated the weights used for material scaling from the ones used for SEE and made both sets tunable
Parameterized RFP to allow tuning the improving margin separately
Implemented mate distance pruning
Search is reduced less when improving is true
Futility pruning is now more aggressive
Fixed an overflow bug when handling mated TT scores
Fixed some rare PV reporting bugs and optimize clearing the triangular table
The position's static evaluation is now returned instead of 0 when hitting the ply limit
When SIMD is available (in the avx2 and avx512 targets), it's used to speed up refreshes and finny table updates
SEE is not re-run for known good/bad moves in qsearch
All captures are now ordered by their MVV score, not just losing ones
Killer and counter moves are reduced less aggressively
Captures are reduced far less aggressively (reduction is halved)
A bunch of internal code changes. Refactoring, cleanup, etc.
The neural network is now embedded in the engine in a way that avoids weight duplication even across multiple, independent processes
A healthy dose of SPSA tuning

Game Strength Change/Tests

STC:
Elo   | 99.70 +- 8.95 (95%)
Conf  | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2012 W: 807 L: 245 D: 960
Penta | [5, 73, 363, 485, 80]

LTC:
Elo   | 117.55 +- 8.24 (95%)
Conf  | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2000 W: 841 L: 189 D: 970
Penta | [0, 48, 320, 564, 68]

STC:
Elo   | 88.92 +- 8.62 (95%)
Conf  | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 2000 W: 621 L: 120 D: 1259
Penta | [3, 60, 453, 401, 83]

LTC:
Elo   | 93.57 +- 7.40 (95%)
Conf  | 40.0+0.40s Threads=1 Hash=64MB
Games | N: 2000 W: 569 L: 43 D: 1388
Penta | [0, 22, 485, 438, 55]


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