- Added helper methods for handling UCI moves.
- Added
Square::relative_to
to get a square relative to some color.
- Added setters for the halfmove clock and fullmove number fields.
- Fixed bug where en passant was not correctly validated when parsing and building
Board
s.
- Fixed bug where
Board::is_legal
said castles while in check were legal.
- Added methods for obtaining Chess960 start positions from their Scharnagl number.
- Added PEXT bitboards using the BMI2 PEXT intrinsic. Potentially faster than the default algorithm. Enable using the
pext
feature. - Added
Board::hash_without_ep
method for fast equivalence checks excluding the en passant square. - Added
Board::same_position
to check if two boards are equivalent under FIDE rules. - Added
Board::colored_pieces
, a shorthand forboard.colors(color) & board.pieces(piece)
. - Added
BitBoard::is_subset
,BitBoard::is_superset
, andBitBoard::is_disjoint
.
BitBoard
s now operate in a more set-wise manner instead of acting like au64
. Bit operators changed to match set operators.BitBoard::popcnt
renamed toBitBoard::len
for consistency with other data structures.BoardBuilder
'sfullmove_number
field changed to au16
for usability reasons.Board
'sFromStr
implementation now parses both FEN and Shredder FEN.
BitBoard
no longer implementsIterator
directly.- Sliding move functions are no longer
const
by default; Use theconst
variants if required. - Unnecessary "try" variants on
Board
removed; The risk of panicking is accepted when*_unchecked
methods are called.
- Overflow bug in
Square::try_offset
fixed. FenParseError
is no longer unnameable.- Fixed incorrect errors being returned in FEN parsing.
- Fixed some errors not being produced in FEN parsing.