Skip to content

Releases: thewizardplusplus/go-chess-models

v1.9.0

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 10 Dec 05:48

Adding the boards.BitBoard structure; adding the go-chess-moves and go-chess-comparator tools.

Change Log

  • new features:
    • the boards.BitBoard structure:
      • add the boards.BitBoard structure;
      • add the boards.BitBoard structure to the go-chess-perft tool;
    • add the go.mod file;
    • tools:
      • improve the go-chess-perft tool:
        • improve the documentation;
        • improve the options;
        • validate the deep option;
      • add the go-chess-moves tool;
      • add the go-chess-comparator tool;
  • refactoring:
    • fix the code style with the golangci-lint tool;
  • unit testing:
    • improve the tests of the ApplyMove() methods;
  • examples:
    • move the tests of the boards package to the right place.

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;
  • 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

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 09 Oct 23:29

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.WrapBasePieceStorage function that universally implements the Pieces() and CheckMove() methods of the common.PieceStorage interface if necessary;
  • refactoring:
    • separate out the following packages:
      • separate out the common package:
        • move the chessmodels.Color type to the common package;
        • move the chessmodels.Kind type to the common package;
        • move the chessmodels.Position structure to the common package;
        • move the chessmodels.Move structure to the common package;
        • move the chessmodels.CheckMove() function to the common package;
        • move the chessmodels.Size structure to the common package;
        • move the chessmodels.Piece interface to the common package;
        • move the chessmodels.PieceStorage interface to the common package;
        • move the chessmodels.Pieces() function to the common package;
      • separate out the boards package:
        • move the chessmodels.BaseBoard structure to the boards package;
        • move the chessmodels.MapBoard structure to the boards package;
        • move the chessmodels.SliceBoard structure to the boards package;
      • add aliases to the chessmodels package for the moved entities:
        • mark them as deprecated;
    • add the common.BasePieceStorage interface;
    • add the common.PieceGroupGetter interface;
    • add the common.MoveChecker interface;
  • unit testing:
    • use the chessmodels.MockPieceStorage structure in the tests of the chessmodels.CheckMove() function.

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;
  • utilities:
    • utility for counting all possible moves (based on the perft function).

v1.8

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 06 Mar 19:09

Adding the chessmodels.SliceBoard structure; optimization.

Change Log

  • new features:
    • the chessmodels.BaseBoard structure that stores a board size;
    • the chessmodels.SliceBoard structure:
      • rename the chessmodels.Board structure to chessmodels.MapBoard;
      • add the chessmodels.SliceBoard structure;
      • add the chessmodels.SliceBoard structure to the go-chess-perft tool;
      • make the chessmodels.Board type redirect to the chessmodels.SliceBoard structure;
    • transform the Pieces() methods of the chessmodels.MapBoard and chessmodels.SliceBoard structures to an independent function;
    • the chessmodels.Size structure:
      • add the PositionIndex() method;
      • add the PositionCount() method;
      • add the IteratePositions() method;
  • refactoring:
    • optimize memory allocations;
  • unit testing:
    • slightly improve the tests of the chessmodels.MapBoard structure:
      • of the Piece() method;
      • of the ApplyMove() method;
    • add the benchmarks based on the chessmodels.Perft() function:
      • for the chessmodels.MapBoard structure;
      • for the chessmodels.SliceBoard structure.

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;
  • utilities:
    • utility for counting all possible moves (based on the perft function).

v1.7.1

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 06 Mar 19:07

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;
    • add the go-chess-perft tool;
  • 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;
  • refactoring:
    • simplify the utility functions in the pieces package;
    • merge the chessmodels.pieceGroup type with the chessmodels.Board structure;
  • unit testing:
    • complete the tests:
      • of the pieces.NewPiece() function;
      • of the uci.DecodePiece() function;
      • of the uci.EncodePiece() function;
    • add the long-playing tests to the Travis CI configuration;
  • examples:
    • remove the examples:
      • remove the examples with a mock piece;
      • remove the redundant examples;
    • add the example for the chessmodels.MoveGenerator.MovesForColor() method.

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;
  • utilities:
    • utility for counting all possible moves (based on the perft function).

v1.7

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 11 Feb 23:53

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.

v1.6

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 01 Nov 19:43

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;
  • 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.

v1.5

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 22 Aug 20:39

Extracting working with Forsyth–Edwards Notation to the separate package and refactoring.

Change Log

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.

v1.4

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 12 Jul 23:02

Serialization models to Forsyth–Edwards Notation and refactoring.

Change Log

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.

v1.3

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 29 Jun 03:36

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

Choose a tag to compare

@thewizardplusplus thewizardplusplus released this 03 Jun 21:33

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.