Releases: lynx-chess/Lynx
v1.0.0
Getting out from ZeroVer club now that these two conditions are met:
- Lynx has basically reached feature-parity with BBC, engine outcome of
BitBoard Chess Engine in C
YouTube playlist that helped me the most during the initial phases of Lynx development. - .NET 8 GA has been released and therefore Lynx no longer relies on pre-release SDK or library versions.
- π Rewrite NMP (#479, #482, #492, #493, #494)
- π In case of 'ponder-hit', research last depth (#466)
- π Don't clear TT move if no best move is provided: keep old one II (#478)
- β Use PSQTs tuned without explicit piece values (#425)
- β‘ Incremental move sorting (#477)
- β‘ Avoid checking lack of material in static evaluation when the phase is high enough (#490)
Full Changelog: v0.19.0...v1.0.0
v0.19.0
- π Tune LMR reduction (#452)
- π PVS-LMR logic improvement (#456)
- π Implement TT in quiescence search (#308)
- π Don't clear TT move if no best move is provided: keep old one (#462)
- β Check
_searchCancellationTokenSource
in qsearch as well (#454) - π Avoid storing the same move duplicated in both killer moves (#458)
- π Ensure no search depth 0 happens after a 'ponder hit' (#465)
Non-strength winning chnages:
- π Fix
ucinewgame
command when followed bygo
command (#455)
Full Changelog: v0.18.0...v0.19.0
v0.18.0
- β Tune PSQT (#414, #415, #417)
- π Add razoring (#429)
- π Add soft cap history moves score (#442)
- π Revisit and improve Aspiration Windows (#437)
- β‘ Implement PEXT bitboards for bishop and rook attacks (#451)
- π Fix evaluation when checkmate is delivered at the same time 50 moves rule apply (#453)
- π Fix move ordering at high depths/LTC (#448, indirectly #442)
- π Avoid re-searches in IDDFS (#439)
Non-strength winning changes:
- β Normalize eval and add
UCI_ShowWDL
option (#421, #422) - π§Ή Remove
UseOnlineTablebaseInSearch
from UCI (#441)
Full Changelog: v0.17.0...v0.18.0
v0.17.0
-
β Add full PSQT and tapered evaluation (#379)
-
β Add tapered bishop pair bonus (higher in endgames) (#390)
-
π Add Reverse Futility Pruning (RFP) (#382)
-
π If there's a single legal move, make it immediately (#401)
-
β Add basic time management when
MovesToGo
are provided (#409) -
β‘ Various .NET related perf improvements around .NET 8 new capabilities:
-
π Fix
UCI_EngineAbout
string (#408)
Non-strength winning changes:
- Add
printsettings
option to print runtime settingsConfiguration.EngineSettings
(#391) - Re-Add hashfull in last UCI
info
command using an approx value (#394) - Consolidate apple silicon binaries into
osx-arm64
one, addlinux-musl-x64
support (#412)
Full Changelog: v0.16.0...v0.17.0
v0.16.0
- Use standard
depth
concept inNegaMax
method (#377) - β‘ Remove UCI
hashfull
command for performance reasons (#342) - β‘ Force TT array to have a power of two length (#349)
- β‘ TT entry
struct
alignment (#352) - β‘ Remove explicit hardware intrinsics usage (#343)
- β‘ Optimize divisions by power of two (#350)
- β‘ Avoid opposite side offset calculation (#345)
- β‘ Add
MoveGenerator.CanGenerateAtLeastAValidMove
(#360) - β‘ Remove
MoveGenerator
methods fromPosition
(extra indirection) (#367) - β‘ Check sliding pieces attacks last in
IsSquaredAttacked
(#369) - π Fix
IndexOutOfRangeException
whenply >= MaxDepth
(#348) - π Check maxDepth when
btime wtime
orMoveTime
go commands are provided (#361)
Non strength-winning changes:
- Make executables self-contained, without the need of
appsettings.json
(#362) - Parse cli arguments and use them as UCI commands (#370)
- Add warning when invalid fen parsed (#357)
- Remove non ascii char from standard output (#373)
- Add OpenBench support (#339, #372)
- Add Mnps to
perft
anddivide
outputs (#351) - π Fix perft
divide
(#347)
Full Changelog: v0.15.0...v0.16.0
v0.15.0
-
π Exclude promotions from killer moves and take them into account in move ordering (#302)
-
π Enhance depth extension on check (#313)
-
π Increase
MaxDepth
default value to 128 (#292) -
π Add
ToggleBits
method and use it in Make/Unmake moves (#324) -
π Replace
!_isFollowingPV
LMR condition with!pvNode
(#312) -
β‘ Move to .NET 8 (#291)
-
β‘ Implement make/unmake move instead of allocating a new
Position
(#321) -
β‘ Avoid passing
Game.CurrentPosition
reference down search methods (#322) -
β‘ Change threefold repetition detection to 2 repetition detection (#296)
-
β‘ Use
Bmi1.X64.TrailingZeroCount
andPopcnt.X64.PopCount
hardware intrinsics (#330) -
β‘ Don't reload config on file changes (#299)
-
β‘ Disable NLog autoreload (#329)
-
β‘ Make NLog targets
async
(#331) -
β Simplify time management (#288).
This makes this release the first cutechess-friendly one, which means no timeouts when tested with short tc (10+0.1, 8+0.08, etc.) -
π Fix TT probing condition and TT moves score (#298)
Non strength-winning changes:
- π Fix nlog concurrency issue when accessing log files (#286)
- π Fix overflow that was causing negative
hashfull
numbers in uciinfo
commands (#307) - π Fix PV table bug which keeps extra moves in PV after the move where a draw is detected (#297)
- π Fix illegal moves potentially sent when the previous search line is hit (#294, #295)
Full Changelog: v0.14.1...v0.15.0
v0.14.1
Non strength-winning changes:
- π Stop potentially sending uci
info
commands afterbestmove
one by (#284). This was making it a pain to use withcutechess-cli
- Add thread id to logs (#283)
Full Changelog: v0.14.0...v0.14.1
v0.14.0
-
π Add Transposition table (#274) and a variable to disable it (#278), although setting
Hash
to 0 also does the job -
πβ Add support for lichess-hosted online tablebases (#273)
-
π Increase search depth by one when in check (#275)
-
β‘ Convert
Position
intoreadonly struct
and make use ofin
modifier (#258) -
β‘ Remove interpolated logging (#268)
-
β‘ Early loop exit (#267)
-
β‘ Use
[GeneratedRegex]
attribute when possible (#269) -
π Fix PV Table size (#259)
Full Changelog: v0.13.0...v0.14.0
v0.13.0
- πβ Fix positional score of black queens (#212)
- β Improve pawn evaluation: doubled, isolated and passed pawn detection (#201)
- β Improve rook evaluation: open and semi-open files (#202)
- β Improve king evaluation: open and semi-open files and 'shield' bonus (#210)
- β Improve bishop and queen evaluation: mobility (#213)
- β Increase queen value from 9 to 10 pawns (#215)
Non strength-winning changes:
- Add support for macOS 12 Monterey running on ARM (#195)
- Add support for macOS 13 Ventura running on ARM (#214)
Full Changelog: v0.12.0...v0.13.0
v0.12.0
- β Improve positional scores (#192)
Non strength-winning changes:
- π Fix evaluation trace logs (#193)
Full Changelog: v0.11.0...v0.12.0