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



Soomi V1.2.0B - new version chess engine


Soomi - UCI chess engine
Author: Otto Laukkanen

Soomi 1.2.0B what's new?

Changes between 1.2.0 and 1.2.0B

Removed dead code from islegal, makemove, generatemovesto,
Renamed bits inside occupancyVariations to sqIndices
Used AND instead of modulo inside EvalPawns
Fixed bug inside setFEN function where not providing a fen with full information would cause parsing to be incomplete
Which would cause wrong pawn hash and king position. Also made setFEN more compact.
Remove extra 100 from searchstack, not needed with current maxdepth
Remove dead check from inside isAttacked which would check if move is within bounds. However as isAttacked is supplied moves by generatemovesto which already checks its unnecessary.
Removed unnecessary min clamps from mobility evaluation
Organized constants and variables better
Added better comments explaining the engines internals
Made occupancyvariations more compact with the "Carry-Ripler" Fancy method
Removed checks for if king is on board within incheck, evaluation functions and getpins
Removed check for if 0 moves inside move-ordering
Made lvaorder global to avoid recomputation, removed unnecessary attack checks from islegal and seeiterative
Simplify islegal: "Refactor capture handling and attack checks to use pieces directly from the board state".
Small cleanups to evaluation code and modified calculation orders in some functions like outpost evaluation
Precomputed castlemask to avoid recomputating during makemove and unmakemoves
Made evaluation more incremental: Added pawn shield and passed pawn mask initialization functions. Updated evaluation logic to use new masks for pawn-related evaluations.
Removed old evaluation code in favour of precomputed ones, mostly king safety, pawn structure eg. stuff.
Precomputed castle into zobrist hash: Added zobristCastleDiff for efficient castle state handling and modified related functions to utilize it. Updated attack calculations to include precomputed slider masks for performance improvements.
Use direct booleans instead of intermediates
Remove LMP, trapped piece detection, made SEE non-pin-aware, as it was bugged implementation anyways
remove unnecessary rankmask variable
Made tempo calculation and history clearing more compact
Made isinsufficientmaterial and audit commands code more compact
Remove more dead code from initTT, NewPosition.
Made phase calculation simpler
Removed branching using direct assingments inside makemove, unmakemove, evaluate.
Made time allocation more compact and faster at executing
Remove unused LineBB var and initilization
bumped maxdepth to 50 over 32
Added "usable = true" to tt save so mate scores can be used regardless of depth
Removed singular extensions
Simplified tt to always replace

Soomi 1.2.0 download


Comments