Skip to content

Latest commit

 

History

History
259 lines (166 loc) · 5.84 KB

CHANGELOG.md

File metadata and controls

259 lines (166 loc) · 5.84 KB

Changelog for shakmaty-syzygy

v0.25.2

  • Let Tablebase use normalized material keys for each table.
  • Small optimizations and documentation improvements.

v0.25.1

  • Add Tablebase::with_mmap_filesystem() behind optional mmap feature.
  • Add Tablebase::with_filesystem() and provide abstractions to implement custom methods to open and read table files.
  • Add basic tracing instrumentation.
  • Relax eager check for too many pieces, so that some 8 piece positions with captures can be resolved.
  • No longer set POSIX_FADVISE_RANDOM by default. Can be re-enabled by using OsFilesystem::with_advise_random().
  • Optimize probe performance by joining consecutive reads and keeping symbol tables in memory.

v0.25.0

  • Update shakmaty to 0.27.
  • Validate file sizes when adding table files.
  • Propagate I/O error kind when failing to add individual table files.

v0.24.0

  • Update shakmaty to 0.26.

v0.23.0

  • Update shakmaty to 0.25.

v0.22.0

  • Update shakmaty to 0.24.
  • Reduce size of error types by boxing unlikely errors.
  • Use #[track_caller] for panicking functions.

v0.21.0

  • Update shakmaty to 0.23.

v0.20.0

  • Update shakmaty to 0.22.
  • Remove the backtrace feature. ProbeError::CorruptedTable now always captures a backtrace when the RUST_BACKTRACE or RUST_LIB_BACKTRACE environment variables are set.
  • Fix compilation on 32-bit Unix systems.

v0.19.1

yanked

v0.19.0

  • Update shakmaty to 0.21.

v0.18.0

  • Introduce MaybeRounded and AmbiguousWdl, ensuring that DTZ rounding is handled.
  • Add Tablebase::max_pieces().
  • Dtz::before_zeroing() is no longer generic.
  • Dtz::add_plies() now takes u32. Add checked and saturating versions.
  • Fix ProbeError::CorruptedTable should be #[non_exhaustive] when backtrace feature not enabled.
  • Optimize initialization of internal constants, no longer depending on on lazy_static.

v0.17.0

  • Update shakmaty to 0.20.

v0.16.1

  • Update shakmaty to 0.19.

v0.15.0

  • Update shakmaty to 0.18.

v0.14.0

  • Update shakmaty to 0.17.
  • Fix panic when lead pawns are corrupted.

v0.13.1

  • Explicit #![forbid(unsafe_code)].
  • Update dependencies.

v0.13.0

  • Update shakmaty to 0.16.
  • No longer depend on failure. Instead, nightly Rust and the backtrace feature are required to get backtraces for corrupted tables.
  • Validate file size when opening table files.

v0.12.1

  • Update dependencies.

v0.12.0

  • Update shakmaty to 0.15.

v0.11.1

  • Update dependencies.

v0.11.0

  • Update shakmaty to 0.14.
  • Add reimplementation of Fathom as example.

v0.10.0

  • Update shakmaty to 0.13.
  • Use FADV_RANDOM on tablebase files.

v0.9.0

  • Update shakmaty to 0.12.
  • Tablebase::add_directory() now returns the number of added files.
  • Added Tablebase::add_file().
  • ProbeError and Metric are now public. Other previously hidden APIs are no longer exposed.
  • Various refactorings, performance improvements and dependency updates.

v0.8.1

  • Optimize reading block lengths.
  • More internal refactorings.
  • Add benchmark.

v0.8.0

  • Update shakmaty to 0.11.x.
  • Add Syzygy::MAX_PIECES.
  • More efficient Tablebase::best_move().
  • Internal refactorings following tablebase rewrite in Cfish.

v0.7.0

  • Update shakmaty to 0.10.x.

v0.6.0

  • Update shakmaty to 0.9.x. Minimum Rust version is now 1.27.0.

v0.5.2

  • Fix Wdl::from_dtz_after_zeroing(Dtz(100)).

v0.5.1

  • Fix out of bounds panic when probing KPPPPPvK.
  • Fix error when first group in giveaway should have had more than two identical pieces.
  • Only 6 pieces supported in antichess variants. Return SyzygyError::TooManyPieces instead of potential panic.

v0.5.0

  • More contextual information for errors (table, backtrace, invalid magic header bytes).
  • Update to shakmaty 0.8.x.
  • Provide a target for cargo fuzz. Fix several panics caused by initializing and probing corrupted tables:
    • Panic when reference pawn is missing.
    • Panic when subtable material is not consistent with first file.
    • Integer overflow when reading symlen.
    • Integer overflow when min_symlen or max_symlen are out of bounds.
    • Integer overflow when computing block_length_size.
    • Stack overflow when recursively reading symlen.

v0.4.5

  • Make better use of positioned-io (cursor, remove RandomAccessFile).

v0.4.4

  • Remove work around from 0.3.1.
  • Minor internal optimizations and cleanups.

v0.4.3

  • Fix DTZ off-by-one in some positions when there is mate in 1.
  • Fix DTZ off-by-one in antichess endgames, when there is a threat to force a capture leading to a blessed loss.
  • Add Tablebase::best_move().

v0.4.2

  • Fix DTZ in en passant positions.
  • Minimum Rust version 1.26.0.
  • Use guaranteed lossless versions from u16 to usize.
  • Provide i128 conversions for Wdl and Dtz.

v0.4.1

  • Fix debug assertion for Dtz(0).add_plies().

v0.4.0

  • Update to shakmaty 0.7.x, which has bugfixes with regard to insufficient material.

v0.3.1

  • Work around compiler bug in release mode.

v0.3.0

  • Rename Tablebases to Tablebase.
  • Group file extension and magic as TableType in Syzygy trait.

v0.2.2

  • Implement support for wide DTZ values. These are required for some long 7 piece endgames.
  • Fix panic on corrupted table.

v0.2.1

  • Should not panic on corrupted tables (even in debug mode).
  • Switch from fnv to fxhash.

v0.2.0

  • Replace Wdl::from(dtz) with Wdl::from_dtz_after_zeroing(dtz).
  • Remove isize conversions of Dtz and Wdl.
  • Fix WDL of lone king in atomic chess.
  • Support stable rust.

v0.1.4

  • Fix ordering of lead pawns.

v0.1.3

  • Add support for Atomic chess and Giveaway.

v0.1.2

  • Cosmetic tweak to DTZ in case of mate in 1.

v0.1.1

  • Optional serde-1 feature.
  • Add Dtz.add_plies().

v0.1.0

  • First release.