shakmaty-syzygy
A Rust library to probe Syzygy endgame tablebases, based on shakmaty.
Syzygy tables allow optimal play under the 50-move rule. Tables are available for positions with up to 6 (and experimentally 7) pieces.
Example
use Chess;
use Fen;
use ;
let mut tables = new;
tables.add_directory?;
let pos: Chess = "8/8/8/8/B7/N7/K2k4/8 b - - 0 1"
.?
.position?;
let wdl = tables.probe_wdl?;
assert_eq!;
let dtz = tables.probe_dtz?;
assert_eq!;
Documentation
Changelog
- 0.3.0
- Rename
Tablebases
toTablebase
. - Group file extension and magic as
TableType
inSyzygy
trait.
- Rename
- 0.2.2
- Implement support for wide DTZ values. These are required for some long 7 piece endgames.
- Fix panic on corrupted table.
- 0.2.1
- Should not panic on corrupted tables (even in debug mode).
- Switch from fnv to fxhash.
- 0.2.0
- Replace
Wdl::from(dtz)
withWdl::from_dtz_after_zeroing(dtz)
. - Remove
isize
conversions ofDtz
andWdl
. - Fix WDL of lone king in atomic chess.
- Support stable rust.
- Replace
- 0.1.4
- Fix ordering of lead pawns.
- 0.1.3
- Add support for Atomic chess and Giveaway.
- 0.1.2
- Cosmetic tweak to DTZ in case of mate in 1.
- 0.1.1
- Optional
serde-1
feature. - Add
Dtz.add_plies()
.
- Optional
- 0.1.0
- First release.
Acknowledgement
Thanks to Ronald de Man for his Syzygy tablebases. The probing code is closely based on his implementation for Stockfish.
License
shakmaty-syzygy is licensed under the GPL-3.0 (or any later version at your option). See the COPYING file for the full license text.