Releases: DeveloperPaul123/byte-knight
v3.0.0 - Search improvements and bug fixes
This new release of byte-knight
focuses on search improvements and bug fixes. Overall, there is a ~200 elo gain over v2.0.0
.
Search
- Implemented late move reductions
- Implemented internal iterative reductions
- Implemented null move pruning
Other changes and fixes
byte-knight
now outputs the correct principle variation during search instead of just a best move- Added transposition table probing and storing in qsearch.
- Updated search bench FEN suite
- Small code refactoring to make code more ergonomic
- More mate in X tests
- Fixed bug when negative times are given with
go wtime/btime
commend - Fixed bug with history bonus/malus calculation in certain situations
- Added way to track node types during search
- Increased base search bench depth to 8
Comparison to v2.0.0
STC
Elo | 197.30 +- 7.95 (95%)
Conf | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 5000 W: 2855 L: 286 D: 1859
Penta | [6, 104, 519, 1057, 814]
https://pyronomy.pythonanywhere.com/test/2755/
LTC
Elo | 200.24 +- 10.84 (95%)
Conf | 40.0+0.40s Threads=1 Hash=128MB
Games | N: 2500 W: 1421 L: 121 D: 958
Penta | [0, 37, 272, 545, 396]
https://pyronomy.pythonanywhere.com/test/2756/
The following release notes are auto generated:
What's Changed
- chore: v2.0.0 release back-merge by @DeveloperPaul123 in #75
- feat: add release target for apple silicon by @DeveloperPaul123 in #79
- feat: "properly" track nodes during search by @DeveloperPaul123 in #81
- chore: change default search-bench depth to 8 by @DeveloperPaul123 in #83
- feat: implement iir by @DeveloperPaul123 in #86
- chore: update bench FEN suite by @DeveloperPaul123 in #87
- feat: NMP implementation and board fixes by @DeveloperPaul123 in #88
- feat: tt probe in qs by @DeveloperPaul123 in #89
- feat: store moves to tt in QS by @DeveloperPaul123 in #90
- feat: add late move pruning (LMR) by @DeveloperPaul123 in #95
- chore: code cleanup and ergonomics improvements by @DeveloperPaul123 in #96
- chore: add small LMR offset by @DeveloperPaul123 in #97
- chore: reduce LMR scaling factor by @DeveloperPaul123 in #98
- chore: add more mate in x tests by @DeveloperPaul123 in #99
- fix: clamp negative times with
go
uci command by @DeveloperPaul123 in #101 - fix: output correct PV by @DeveloperPaul123 in #103
- chore: move history calc to a function by @DeveloperPaul123 in #104
Full Changelog: v2.0.0...v3.0.0
v2.0.0 - Search and evaluation improvements
The next release of byte-knight
! This release sees improvements in both search and evaluation as well as some bug squashing. Overall ~250/265 elo gain for STC/LTC respectively over v1.0.0
.
Search
- Implemented principle variation search
- History heuristic with history gravity
- Aspiration windows
- Reverse futility pruning
Evaluation
- Re-scaled and fixed minor issues related to MVV-LVA move ordering scoring
- Re-wrote most of the evaluation implementation
- Added an HCE tuner
- Tuned PSQT values for the engine using the
lichess-big-3
data set
Other changes and fixes
- Fixed a bug related to king captures
- Moved to Rust 2024 (stable)
- Improved CI and added ability to generate code coverage metrics (integrated with CodeCov)
- Updated dev dependencies (mostly suggested by Dependi)
Comparison to 1.0.0
STC
Elo | 251.95 +- 12.77 (95%)
Conf | 8.0+0.08s Threads=1 Hash=16MB
Games | N: 3006 W: 2102 L: 238 D: 666
Penta | [6, 52, 245, 472, 728]
https://pyronomy.pythonanywhere.com/test/1831/
LTC
Elo | 264.99 +- 18.94 (95%)
Conf | 40.0+0.40s Threads=1 Hash=128MB
Games | N: 1500 W: 1070 L: 106 D: 324
Penta | [5, 24, 100, 244, 377]
https://pyronomy.pythonanywhere.com/test/1832/
These release notes are auto-generated by Github.
What's Changed
- chore: minor tweaks by @DeveloperPaul123 in #38
- feature: fast modulo for tt indexing by @DeveloperPaul123 in #39
- feat: principal variation search by @DeveloperPaul123 in #45
- fix: compare best to correct alpha by @DeveloperPaul123 in #46
- chore: simplify mvv-lva calculation by @DeveloperPaul123 in #47
- chore: rescale mvv-lva (again) by @DeveloperPaul123 in #48
- fix: mvv-lva scaling and minor issue with scoring for king captures by @DeveloperPaul123 in #49
- feat: add history heuristic by @DeveloperPaul123 in #50
- feat: use history gravity formula for history bonus by @DeveloperPaul123 in #51
- feat: implement aspiration windows by @DeveloperPaul123 in #53
- chore: re-write evaluation in preparation for tuning by @DeveloperPaul123 in #58
- chore: update deps and move to rust 2024 by @DeveloperPaul123 in #59
- fix: properly scaling eval and perspective by @DeveloperPaul123 in #65
- feat: tune on lichess big 3, from 0, 100k epochs by @DeveloperPaul123 in #66
- feat: add reverse futility pruning by @DeveloperPaul123 in #67
- feat: rework just file and add code coverage generation by @DeveloperPaul123 in #73
Full Changelog: v1.0.0...v2.0.0
v1.0.0 - Initial Release!
This is the first release of byte-knight
. Based on play against stash, the estimated ELO of byte-knight
is around ~1800. The following features are implemented in this version:
Search
- Iterative deepening
- Negamax with a/b pruning
- Quiescent search
- Move ordering using basic MVV/LVA table
- PeSTO based evaluation with tapering using the PeSTO PSQT values
- Transposition table (used for move ordering and cutoffs)
Game
I've written my own board representation complete with legal and pseudo-legal move generation as well as magic bitboards for sliding piece attacks. Performance is acceptable and will likely be improved on in the future.
These release notes are auto-generated by Github.
What's Changed
- Fix generating sliding attacks (include edges) by @DeveloperPaul123 in #1
- Fix perft and move generation by @DeveloperPaul123 in #2
- feat: legal move generation by @DeveloperPaul123 in #3
- feat: add open bench support by @DeveloperPaul123 in #4
- fix: issues in move ordering and search by @DeveloperPaul123 in #5
- fix: standing pat eval was backwards by @DeveloperPaul123 in #6
- feat: re-enable qsearch by @DeveloperPaul123 in #7
- fix: issue with pin ray calculation in certain situations by @DeveloperPaul123 in #10
- chore: rename byte_board -> chess by @DeveloperPaul123 in #11
- feat: implement pesto evaluation using psqt tables by @DeveloperPaul123 in #13
- feat: add support for basic search cancelation by @DeveloperPaul123 in #14
- chore: update how tt-move scoring is done. by @DeveloperPaul123 in #16
- fix: open-bench crashes by @DeveloperPaul123 in #17
- fix: clippy suggestions by @DeveloperPaul123 in #15
- refactor: simplify the input hander by @DeveloperPaul123 in #18
- fix: remove unsafe code by @DeveloperPaul123 in #20
- chore: minor tweaks and fixes by @DeveloperPaul123 in #21
- refactor: restructure project by @DeveloperPaul123 in #23
- chore: update ci runner images to be explicit by @DeveloperPaul123 in #25
- chore: add documentation by @DeveloperPaul123 in #27
- fix: store tt table per game, not per search by @DeveloperPaul123 in #28
- chore: nuke search by @DeveloperPaul123 in #29
- feat: re-add qsearch to main search by @DeveloperPaul123 in #30
- feat: implement (again) transposition table by @DeveloperPaul123 in #31
- feat: shrink the tt entry object size by @DeveloperPaul123 in #32
- fix: bug in psqt by @DeveloperPaul123 in #34
- chore: add unit tests for MVV/LVA eval for ordering by @DeveloperPaul123 in #35
- chore: prep for 1.0.0 release by @DeveloperPaul123 in #36
New Contributors
- @DeveloperPaul123 made their first contribution in #1
Full Changelog: https://github.com/DeveloperPaul123/byte-knight/commits/v1.0.0