New version chess engine: Lynx 1.9.0 (Windows, MacOS, Linux)
Lynx it's written in C# (.NET 6). UCI protocol is needed.
Chess Engines Diary Rating CEDR=2890
Lynx release artifacts are self-contained and require no dependencies to be run.
However, you can also choose to build Lynx yourself.
Requirements
NET 6 SDK. You can find instructions about how to install it in yo
v.1.9.0
🔍 Search
Add PVS SEE pruning (#1521)
LMR: reduce more on TT capture when current move isn't (#1529)
LMR: reduce more on no TT PV (#1476)
LMR: deeper/shallower (#1535)
LMR: fractional w/ quantised base (#1514)
LMR: split base and history factor in quiet and noisy (#1512)
QSearch: don't use TT static eval (#1312)
QSearch: reuse TT score instead of TT static eval in QSearch when possible (#1319)
QSearch: don't do standing pat when in check (#1389)
Always predict cutnodes in ZWS with reduction, even if the reduction is 0 (#1304)
Extend on TT hit at low depths when TT cutoff doesn't happen but TT depth > depth (#1342)
Replace first legal move with BestMoveRoot() method when search depth 1 isn't completed (#1449)
Countermoves update: add pvNode || depth >= 3 condition (#1456)
IIR: on !ttHit -> on !ttHit || !ttMove (#1516)
Use final eval when available (checkmate, stalemate) as cached TT static eval (#1288)
SPSA (#1405, #1537)
⚖️ Evaluation
Pieces protected by pawns -> bucketed array, indexed by piece (#1324, #1336)
Passed pawns -> opponent buckets to passed pawns bucketed arrays (#1349)
Bishop major threats (#1415, #1420)
Bishop in non-blocked long diagonal (#1439)
Pawn islands (#1431)
Connected rooks (#1436)
Incremental static evaluation for PSQTs (#1350, #1353)
Pawn structure eval table (#1365)
Incremental phase (#1412)
⚡Speedups
Split ScoreMove between regular search and qsearch (#1410)
Remove Engine.StopSearching and Engine_stopRequested (#1296)
Use in readonly struct when passing args, when possible (#1462)
Precalculated pawn islands (#1440)
Remove passed pawns double array (#1491)
Add inline hints to TTElement getters (#1513)
Use explicit SEE.IsGoodCapture() method when we know it's a capture (#1528)
Replace GetLS1BIndex() + ResetLS1B() loop calls with a WithoutLS1B() method that 'outs' the index (#1536)
⌛ Time management
Don't search for shorter mates when low on time (#1398)
🟰 Multithreaded search
Replace Task.WhenAll with Task.WhenEach, processing faster results from extra threads (#1545)
🐛 Bugfixes
Engine doesn't becomes unresponsible any more when number of Threads gets close or over the logical cores of the machine (#1292)
Fix crash when multithreading and pondering when GUI doesn't wait for bestmove after a stop (#1394)
Fix cutechess warnings when pondering by avoiding single-move early returns while pondering (#1395)
Use TT recalculated scores everywhere and move TT cutoffs to NegaMax and QSearch methods (#1310)
Distinguish side on initial Zobrist key calculation (#1363)
Ensure that hashfull calculation doesn't fail if TT < 1k items (even if not currently possible) (#1393)
Non-strength winning changes
Make engine <-> GUI time overhead configurable (via EngineGuiCommunicationTimeOverhead) (#1442)
Refuse to parse FENs without (or with more than) one white and one black king (#1351)
Don't stop when a short-enough mate is found, continue trying to find a faster one (#1287)
Make single move score more recognizable (#1461)
Replace first legal move with BestMoveRoot() method when search depth 1 isn't completed (#1449)
Plan for whenever ChessGUI wakes up feeling like sending negative movestogo (#1519)
Lynx 1.7.0 vs other engines:
Berserk 12 | 0/8 | -8 | 8 Games |
Seer 2.7.0 | 0/8 | -8 | 8 Games |
Pingu 2.0.0 | 1/6 | -4 | 6 Games |
Stockfish 15.1 | 0.5/6 | -5 | 6 Games |
Mida 2.2 | 0.5/6 | -5 | 6 Games |
Boychesser 1.0 | 0.5/6 | -5 | 6 Games |
Brainlearn 26.1 | 0/6 | -6 | 6 Games |
Hazard 3.78 | 0/6 | -6 | 6 Games |
ShashChess 34.1 | 0/6 | -6 | 6 Games |
Vafra 12.5 Cfish | 0/6 | -6 | 6 Games |
Obsidian 6.0 | 0/6 | -6 | 6 Games |
Polyfish 231022 | 0/6 | -6 | 6 Games |
Pawn 2.0 | 0/6 | -6 | 6 Games |
CorChess 20231024 | 0/6 | -6 | 6 Games |
Raid 2.78i_X | 0/6 | -6 | 6 Games |
Tofiks 1.3.0 | 4/4 | +4 | 4 Games |
Alpaca 0.2.5 | 4/4 | +4 | 4 Games |
Lux 3.4 | 1/4 | -2 | 4 Games |
RukChess 3.0.16 | 0.5/4 | -3 | 4 Games |
Sirius 5.0 | 0.5/4 | -3 | 4 Games |
Akimbo 0.7.0 | 0/4 | -4 | 4 Games |
---
Lynx 1.9.0 download github:https://github.com/lynx-chess/Lynx/releases/
Comments
Post a Comment