sroelants / simbelmyne

A somewhat UCI compliant chess engine that could probably beat you.
GNU General Public License v3.0
15 stars 1 forks source link

Add `is_legal` check before playing TT move #308

Closed sroelants closed 3 weeks ago

sroelants commented 3 weeks ago

Simplify logic slightly, and start checking TT move for legality.

Mostly necessary for LazySMP, which is causing way more TT collisions, for some reason. (e.g., https://chess.samroelants.com/test/375/)

With the legality check in place, we have 0 crashes again! (https://chess.samroelants.com/test/383/)

Technically, the bit of extra work we're doing is gonna cost us 2-3 elo, but that seems to be offset by the fact that the LazySMP refactor might gain us 2-3 elo as well.

Non-regression for is_legal + LazySMP:

Elo   | -1.52 +- 2.49 (95%)
SPRT  | 8.0+0.08s Threads=1 Hash=16MB
LLR   | -0.12 (-2.94, 2.94) [-5.00, 0.00]
Games | N: 25144 W: 7047 L: 7157 D: 10940
Penta | [376, 2788, 6355, 2676, 377]
https://chess.samroelants.com/test/384/

I'll leave the test running, but happy to merge as is.

bench 6393411