Permalink
Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.
Sign up
Fetching contributors…
Cannot retrieve contributors at this time.
Cannot retrieve contributors at this time
| Version 0.2.3 (??/??/????): | |
| - Rewrite the manual pages using mdoc documentation language. The manual | |
| pages can be now viewed with the standard `man' utility without | |
| pre-processing. | |
| - Fixed a bug where EOF at the game prompt would cause infinite loop | |
| on certain operating systems | |
| - Fixed a build error on operating systems that have fully | |
| deprecated the use of certain legacy time functions | |
| - Minor fixes to increase portability to different operating systems | |
| Version 0.2.2 (07/09/2009): | |
| - Use the XDG Base Directory Specification for configuration and | |
| data file locations | |
| - Configuration strings can have whitespace if they're wrapped in quotes | |
| - Parallel perft works reliably on all platforms | |
| - Send "done=1" as the last feature string, as required by the Xboard | |
| protocol specification | |
| - Support the "egtpath" command for setting the path to Scorpio bitbases | |
| - Support the "memory" command for setting the hash size. The bitbases' | |
| memory usage can't be controlled accurately enough, which is why "memory" | |
| only affects the hash table. | |
| - Better error checking for invalid Xboard commands | |
| - Minor bugfixes | |
| Version 0.2.0 (02/05/2008): | |
| - Pawn hash table | |
| - Support for Scorpio's endgame bitbases | |
| - Slightly improved time allocation | |
| - Improved search | |
| - Minor bugfixes | |
| - Minor code cleanup | |
| Version 0.1.1 (10/21/2007): | |
| - Improved search | |
| - Replaced command line arguments with a config file | |
| - The source now compiles with the MSVC++ compiler | |
| - Cleaned up some of the code | |
| - Complete rewrite of king-attack evaluation | |
| - Minor bugfixes | |
| - Quiescense nodes are also counted in print_pv() | |
| Completed tasks: | |
| - Passed pawn pushes mustn't be reduced | |
| - Don't update history tables (not even on fail low) with captures | |
| - Implement recapture extensions | |
| - Ditch longjmp() for stopping the search | |
| - search_book() shouldn't open and close the book file. Instead it | |
| should have a FILE pointer and the position count passed to it. | |
| - Drop null move if all the officers have fallen | |
| - Don't use a custom struct to read/write book positions | |
| - Add king square to Board structure | |
| - Encode enpassant square in Move | |
| - Write an undo_move() function | |
| - Use SEE for move ordering | |
| - No null move pruning at PV nodes or when beta is a mate score | |
| - Replace all occurences of strtok() with strtok_r() | |
| - Create another version of gen_moves() with <pc> and <to> arguments | |
| so that we can read a SAN string and create only the moves that we need. | |
| - Replace age_hash() with a more robust solution. Even with a 35MB hash | |
| table it takes 5% of the CPU cycles. | |
| - Improvements to fen_to_board(): | |
| - Does not crash on invalid input | |
| - Recognizes invalid FEN strings fairly accurately | |
| - Use a square table for passed pawns instead of a rank table | |
| - Replace rotated bitboards with antirotated magic bitboards | |
| - Don't accept repetitions from the opening book | |
| - Add the ability to convert a board position to FEN | |
| - When reading PGN files, store book positions in an AVL tree before | |
| writing to book. | |
| - Make sure illegal castling is detected correctly | |
| - Make sure mate scores are accurate | |
| - Generate only legal moves. This will solve a lot of problems and won't | |
| hopefully slow the program down too much. | |
| - Add passed pawn moves to quiescence search | |
| - Add <U64 check_mask> and <bool double_check> to Board struct. | |
| The values are updated in make_move(). | |
| - Smooth transition from middlegame to endgame evaluation. | |
| - Implement futility pruning: | |
| http://members.home.nl/matador/chess840.htm#FUTILITY | |
| - Store all necessary information in hash keys, including castling and | |
| en-passant data. | |
| - Implement a help command which displays all the available commands | |
| - Change opening book data structure to: | |
| - U64 key | |
| - U16 games | |
| - U16 wins | |
| - No promotion argument in get_move(...). The promotion should be included | |
| in the <U32 move> argument. | |
| - Use the same hash keys in the Linux and Windows version to make sure that | |
| the same opening book can be used. | |
| - pcsq should be defined as pcsq[color][pc][sq], not pcsq[pc][color][sq] | |
| - Use a function called progressbar() to display the progress while | |
| running benchmark or reading PGN files. | |
| - Use the bool type in <stdbool.h> instead of a typedef | |
| - Moves should be of type U32, not int | |
| - Eval should never favor a player who has insufficient mating material. | |
| - Add 50 move rule | |
| - Get totally rid of path dependent castling evaluation and replace it with | |
| a better king safety eval. | |
| - Implement quiescence search | |
| - Make sure that the "U64 target" argument is taken into consideration | |
| in each of the gen_x_moves() (i.e. pawn moves) functions. | |
| - Implement book learning | |
| - Encode check (one bit) in <U32 move> | |
| - Order moves with high scores first and not the other way around | |
| - Replace the global <nnodes> mess with a cleaner solution so that <nnodes> | |
| won't have to be manually cleared all the time. | |
| - Penalize backward pawns in eval() | |
| - Do Internal Iterative Deepening in PV nodes with no hash hit | |
| - In main(), group the variables of a game in one struct (Chess) | |
| - Tactical moves shouldn't get a score from the history table | |
| - Drop null move in extended positions | |
| - Accept Xboard commands even in the PROTO_NONE mode | |
| - Sloppy shouldn't go crazy in analyze mode when it reaches the maximum | |
| search depth (eg. after finding a forced mate). | |
| - Calculate branching factor somewhat correctly | |
| - Try checks after captures on the first ply of QS | |
| - input_available() should call a get_cmd_type() function which | |
| has the following return values: | |
| CMDT_EXEC_AND_CONTINUE | |
| CMDT_FINISH | |
| CMDT_CANCEL | |
| CMDT_CONTINUE | |
| - Separate Xboard commands from Sloppy's own commands. | |
| - Use the types in <inttypes.h> (C99) for fixed-size integers. | |
| - The age of a hashnode should be replaced with a birthdate (i.e. move #2). | |
| The birthdate is the number of moves played in the game, not the move | |
| number of the move in the search tree. | |
| - Replace file_mask[square] etc. with file_mask[file] to save memory. It | |
| won't really be slower because we get the file with just "sq & 7". | |
| - Use an endianess-independent opening book format. The book is now | |
| always in little-endian format. | |
| - Board.nmove should be the number of moves made, and also an index | |
| for the last move. | |
| - Replace strcpy() and strncpy() with the safer strlcpy() | |
| - Replace strcat() and strncat() with the safer strlcat() | |
| - Improvements to book management: | |
| - Add a command line parameter to use or not use the book. | |
| - Add a command line parameter to load or not load it in RAM. | |
| - Add a command line parameter to enable or disable learning. | |
| - If not using the "book in memory" mode, disable learning. | |
| - Rename pop_count() to popcount() so that "pop" wouldn't be confused with | |
| popping a stack. | |
| - Rename first_one() to lsb() | |
| - Add a pop_lsb() function for getting the lsb AND clearing that bit. | |
| It will make code shorter, not faster. | |
| - Commands like "hint" and "bk" should use the CMDT_EXEC_AND_CONTINUE mode. | |
| To do that we need separate boards for the game and the search. | |
| - Analyze mode should have its own get_input_type() function so that | |
| normal xboard commands wouldn't get accepted. | |
| - Switch from mixed case to lower case | |
| - Quiescence search should have its own simple score_moves() function | |
| - Make san_to_move() more flexible but still intolerant of illegal moves | |
| - Get rid of "ULL" in long long literals, we'll have to use C99 anyway | |
| - Use some getopt() clone + a switch statement to parse input. | |
| The Xboard and UCI protocols could actually have their own modules. | |
| - Get rid of verified null move pruning. Just use NULL_R=3. | |
| - Cancelling the search while running a benchmark or test should also | |
| cancel the whole benchmark/test. | |
| - Merge print_debug_info() and print_search_info() | |
| - Get rid of circular includes when possible. Can't be done for headers | |
| like chess.h or util.h. | |
| - Chess.cmd[] and Chess.ncmd should be global variables in util.c. | |
| The "quit" command must work in the middle of running a testsuite. | |
| - These things need a better name: | |
| - int cancel (in struct _SearchData) - DONE (now "CmdType") | |
| - GameData (struct) and game_data (the variables) - DONE (now "PosInfo") | |
| - PreMoves (struct) - DONE (now "MoveMasks") | |
| - pc_type[64] (in struct _Board) - DONE (now "mailbox") | |
| - Compile with the pedantic flag | |
| - Fix CastleMask (in util.h). Only half of its contents are masks. | |
| - Use a sign (int) variable instead of SELF(color) | |
| - Cleanup or rename some of the ridiculous stuff in sloppy.h | |
| - Combine define.h, chess.h and chess.c into sloppy.h and sloppy.c, OR | |
| rename define.h to sloppy.h | |
| - Use PeekNamedPipe() (in winbase.h) or GetNumberOfConsoleInputEvents() | |
| (in wincon.h) to poll stdin in Windows. | |
| - Totally get rid of global.c | |
| - Implement version 2 of the Xboard protocol, and don't use any | |
| protover 1 commands (like "white" and "black") | |
| - Make sure that hash keys in the pv line aren't easily overwritten | |
| - Rename CAPTURE() to GET_CAPT(), SQ_FROM() to GET_FROM(), etc. | |
| - Cleanup eval.c and search.c | |
| - Rewrite the position parser in test_pos() | |
| - Do something to push_history() and push_killers(). Pushing them takes | |
| take and doesn't guarantee that the tables are in sync with the game. | |
| - print_moves() shouldn't be a debug mode function/command | |
| - The config file is enough for setting options. Get rid of cmdline args. | |
| - Don't use _WIN32 to mean WINDOWS | |
| - Test input_available() in Windows pipe mode | |
| - Fix MSVC++ threading issues in perft | |
| - Get rid of struct _Masks (in movegen.c) | |
| - Count also QS nodes in print_pv() | |
| - Don't overwrite the book file if the book wasn't modified | |
| - Don't reduce killer moves | |
| - Add a "logfile on/off" setting | |
| - Change NO_MOVE to NULLMOVE | |
| - Always deallocate the book when exiting | |
| - Add a pawn structure hash table | |
| - Add support for Scorpio's endgame bitbases | |