Skip to content

v1.8.0

Latest
Compare
Choose a tag to compare
@github-actions github-actions released this 20 Dec 17:15
· 30 commits to main since this release

πŸ” Search

  • Improving: LMP (#1129)
  • Improving: RFP (#1130, #1133)
  • Improving: LMR (#1135)
  • NMP, tweak reduction using eval - beta (#1139)
  • NMP: Use the right score for TT condition (#1268)
  • LMR: reduce more on cutnode (#1233)
  • LMR: avoid when being checkmated (#1231)
  • LMR: increase pv min moves 2 (#1230)
  • History: History_BestScoreBetaMargin 80 -> 60 (#1118)
  • History: increase bonus when best score is over beta by some margin (#1110)
  • History: increase bonus when static eval is lower than alpha (#1123)
  • Save static eval in TT (#1084, #1085)
  • Aspiration windows: fail high reduction (#800, #1285)

βŒ› Time management

  • Add node time management (#1203, #1206)
  • Add best move stability (#1211)
  • Add score stability (#1223)
  • Soft limit <= hard limit (#1210)

⚑ Speedups

  • Move to .NET 9 (#1108)
  • Don't attempt continuation history on root moves (#1065)
  • Use Unsafe.Add for PSQT() (#1153)
  • Make TaperedEvaluationTerm fields constant (#1174)
  • Make TT (wrapper) a readonly struct (#1200)
  • Flatten killer moves array (and stack-allocate it) (#1247)
  • Minimal speedup in go UCI command parsing (#1264)

πŸ› Bug fixes

  • Clear PlyStackEntry shared array on return (#1182)
  • Don't allow the search to stop if no best move is found (#1251)
  • IDDFS finishes some depths with no moves (#1266)
  • Incorrect (too negative) mate scores when being checkmated (#1271)
  • Make sure staticEval var always gets initialized as part of the search (#1272)
  • Prevent aspiration windows to go outside of [MinEval, MaxEval] after window overflow (#1275)

🟰 Multithreaded search

  • Add support for multi-threaded search: basic lazy SMP implementation (#1263)

    Threads # 1 2 4 8
    ELO @ 8+0.08 - +100.96 +195.65 +263.42
    ELO @ 40+0.4 - +83.35 +167.44 +220.54
    NPS 1.21 Mnps 2.47 Mnps 4.88 Mnps 10.07 Mnps

    Image

    More detailed results can be found here.

Non strength-winning changes

  • Allow non-power of two Hash sizes, implemented via 'fixed-point multiplication trick' (#1072)
  • Improve and standardize nps reporting (#1081)
  • Use the total max ply as selfdepth value instead of last search's max ply (#1289)
  • Make bench quiet by default, and add verbosebench (#1286)
  • Various big refactorings to accommodate multithreaded search (#1147, #1184, #1201, #1262)

Full Changelog: v1.7.0...v1.8.0