- Update internal book
- Builds with GHC 9.2.1
- Move
cbookview
into a separate repository, removing the build-dep on brick - Update internal book
- Add a Binary instance for Square
- Reimplement move generator in the ST monad with unboxed vector. New function legalPlies' and speedup of roughly 15% and 300% less allocations.
- New functions:
- move :: Square -> Square -> Ply
- promoteTo :: Ply -> PieceType -> Ply
- mapRank :: (Rank -> Rank) -> Square -> Square
- mapFile :: (File -> File) -> Square -> Square
- Game.Chess.UCI: 'setPosition' now also takes the list of plies from start pos
- Fix compilation with GHC 9.0.1
- Speedup of about 1.4 compared to previous release
- PGN: Replace nested tuples with records
- Export mkFile, unFile, mkRank, unRank
- Unexport fromPolyglot and toPolyglot which always should have been internal functions
- Use th-compat to work around compatibility issues
- Remove IsSquare class and add three newtye'd Ints: Square, Rank, File (inspired by issue 5)
- Add HasCallStack to partial doPly and toSAN (thanks Oleg Grenrus)
- instance IsString Position based on fromFEN
- instance Binary Position
- instance Hashable Position
- instance Binary Ply
- instance Unbox Ply
- New functions: rank, file, rankChar, fileChar, toCoord
- New module: Game.Chess.ECO
- Chess.Game.UCI: PV is now an unboxed vector
- Fix half-move counter not being reset on pawn push or capture (Thanks to Oleg Grenrus)
- Fix toFEN not emitting a dash when only king moved (Thanks to Oleg Grenrus)
- Add enPassantSquare (thanks Tochi Obudulu).
- cbookview:
- piece styles
- Key End now moves to the final position of the most popular game
- FEN string display
- Optimize
foldBits
. - Avoid cycles in
bookForest
. - Don't reexport tree related functions from Game.Chess.
- Split SAN functions into new exposed module Chess.Game.SAN.
- Rename
Game.Chess.Polyglot.Book
toGame.Chess.Polyglot
. - New functions
plySource
andplyTarget
. - New tool
cbookview
: terminal chess book opening explorer.
- Split SAN parsing code into a separate module.
- Adapt to VisualStream change in Megaparsec >= 9.
- Use Maybe to indicate that bestmove in UCI can be empty.
- instance Storable QuadBitboard
- Support for letting UCI engines ponder.
- Avoid a branch to further speed up move generation.