NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4728 most downloaded on pub.dev
Provides chess and chess variants rules and operations including chess move generation, read and write FEN, read and write PGN.
Last release 9 days ago
29 Sep 2026
Release timing varies
gaps range from 9 days to 10 months
Nearly every release is documented
notes for 24 of 24 stable releases
Nothing withdrawn
no release was ever pulled
3 years old
24 releases · first in 2023
One column per quarter.
Add Zobrist hashing: Position.zobristHash(), ported from shakmaty. The hash of a standard chess position is Polyglot compatible, and the variants exte
Position.zobristHash(), ported from shakmaty. The hash
of a standard chess position is Polyglot compatible, and the variants extend
it the same way shakmaty does.humanReadableZobristHash, to print a hash as an unsigned 64 bit
hexadecimal string.EnPassantMode and Position.epSquareOf, to select which en passant
squares are reported (fully legal, pseudo-legal/X-FEN, or always/FEN).Introduces parseMultiGameLazy and PgnLazyGame for lazy parsing of PGN files. These APIs allow you to iterate through games in a PGN file without parsi
parseMultiGameLazy and PgnLazyGame for lazy parsing of PGN
files. These APIs allow you to iterate through games in a PGN file without
parsing the moves (only the headers).Remove fast_immutable_collections dependency. Public APIs that previously returned IMap or IList now return standard Dart collections:
Breaking changes:
fast_immutable_collections dependency. Public APIs that previously returned IMap or IList now return standard Dart collections:
Position.legalMoves returns Map<Square, SquareSet> (was IMap<Square, SquareSet>)Board.materialCount returns ByRole<int> / Map<Role, int> (was IMap<Role, int>)Castles.rooksPositions returns BySide<ByCastlingSide<Square?>> / Map (was IMap-backed)Castles.paths returns BySide<ByCastlingSide<SquareSet>> / Map (was IMap-backed)PgnComment.shapes returns List<PgnCommentShape> (was IList<PgnCommentShape>)makeLegalMoves() returns Map<Square, Set<Square>> (was IMap<Square, ISet<Square>>)BySide<T>, ByRole<T>, and ByCastlingSide<T> typedefs are now aliases for standard Map types.Pockets.value is removed; use Pockets.of(side, role), Pockets.count(role), Pockets.size, Pockets.hasQuality(side), and Pockets.hasPawn(side) instead.The Position class remains completely immutable. Only the return types of some
methods have changed to use standard Dart collections instead of immutable
collections.
Fix Crazyhouse.isGameOver and Crazyhouse.isCheckmate in positions where all legal moves are drop moves.
Crazyhouse.isGameOver and Crazyhouse.isCheckmate in positions where all legal moves are drop moves.Add SquareSet explosionSquares(Move move) method to Atomic class.
SquareSet explosionSquares(Move move) method to Atomic class.Fix a bug in Horde.hasInsufficientMaterial that would cause a stack overflow if only one pawn was left.
Horde.hasInsufficientMaterial that would cause a stack overflow if only one pawn was left.Fix an en passant bug in crazyhouse and atomicchess variants. Now the perft tests cover these variants as well.
Add the current FEN information to PlayException messages.
PlayException messages.Rename makeLegalMove parameter isChess960 to includeAlternateCastlingMoves and invert its meaning. It now defaults to false.
makeLegalMove parameter isChess960 to
includeAlternateCastlingMoves and invert its meaning. It now defaults to
false.Remove the type parameter from Position class.
Position class.Fixes castling rights parsing from FEN.
unmovedRooks to castlingRights.- Fixes bugs in the PGN parser.
- PieceKind is now an enum.
PieceKind is now an enum.Square is now an extension type.
Square is now an extension type.File and Rank types.Position.isLegal that was generating illegal king moves.Position.normalizeMove that could turn an illegal move into a legal castling move.Add Piece.kind, Role.letter and Role.uppercaseLetter getters.
Migrate SquareSet to an extension type.
Upgrade fast_immutable_collections to version 10.0.0.
Rename Rules to Rule and add rule getter to Position
Fix parsing PGN from smartchess
PgnNodeData is no longer specified as immutable
ply getter to PositionPgnNodeData is no longer specified as immutablePgnComment really immutableAdd PgnNodeData as a bound to PgnNode generic type parameter
PgnNodeData as a bound to PgnNode generic type parameterrename Headers to PgnHeaders for consistency
Headers to PgnHeaders for consistencyPgnGame isn't a const constructor anymoreparseMultiGamePgn signature for consistencytoSan and playToSan are now deprecated.
makeSan and makeSanUnchecked methods to the Position class.toSan and playToSan are now deprecated.- Initial version.
Your coding agent can read these notes before it upgrades. Set up the MCP server →