Skip to content

Releases: lynx-chess/Lynx

v1.0.0

16 Nov 12:16
Compare
Choose a tag to compare

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

27 Oct 09:22
Compare
Choose a tag to compare
  • πŸ” 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 by go command (#455)

Full Changelog: v0.18.0...v0.19.0

v0.18.0

21 Oct 17:00
Compare
Choose a tag to compare
  • βš– 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

19 Sep 10:18
Compare
Choose a tag to compare
  • βš– 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:

    • Improve position UCI command parsing (#410, #405), improve position
    • Improve other commands parsing (#411)
    • Use FrozenDictionarys where possible (#403)
    • Use C#12 collection literals (#393)
  • πŸ› Fix UCI_EngineAbout string (#408)

Non-strength winning changes:

  • Add printsettings option to print runtime settings Configuration.EngineSettings (#391)
  • Re-Add hashfull in last UCI info command using an approx value (#394)
  • Consolidate apple silicon binaries into osx-arm64 one, add linux-musl-x64 support (#412)

Full Changelog: v0.16.0...v0.17.0

v0.16.0

26 Aug 21:02
Compare
Choose a tag to compare
  • Use standard depth concept in NegaMax 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 from Position (extra indirection) (#367)
  • ⚑ Check sliding pieces attacks last in IsSquaredAttacked (#369)
  • πŸ› Fix IndexOutOfRangeException when ply >= MaxDepth (#348)
  • πŸ› Check maxDepth when btime wtime or MoveTime 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 and divide outputs (#351)
  • πŸ› Fix perft divide (#347)

Full Changelog: v0.15.0...v0.16.0

v0.15.0

13 Aug 20:54
Compare
Choose a tag to compare
  • πŸ” 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 and Popcnt.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 uci info 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

30 Jul 01:15
Compare
Choose a tag to compare

Non strength-winning changes:

  • πŸ› Stop potentially sending uci info commands after bestmove one by (#284). This was making it a pain to use with cutechess-cli
  • Add thread id to logs (#283)

Full Changelog: v0.14.0...v0.14.1

v0.14.0

25 Jul 23:27
Compare
Choose a tag to compare
  • πŸ” 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 into readonly struct and make use of in 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

25 Nov 12:23
Compare
Choose a tag to compare
  • πŸ›βš– 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

07 Oct 00:20
Compare
Choose a tag to compare
  • βš– Improve positional scores (#192)

Non strength-winning changes:

  • πŸ› Fix evaluation trace logs (#193)

Full Changelog: v0.11.0...v0.12.0