After five months since the last release, I'm happy to say I have something new to share with you all in an official capacity. I have taken some time away from Ethereal's development, but for now I seem to be back with a vengeance.
In addition to general improvements and gains in elo, this version of Ethereal will be the first to officially support Fischer Random Chess / Chess 960. Around one hundred thousand games have been played and shown no crashes, illegal moves, or other errors. I'm sure there are still bugs lurking, but they do not appear to be the type that would be visible in a game played by Ethereal. If anything catches your eye about FRC, please let me know, either through this forum, the github page, or using my email, andrew@grantnet.us
Additionally, I have gone through and rewritten or cleaned every single source file in the project. Occasionally I hear from other authors that they have learned from Ethereal, and taken things to improve their own engines. I love hearing this, so I'm making sure I do my best to provide a clean Ethereal for those to learn from.
Binaries for Windows {PEXT / POPCNT / NOPOPCNT} and Android {ARMV8 / ARMV7} can be found here.
Elo estimates are pending. I will post them as soon as they are complete.
I will be launching those tests on OpenBench, for anyone who cares for immediate results
A quick summary of changes, one patch at a time ...
Code: Select all
11.26 : Tune the evaluation using an updated sigmoid. The mistake in my
calculation was pointed out by Tamas Kuzmics (Tomitank)
11.27 : Remove QS Futility Pruning, and merge it into SEE move picking
11.28 : Reset the Killer Moves for the children of a node, at each node
11.29 : Rewrite the internal way of saving History Scores (+Speedup)
11.30 : Move the selection of Killer and Counter moves to history.x
11.31 : Simplify Probcut Pruning by replacing the Verification with SEE
11.32 : Tweak the Razor, Futility, and SEE Pruning Margins
11.33 : Treat Root nodes like all others in regards to early pruning
11.34 : Cleanup and simplify Ethereal's search extensions
11.35 : Tweak the Late Move Pruning move counts
11.36 : Move the contents of castle.x into move.x (Preperation for FRC)
11.37 : Forgot to update the version number from V11.35 -> V11.36
11.38 : Limit the number of quiet moves tried when looking to disprove
a singularity. Thanks to Raoni Campos (Pirarucu) for the idea :)
11.39 : Small code cleanup for search.c (+Speedup)
11.40 : Increase Late Move Reductions when evading check with our King
11.41 : Fix an oversight from V11.39 causing Illegal PVs to be reported
11.42 : Cleanup of attacks.x & bitboards.x
11.43 : Cleanup of move.x & movegen.x
11.44 : Cleanup of masks.x & movepicker.x & zobrist.x
11.45 : Cleanup of history.x & syzygy.x & thread.x & time.x
11.46 : Add support for FRC / Chess960
11.47 : Redefine PassedSafePromotionPath to require an empty pathway
11.48 : Cleanup of psqt.x & texel.x & types.x & uci.x & windows.x
11.49 : Following a NULL move, skip evaluateBoard() (+Speedup)
11.50 : Cleanup of board.x evaluate.x search.x transposition.x
A special thanks to Lucas Braesch (lucasart), for writing the base line code for FRC just over a year ago. I used his efforts as a very powerful starting point.
A special thanks to Raoni Campos and Tamas Kuzmics for their ideas that made it into Ethereal.
And, as always, thanks to all of you great folks here who play with Ethereal
Cheers from the Ethereal team,
Andrew Grant & Laldon