Releases: thewizardplusplus/go-chess-models
Release list
v1.9.0
Adding the boards.BitBoard structure; adding the go-chess-moves and go-chess-comparator tools.
Change Log
- new features:
- the
boards.BitBoardstructure:- add the
boards.BitBoardstructure; - add the
boards.BitBoardstructure to thego-chess-perfttool;
- add the
- add the
go.modfile; - tools:
- improve the
go-chess-perfttool:- improve the documentation;
- improve the options;
- validate the
deepoption;
- add the
go-chess-movestool; - add the
go-chess-comparatortool;
- improve the
- the
- refactoring:
- fix the code style with the
golangci-linttool;
- fix the code style with the
- unit testing:
- improve the tests of the
ApplyMove()methods;
- improve the tests of the
- examples:
- move the tests of the
boardspackage to the right place.
- move the tests of the
Features
- representing the board:
- as an associative array of pieces with their positions as keys;
- as a plain array of pieces with exact correspondence array indices to piece positions;
- as a set of integers corresponding to a particular combination of piece color and type, and where each bit corresponds to a particular piece position (so-called a bitboard);
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- move restrictions (abandoned moves):
- pawn double-move;
- en passant capture;
- promotion;
- castling;
- perft function;
- using an abstraction of a piece;
- Forsyth-Edwards Notation:
- parsing:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- parsing:
- utilities:
- utility for counting all possible moves (based on the perft function);
- utility for generating all possible chess moves;
- utility for comparing the generation of all possible chess moves by different board representations.
v1.8.1
Adding the boards.WrapBasePieceStorage function that universally implements the Pieces() and CheckMove() methods of the common.PieceStorage interface if necessary and refactoring.
Change Log
- new features:
- the
boards.WrapBasePieceStoragefunction that universally implements thePieces()andCheckMove()methods of thecommon.PieceStorageinterface if necessary;
- the
- refactoring:
- separate out the following packages:
- separate out the
commonpackage:- move the
chessmodels.Colortype to thecommonpackage; - move the
chessmodels.Kindtype to thecommonpackage; - move the
chessmodels.Positionstructure to thecommonpackage; - move the
chessmodels.Movestructure to thecommonpackage; - move the
chessmodels.CheckMove()function to thecommonpackage; - move the
chessmodels.Sizestructure to thecommonpackage; - move the
chessmodels.Pieceinterface to thecommonpackage; - move the
chessmodels.PieceStorageinterface to thecommonpackage; - move the
chessmodels.Pieces()function to thecommonpackage;
- move the
- separate out the
boardspackage:- move the
chessmodels.BaseBoardstructure to theboardspackage; - move the
chessmodels.MapBoardstructure to theboardspackage; - move the
chessmodels.SliceBoardstructure to theboardspackage;
- move the
- add aliases to the
chessmodelspackage for the moved entities:- mark them as deprecated;
- separate out the
- add the
common.BasePieceStorageinterface; - add the
common.PieceGroupGetterinterface; - add the
common.MoveCheckerinterface;
- separate out the following packages:
- unit testing:
- use the
chessmodels.MockPieceStoragestructure in the tests of thechessmodels.CheckMove()function.
- use the
Features
- representing the board:
- as an associative array of pieces with their positions as keys;
- as a plain array of pieces with exact correspondence array indices to piece positions;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- perft function;
- using an abstraction of a piece;
- Forsyth–Edwards Notation:
- parsing:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- parsing:
- utilities:
- utility for counting all possible moves (based on the perft function).
v1.8
Adding the chessmodels.SliceBoard structure; optimization.
Change Log
- new features:
- the
chessmodels.BaseBoardstructure that stores a board size; - the
chessmodels.SliceBoardstructure:- rename the
chessmodels.Boardstructure tochessmodels.MapBoard; - add the
chessmodels.SliceBoardstructure; - add the
chessmodels.SliceBoardstructure to thego-chess-perfttool; - make the
chessmodels.Boardtype redirect to thechessmodels.SliceBoardstructure;
- rename the
- transform the
Pieces()methods of thechessmodels.MapBoardandchessmodels.SliceBoardstructures to an independent function; - the
chessmodels.Sizestructure:- add the
PositionIndex()method; - add the
PositionCount()method; - add the
IteratePositions()method;
- add the
- the
- refactoring:
- optimize memory allocations;
- unit testing:
- slightly improve the tests of the
chessmodels.MapBoardstructure:- of the
Piece()method; - of the
ApplyMove()method;
- of the
- add the benchmarks based on the
chessmodels.Perft()function:- for the
chessmodels.MapBoardstructure; - for the
chessmodels.SliceBoardstructure.
- for the
- slightly improve the tests of the
Features
- representing the board:
- as an associative array of pieces with their positions as keys;
- as a plain array of pieces with exact correspondence array indices to piece positions;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- perft function;
- using an abstraction of a piece;
- Forsyth–Edwards Notation:
- parsing:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- parsing:
- utilities:
- utility for counting all possible moves (based on the perft function).
v1.7.1
Moving the chessmodels.perft() function from the tests to the main code; adding the go-chess-perft tool and the example for the chessmodels.MoveGenerator.MovesForColor() method; bug fixing.
Change Log
- new features:
- transform the
chessmodels.Board.CheckMove()method to an independent function; - the
chessmodels.Perft()function:- move the
chessmodels.perft()function from the tests to the main code; - pass a handler to all levels in the
chessmodels.Perft()function; - pass a move generator to the
chessmodels.Perft()function via an interface;
- move the
- add the
go-chess-perfttool;
- transform the
- bug fixing:
- fix rune conversion from an integer to a string in the
uci.EncodePosition()function; - fix incorrect calculation of the last file in the
uci.EncodePieceStorage()function;
- fix rune conversion from an integer to a string in the
- refactoring:
- simplify the utility functions in the
piecespackage; - merge the
chessmodels.pieceGrouptype with thechessmodels.Boardstructure;
- simplify the utility functions in the
- unit testing:
- complete the tests:
- of the
pieces.NewPiece()function; - of the
uci.DecodePiece()function; - of the
uci.EncodePiece()function;
- of the
- add the long-playing tests to the Travis CI configuration;
- complete the tests:
- examples:
- remove the examples:
- remove the examples with a mock piece;
- remove the redundant examples;
- add the example for the
chessmodels.MoveGenerator.MovesForColor()method.
- remove the examples:
Features
- representing the board as an associative array of pieces with their positions as keys;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- perft function;
- using an abstraction of a piece;
- Forsyth–Edwards Notation:
- parsing:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- parsing:
- utilities:
- utility for counting all possible moves (based on the perft function).
v1.7
Improving repository decor.
Change Log
- fixing the code style;
- adding usage examples;
- improving:
- repository decor;
- CI configuration.
Features
- representing the board as an associative array of pieces with their positions as keys;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- using an abstraction of a piece;
- Forsyth–Edwards Notation:
- parsing:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board.
- parsing:
v1.6
Working with Forsyth–Edwards Notation for positions and moves, extending moves checkings and refactoring.
Change Log
- Forsyth–Edwards Notation:
- parsing:
- of a position;
- of a move;
- serialization:
- of a position;
- of a move;
- parsing:
- extending universal moves checkings;
- refactoring.
Features
- representing the board as an associative array of pieces with their positions as keys;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- using an abstraction of a piece;
- Forsyth–Edwards Notation:
- parsing:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a position;
- of a move;
- of a piece kind;
- of a piece color;
- of a board.
- parsing:
v1.5
Extracting working with Forsyth–Edwards Notation to the separate package and refactoring.
Change Log
- extracting working with Forsyth–Edwards Notation to the separate package;
- refactoring.
Features
- representing the board as an associative array of pieces with their positions as keys;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- using an abstraction of a piece;
- Forsyth–Edwards Notation:
- parsing:
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a piece kind;
- of a piece color;
- of a board.
- parsing:
v1.4
Serialization models to Forsyth–Edwards Notation and refactoring.
Change Log
- serialization to Forsyth–Edwards Notation:
- of a piece kind;
- of a piece color;
- of a board;
- refactoring.
Features
- representing the board as an associative array of pieces with their positions as keys;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- using an abstraction of a piece;
- Forsyth–Edwards Notation:
- parsing:
- of a piece kind;
- of a piece color;
- of a board;
- serialization:
- of a piece kind;
- of a piece color;
- of a board.
- parsing:
v1.3
Parsing models from Forsyth–Edwards Notation and improving moves checking.
Change Log
- parsing from Forsyth–Edwards Notation:
- of a piece kind;
- of a piece color;
- of a board;
- checking for king capture (including during moves generating);
- fixing the bug with checking bishop moves.
Features
- representing the board as an associative array of pieces with their positions as keys;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- using an abstraction of a piece;
- parsing from Forsyth–Edwards Notation:
- of a piece kind;
- of a piece color;
- of a board.
v1.2
Implementing individual checkings of moves for all types of pieces.
Change Log
- implementing individual checkings of moves for all types of pieces.
Features
- representing the board as an associative array of pieces with their positions as keys;
- immutable applicating moves to the board via copying the latter;
- checkings of moves:
- universal;
- individual for all types of pieces;
- generating moves via filtering from all possible ones;
- using an abstraction of a piece.