This release was long overdue and represents a significant improvement over v3.0.0. Many new evaluation and search features have been implemented along with bug fixes and significant refactors and architectural changes. Based on the comparison to the previous release, I estimate v4.0.0 of byte-knight to be around ~2750-2800 ELO.
STC versus v3.0.0
Elo | 438.94 +- 13.65 (95%)
Conf | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 5020 W: 4335 L: 58 D: 627
Penta | [0, 4, 82, 567, 1857]
LTC versus v3.0.0
Elo | 431.08 +- 16.65 (95%)
Conf | 40.0+0.40s Threads=1 Hash=128MB
Games | N: 3000 W: 2558 L: 21 D: 421
Penta | [1, 1, 32, 392, 1074]
The following release notes are auto-generated.
What's Changed
- feat: implement support for isolated pawns by @ptsouchlos in #159
- chore: project restructure by @ptsouchlos in #161
- fix: qsearch conditions by @ptsouchlos in #164
- feat: make perft part of the main engine binary by @ptsouchlos in #162
- fix: lmr calc by @ptsouchlos in #165
- fix: bug with where we ignore draws by @ptsouchlos in #169
- chore(deps): bump csv from 1.3.1 to 1.4.0 by @dependabot[bot] in #177
- chore(deps): bump clap from 4.5.48 to 4.5.53 by @dependabot[bot] in #179
- chore(deps): bump indicatif from 0.18.0 to 0.18.3 by @dependabot[bot] in #178
- chore(deps): bump criterion from 0.7.0 to 0.8.0 by @dependabot[bot] in #180
- chore(deps): bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #182
- chore(deps): bump actions/cache from 4 to 5 by @dependabot[bot] in #181
- chore(deps): bump console from 0.16.1 to 0.16.2 by @dependabot[bot] in #183
- chore(deps): bump clap from 4.5.53 to 4.5.54 by @dependabot[bot] in #184
- chore: refactor attacks and other parts of chess crate by @ptsouchlos in #185
- feat: integrate attacks and rays mods into move gen by @ptsouchlos in #186
- chore: update GitHub username by @ptsouchlos in #187
- chore(deps): bump colored from 3.0.0 to 3.1.1 by @dependabot[bot] in #190
- fix: do not search positions w/no legal moves by @ptsouchlos in #191
- chore(deps): bump thiserror from 2.0.17 to 2.0.18 by @dependabot[bot] in #192
- feat: add bishop pair bonus by @ptsouchlos in #194
- feat: add king safety evaluation by @ptsouchlos in #196
- fix: release artifact naming by @ptsouchlos in #199
- chore: remove PEXT by @ptsouchlos in #198
- chore(deps): bump clap from 4.5.54 to 4.5.56 by @dependabot[bot] in #203
- chore: move engine cli to it's own folder by @ptsouchlos in #205
- chore(deps): bump criterion from 0.8.1 to 0.8.2 by @dependabot[bot] in #206
- chore(deps): bump clap from 4.5.56 to 4.5.57 by @dependabot[bot] in #208
- chore(deps): bump anyhow from 1.0.100 to 1.0.101 by @dependabot[bot] in #207
- fix: remove binary by @ptsouchlos in #214
- chore: simplify rand usage by @ptsouchlos in #210
- chore: update scripts and add more failure data by @ptsouchlos in #215
- chore: make opposite a member function by @ptsouchlos in #213
- chore(deps): bump indicatif from 0.18.3 to 0.18.4 by @dependabot[bot] in #218
- chore(deps): bump clap from 4.5.57 to 4.5.58 by @dependabot[bot] in #217
- fix: properly reset half move clock by @ptsouchlos in #220
- feat: add threats to eval by @ptsouchlos in #219
- fix: pvs logic by @ptsouchlos in #221
- chore: disable pv assertions by @ptsouchlos in #222
- fix: differentiate scores for mates and "infinity" by @ptsouchlos in #223
- chore(deps): bump clap from 4.5.58 to 4.5.60 by @dependabot[bot] in #229
- chore(deps): bump anyhow from 1.0.101 to 1.0.102 by @dependabot[bot] in #228
- fix: make min mate ply relative not depth relative by @ptsouchlos in #230
- fix: only store tt move if valid by @ptsouchlos in #232
- fix: use ply in qsearch by @ptsouchlos in #231
- fix: make tt score look up and compare ply independent by @ptsouchlos in #244
- feat: implement razoring by @ptsouchlos in #225
- chore(deps): bump actions/upload-artifact from 6 to 7 by @dependabot[bot] in #245
- fix: properly handle check in qsearch by @ptsouchlos in #247
- fix: double node counting in tt cutoff by @ptsouchlos in #249
- chore: separate UCI loop from engine struct by @ptsouchlos in #243
- feat: implement mate distance pruning by @ptsouchlos in #248
- feature: implement piece mobility evaluation by @ptsouchlos in #250
- feat: tempo bonus for HCE by @ptsouchlos in #251
- chore: add bench command for tuner by @ptsouchlos in #254
- feat: add rook open/semi open file evaluation by @ptsouchlos in #253
- chore: add new failure data by @ptsouchlos in #256
- feat: improve hce-tuner performance by @ptsouchlos in #257
- feat: add stop handling in tuner by @ptsouchlos in #259
- feature: king pawn shield and storm eval by @ptsouchlos in #258
- feature: add killers for move ordering by @ptsouchlos in #261
- chore: remove bb while loops by @ptsouchlos in #260
- chore(deps): bump clap from 4.5.60 to 4.6.0 by @dependabot[bot] in #264
- chore(deps): bump shadow-rs from 1.7.0 to 1.7.1 by @dependabot[bot] in #263
- chore(deps): bump console from 0.16.2 to 0.16.3 by @dependabot[bot] in #262
- chore: remove
MoveGeneratorstruct and refactor movegen by @ptsouchlos in #269 - feat: track seldepth in search by @ptsouchlos in #271
- feat: implement hashfull for tt table by @ptsouchlos in #272
- chore: staged movegen with a fix in qs by @ptsouchlos in #273
- chore: improve benchmark setup for chess crate by @ptsouchlos in #276
- chore: refactor move to be 16 bit by @ptsouchlos in #277
- feat: compress tt entry size by @ptsouchlos in #278
- feat: tt buckets with aging by @ptsouchlos in #279
- chore: add new failure test data by @ptsouchlos in #280
- feat: implement tt prefetch by @ptsouchlos in #281
- chore: remove inclusive loop by @ptsouchlos in #284
- chore: refactor board representation by @ptsouchlos in #283
- chore(movegen): refactor movegen to support tacticals by @ptsouchlos in #285
- chore: tweak lmp params and add start of tunable params by @ptsouchlos in #291
- chore: update readme and add dataset by @ptsouchlos in #293
- chore(deps): bump codecov/codecov-action from 5 to 6 by @dependabot[bot] in #295
- feat: initial try at a move picker by @ptsouchlos in #294
- chore: update readme with move picker impl by @ptsouchlos in #297
- chore: move uci handler to engine cli by @ptsouchlos in #298
- fix: better handling of epd line errors by @ptsouchlos in #300
- feat: add new "legal" module in chess crate by @ptsouchlos in #301
- fix: tt hash pin checks by @ptsouchlos in #302
- chore: interleaved tune, 4.9k epochs by @ptsouchlos in #303
- feat: add way to interleave data with hce-tuner by @ptsouchlos in #304
- chore(deps): bump extractions/setup-just from 3 to 4 by @dependabot[bot] in #306
- chore(deps): bump toml from 0.8.23 to 1.1.2+spec-1.1.0 by @dependabot[bot] in #307
- chore: refactor time control and search limits by @ptsouchlos in #310
- chore(deps): bump rand from 0.10.0 to 0.10.1 by @dependabot[bot] in #313
- chore(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #312
- chore: adjust bestmove scaling by @ptsouchlos in #311
- chore: refactor PVS to be easier to read by @ptsouchlos in #315
- chore: no NMP with upper bound TT entry hits by @ptsouchlos in #316
- chore: first pass at SEE with qs SEE pruning by @ptsouchlos in #317
- chore: minor readme and bench tweaks by @ptsouchlos in #319
- feat: move loop qs delta pruning by @ptsouchlos in #320
- feat: split tactical moves into good/bad in move picker by @ptsouchlos in #318
- chore: add futility pruning by @ptsouchlos in #322
- feat: check extensions by @ptsouchlos in #324
- chore(deps): bump rayon from 1.11.0 to 1.12.0 by @dependabot[bot] in #328
- chore(deps): bump clap from 4.6.0 to 4.6.1 by @dependabot[bot] in #326
- chore(deps): bump shadow-rs from 1.7.1 to 2.0.0 by @dependabot[bot] in #327
- fix: detect illegal ep when making moves by @ptsouchlos in #330
- chore: add failures documentation by @ptsouchlos in #329
- fix: reject invalid EP squares when parsing FENs by @ptsouchlos in #332
Full Changelog: v3.0.0...v4.0.0