Releases: nvzqz/Sage
Releases · nvzqz/Sage
v2.5.2
v2.5.1
v2.5.0
Release Notes
New Features
- Added pinned(for:) method to Board
- Added
between(_:)
,isBetween(start:end:)
andline(with:)
methods to Square - Added
hasMoreThanOne
to Bitboard
Enhancements
- Made legal move generation/checking faster for king pieces
Fixes
- Fixed conditions for castling so that a king cannot castle in check and it can't castle through squares that are being attacked
v2.4.1
v2.4.0
v2.3.0
v2.2.0
v2.1.0
Release Notes
New Features
- Added static
white
,black
,kingside
, andqueenside
constants toCastlingRights
andCastlingRights.Right
- Added
canCastle(for:)
methods toCastlingRights
that take aColor
orBoard.Side
- Added
init(color:)
andinit(side:)
toCastlingRights
v2.0.1
v2.0.0
Release Notes
Enhancements
- Performance greatly improved when performing operations with
Board
New Features
-
Most significant bit operations to
Bitboard
:- Properties:
msb
,msbIndex
,msbSquare
- Methods:
popMSB()
,popMSBIndex()
,popMSBSquare()
- Properties:
-
Board
initializer from arrays of piece charactersBoard(pieces: [["r", "n", "b", "q", "k", "b", "n", "r"], ["p", "p", "p", "p", "p", "p", "p", "p"], [" ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " "], [" ", " ", " ", " ", " ", " ", " ", " "], ["P", "P", "P", "P", "P", "P", "P", "P"], ["R", "N", "B", "Q", "K", "B", "N", "R"]])
-
Parsing PGN string data with
PGN(parse:)
-
Exporting PGN string data with
exported()
-
New
Player
struct
Breaking Changes
Piece
has been changed to a struct type with nested aKind
type- Values such as
isKing
andrelativeValue
now belong toKind
- Values such as
- The argument-less
bitboard()
method forBoard
has been changed tooccupiedSpaces
- Replaced
Game.Mode
with twoPlayer
instances for a game
Fixes
- Calling
redoMove()
would sometimes cause a crash if theGame
instance had no available moves (e.g. was over). - The
Board
playground view for iOS and tvOS was flipped vertically canPromote(_:)
forPiece
didn't take king into account- Castling rights weren't restored in
undoMove()
execute(move:)
didn't check the promotion piece's kind