implements stalemate detection + fixes missing const qualifier in new *_moves[_allowed] API default tip

add functions to list the possible moves for each piece

fix unnecessary disambiguation + simplify get_real_threats() code

fix regression: pieces could not threaten fields when pinned

fix regression: pawns cannot block check threats

fix regression: missing promotion when simulating threats

fix bug when parsing checkmate indicator

major refactoring of rules API

add dependency on fen.h for rules.c

convert some macros to static inline functions

refactor rules.h / rules.c

add another game to test stalemate detection

gamestate_cleanup() is now safe to be called multiple times

add FEN history to the game state

fix: wrong error code when king moves into check and missing auto-disambiguation when one of the candidate pieces is pinned

fix: disambiguation by row while capturing was not implemented

rename INVALID_POSITION to PIECE_NOT_FOUND

fix wrong error message when move indices are invalid

fix incorrect move notation when disambiguating moves

fix that en passant captures do not work

fix regression: position reporting about PGN errors

add 150 example games to test PGN parser

add test directory and make target for tests

make eval_move() and check_move() not change their input string

(0) -100 -50 -24 tip

mercurial