Hey guys,
PrechessUCI 1.33 is out. Fun fact: this originally started as a very rudimentary engine that could only play with the Black pieces, but that has been fully corrected. It now plays both sides flawlessly. I spent the last few weeks completely rewriting the internals, and it's running great.
The main upgrade is speed. The Quiescence Search was wasting a ton of time generating quiet moves just to throw them away. I wrote a strict capture-only generator that skips the overhead, bumping the base speed from ~860k up to 1.1 Million NPS.
I also built a native ML tuner in Ada and ran a multithreaded coordinate-descent over 725,000 positions. I hardcoded all 786 tuned evaluation weights (piece-square tables, penalties, etc.) straight into the compiler as constants. It plays much better positionally now without losing any speed.
For the purists, José's original legacy search from Prechess 0.7.8 is still in there as a UCI option, just heavily optimized.
Two quick limitations: the search is strictly single-threaded, and the Hash size is locked at 33MB. The old code relies heavily on global variables for the board state, so spinning up multiple threads for Lazy SMP would just cause instant race conditions and crashes. Fixing that requires a full stateless rewrite of the legacy code, which I haven't done yet. Changing 'Threads' or 'Hash' in your GUI won't do anything.
Distribution follow the MIT License. The zip has the Ada source code and a highly optimized Windows 64-bit executable (prechess_uci64.exe).
If someone want to give it a run in Arena or CuteChess, let me know if it crashes or blunders.
Cheers, Arthur (supernova).
https://drive.google.com/file/d/16fO8Zd ... drive_link