       CAVEATS

	* The nps command does not work in this version (more precisely:
	it is a noop).

	* The -s argument should be twice as big as in stock 5.07 since it
	 now gives the total number of hash buckets, not just those of one
	 color. Note that the recommended way of setting the hash size is
	 through the "memory" command.

	* The option "BookRandom" corresponds to the earlier "book prefer".

	* GnuChess now understands polyglot books. In the book directory
	is a script to recreate the classic gnuchess book in polyglot
	format. You can also find it here

	http://alpha.uhasselt.be/Research/Algebra/Toga/gnuchess-release/gnuchess.bin

	Due to the limitations of the polyglot format gnuchess cannot add
	pgn-files to polyglot (.bin) books. But you can add them to
	gnuchess (.dat) books and then convert the result to a polyglot
	book.

	* book add now needs two arguments (see "help book").

--- 5.07.153b

        * Bugfix: an uninitialized variable lead to timelosses in UCI mode.

--- 5.07.152b

	* Bugfix: castling and promotion moves in polyglot books were
	translated incorrectly.

--- 5.07.151b

	* Bugfix: the hash key computation for book lookup was
	incorrect. In particular the generated "polyglot" books worked
	only with gnuchess.

--- 5.07.150b

	* UCI support added.

	* Polyglot book support added.

	* "book convert" converts a gnuchess book (.dat) to a polyglot book (.bin)
	
--- 5.07.143b

	* input.c refactored.

        * getopt is gone. gnuchess only used getopt in a trivial way so it
	was not worth the loss of portability.

	* readline is gone. Ever since gnuchess looked at input during
	  search it was almost impossible to make it work correctly. Since
	  engines are mostly used through a GUI these days and the console
	  is only used for debugging, readline support is less of a
	  priority. If you want readline use rlwrap!

	* WIN32 version does not use pthreads anymore. Gnuchess now
	compiles easily with mingw32 and mingw64.

        * Separate magics for 32 and 64 bit versions.

--- 5.07.141b

	* Refactoring almost complete. Only a few globals left. The
	obnoxious "common.h" is gone!

	* Rewritten search and quiescence search.

	* Uber aggressive LMR (taken from Stockfish).

	* Late Move Pruning (taken from Stockfish).

	* Null move as threat detection (inspired by Stockfish but we save
	threats in the hash table).

	* Razoring (standard).

	* Magic move generation instead of rotated bitboards (this makes
	the code much cleaner!).

	* Material tables a la Rybka (not yet seriously used).

	* Manual tweaks of some obviously wrong eval parameters (e.g. the bishop pair).

	* Checks in quiescence search.

	* Stalemate check in quiescence search.

	* Save/load config file ("-c" argument to load).

	* "dump" command to dump tree (extremely useful for debugging!).

	* "show hash" gives the content of the current hash table entry.

	* hint command (re)implemented.

	* Bugfix: 3 knights were regarded as "non-mating material".

        * Anti human features in eval removed. This is better for analysis
	but perhaps not so good on FICS.

--- 5.07.94.1b

	* Bug fix. A mate by white was incorrectly claimed as "0-1 {White
	Mates}".

	* Bug fix. The logfile included some things labeled with "OUT"
	which weren't actually sent out.

	* Usability fix. Logging is now off by default. Use the "Log"
	option to turn it on.

	* Bug fix. The 50 move counter was not checked during search.

	* Bug fix. The code in "show game" for dealing with comments
	appears to be broken. Comment it out for now.

--- 5.07.94b

       * Code cleanup.

       * Stability fixes.

       * Some endgame eval bugs fixed.

       * Recognition of wrong color bishop in KBPK endgame.

       * More aggressive nullmove pruning (borrowed from stockfish),

       * Modern hash table implementation (4 buckets).

       * True pv's (triangular array).

       * More feature options.

       * Aspiration search.

       * New time management.

--- 5.07.9b

	* Support for the nps command.
	
--- 5.07.8b

	* Crude LMR implementation. It seems to increase the 
	  strength of GNUChess somewhat.

	* Fix of IsLegalMove{}. Sometimes a it happened pawn
	  got stuck on the 8th rank (this was related to killer moves). 

	* Fix of st command.
	
--- 5.07.7b

        * Do node counting at beginning of search. This is easier.
          Also: previously there was a bug which made GNUChess count
          many nodes twice. As a result the reported nps was too 
          high by a factor of almost two.

        * Help string for sd command was mangled. 

--- 5.07.6b
	
	* Sanity checks for castling rights in setboard. Otherwise
	  we get search corruption afterwards.
	
--- 5.07.5b

	* Changed draw claim code. The previous code produced
	  invalid draw claims (e.g. KNNK).

	* Rewrote test for when to ponder.

	* Bug fix: CleanupInput() had been accidentally commented out. 

	* "." command implemented in analysis mode. 

--- 5.07.4b

        * Call check_search_stop less frequently. 
	
	* otim implemented (cosmetic?).

	* never allow maxtime to be bigger than the remaining time.
	  Previous GNUChess would lose on time in longer time
	  controls.

	* Limit Idepth to 30 (if we do not limit Idepth the ply
	  counter may overflow which causes crashes).

	* Update MoveLimit correctly for opponent on new time period. 
	  Important when switching sides.

	* Added --debugfile option in debug build. Give
	  indication of debug build in engine name. 

--- 5.07.3b

	* The return value of the various getline 
	  routines in input.c was not checked. As a result
	  gnuchess would end up in a busy loop when
	  killing xboard with SIGKILL.
	
--- 5.07.2b

	* Bugfix: a debug print in the memory command 
	  was left in.

	* Some more debug output suppressed in
	  xboard mode generated by the level command.

	* No more MATxx scores in PV in xboard mode.

	* More commands are processed during search.

	* On some computers "prompt" was not cleared
	  after the xboard command.

	* Bugfix: in the new function check_search_stop 
	  LastNodeCnt was never reset.

	* Mate score is now 9999.

	* No pondering in force mode. 

	* Indicate pondering in PV and flip sign of evaluation.

	* Bugfix: PV was truncated in xboard mode. 
	
--- 5.07.1b

	* An attempt was made to make GNUChess into a modern 
	  WB engine.
	
	* The biggest change is that GNUChess now
	  listens to input while searching. This
	  happens only in xboard mode since it 
	  messes up the display in GNUChess's
	  non xboard mode.

	* No pondering if the plycounter is zero.
	
        * The "memory" command is now supported.
	
        * "white" and "black" do not reset the engine
	  when they are supposed to be noops.
	
        * The number of moves to go till the
	  next time control is kept up to date 
	  for both colors even when moves are forced.
          This is important since the number of moves
	  is used for the time budget.
	
        * The output of the "post" command now 
	  follows the standard.
	
        * "sd" works now.
	
        * GNUChess now distinguishes between
	  illegal moves and illegal commands.
	
        * The level command now supports the 
	   min:sec syntax.
	
        * Move reporting now follows the standard.
	
        * Lots more debugging output suppressed.

--- 5.07 Released
2003-08-07 Mike Curtis <chess@wt.net>

	* Minor ScoreDev code tidy

2003-07-28 Simon Waters <Simon@wretched.demon.co.uk>      

	* ensure gnuchessx included in EXTRA_DIST

2003-06-30 Simon Waters <Simon@wretched.demon.co.uk>      

	* Fix to Posix thread for readline
	
	* Fix to ensure "HARD" is default
	
2003-06-30 Mike Curtis <chess@wt.net>
	
	* Improve Posix thread handling

2003-06-28 Mike Curtis <chess@wt.net>

	* Portability fix IsTrustedPlayer

2003-06-28 Simon Waters <Simon@wretched.demon.co.uk>      

	* Portability fix to lexpgn.l

	* Changes to lexpgn.l to handle some special
	  cases.

	* Fix trailing "/" in FEN causes
	  buffer overflow issues. Trailing "/" is
	  kept for compatibility reasons with 5.04

2003-06-19 Mike Curtis <chess@wt.net>

	* Portability fix to lexpgn.l

2003-06-19 Simon Waters <Simon@wretched.demon.co.uk>      

	* Add "--easy" flag to command line.

	* Add "--manual" flah to command line.

	* Fix to new PGN parser to handle odd
	  character in tag data.

2003-06-15 Simon Waters <Simon@wretched.demon.co.uk>      

	* const declaration for progname removed to 
	  resolve problems with other compilers.

	* Reapply earlier fix to ensure the players
	  names for white and black are fixed which got
	  overwritten with pgn parser merge.

	* Remove GNU tool derived files from CVS to save
	  space and avoid problems with timestamps.

	* Tell xboard sigint=0 to avoid workaround on Solaris.

	* Various code clean-ups.

	* Redefine DRAWSCORE to 0, faster, and avoids excessive
	  draw penalties.

2003-06-13 Simon Waters <Simon@wretched.demon.co.uk>      

	* Use CalcHashSize in main.c

	* Check HashSize return code in cmd.c

	* Put maximum check in CalcHashSize

2003-06-12 Simon Waters <Simon@wretched.demon.co.uk>      

	* Convert autoconf to AX_CREATE_STDINT_H from AC_CREATE_STDINT_H

	* Changes suggested by latest "autoscan" including tests
	  for functions we can't do without.

	* Changes required to merge DAW contribution below.

2003-06-12 David A. Wheeler <dwheeler@dwheeler.com> 
           (Originally 2002-10-03 merged SRW)
	   
	* Rewrote PGN reader so that it fully handles the PGN standard
	  and common nonstandard variants of PGN, including PGN {} comments,
	  ; comments, varying newline conventions (Unix, Windows, MacOS),
	  FEN starting positions, multiple tags, and so on.
	  If a game is being read in with pgnload,
	  data is kept so it can be written back out later by pgnsave
	  (so that later on, annotations won't lose existing data).
	  The new reader is implemented using flex/lex, which eliminates
	  
	* Added support for not-quite-valid SAN moves, so that games
	  with such entries are still read correctly.  This includes
	  "capture-only" notation like "KxN" (King takes Knight),
	  the use of "P" for pawns, and
	  lower-case versions of many pieces (e.g., "k" for King) - note
	  that Bishops MUST be upper case (since "b" is a column identifier).

	* Added a script named "gnuchessx", which simply invokes gnuchess
	  with the "xboard" option.  This means that GNU Chess 5 now
	  automatically supports Xboard, just like GNU Chess 4 did.

2003-06-09 Anil Mungal <vagrancy@rogers.com>

	* Tidy up hashsize calculation, fix segfault

2003-06-09 Simon Waters <Simon@wretched.demon.co.uk>      

	* Ensure comments all use tradition /* */ syntax

2003-04-06 Simon Waters <Simon@wretched.demon.co.uk>      

        * Correct GenCheckEscapes to return no moves
          when not in check. For "show escape" command.

        * Disambiguate hints

2003-03-16 Simon Waters <Simon@wretched.demon.co.uk>      

	* Remove stale Threat Extension code

2003-03-12 Simon Waters <Simon@wretched.demon.co.uk>      

	* Fix En Passant handling in white/black commands

	* Fix to HashSize handling

--- 5.06 Released

2003-03-10 Simon Waters <Simon@wretched.demon.co.uk>      

	* Remove obselete M4 include file.

2003-03-09 Simon Waters <Simon@wretched.demon.co.uk>      

	* Fix preprocessor directives for Macro names.

2003-03-07 Simon Waters <Simon@wretched.demon.co.uk>      

	* Always used bundled geopt's to simply build

2003-03-06 Simon Waters <Simon@wretched.demon.co.uk>      

	* Correct pthread handling in configure.ac

	* Correct LIBOBJS handling on platforms without getopt_long

	* Avoid deprecated multiline string literals in cmd.c

	* Avoid redefining MAX and MIN macros on HPUX

	* Make pawncover constant to avoid difference between 
	  first and subsequent games. Affects many King safety 
	  calculations.

2003-02-16 Simon Waters <Simon@wretched.demon.co.uk>

	* Add getopt files to distribution for platforms without 
	  GNU C library

	* Replace ac_need_stdint_h with ac_create_stdint_h

	* Add acx_pthread, config.sub, config.guess

2003-02-11 Simon Waters <Simon@wretched.demon.co.uk>

	* Drop enpassant knowledge on "switch" command.

	* Add in 2 move exception to EvaluateDraw to
	  avoid drawing won games.

2003-02-05 Simon Waters <Simon@wretched.demon.co.uk>

	* Various string length issues tidied up.

2003-01-31 Simon Waters <Simon@wretched.demon.co.uk>

	* Implement "white" and "black" commands.

2003-01-29 Anil Mungal <vagrancy@rogers.com>

	* Two minor optimisations to eval.c (1% speed-up test evalspeed)

2003-01-29 Simon Waters <Simon@wretched.demon.co.uk>

	* Use getopt_long for option handling

	* Add standard options --help --version

	* Add command line command "usage"

	* Add option --hashsize

	* Rework hint to use first move in Tree

	* GetElapse time even when not against the clock

	* Modify aclocal.m4 to stop spurious 32's in configure
	  which break build AIX 4.2, and Solaris 2.5.1 

2003-01-27 Simon Waters <Simon@wretched.demon.co.uk>

	* Stop output of result in iterate if game has ended already.

	* Ensure PGNSaveGame output computer as correct colour player.

2003-01-13 Simon Waters <Simon@wretched.demon.co.uk>

	* Add time.h to common.h to define timeval on Cygwin

	* Add test for absence of nanosleep, may make
	  waiting inefficient on platforms without nanosleep
	  or usleep

	* Remain in analysis mode on "new".

2003-01-09 Simon Waters <Simon@wretched.demon.co.uk>

	* Implement analysis mode

	* Change time in ShowLine to seconds from centiseconds
	  (see engine-intf.html at www.tim-mann.org)

2003-01-09  Lukas Geyer  <lukas@debian.org>

	* rename et ElapsedTime
	
	* Clean up timer code

	* Further changes on pondering and input handling

2003-01-09 Simon Waters <Simon@wretched.demon.co.uk>

	* Change version ID to 5.06

2002-12-30  Lukas Geyer  <lukas@debian.org>

	* Corrected threading code to consume input correctly

	* Corrections to comments

	* debug.c added

2002-12-22  Stuart Cracraft <cracraft@earthlink.net>

	* Reinstate penalty for having no queens on in
	  eval.c (spotted by Tim Bedding)

2002-12-22  Lukas Geyer  <lukas@debian.org>

	* Extra location for book checked 
	  /usr/share/games/gnuchess/book.dat

	* Correct handling of name

	* Fix problem with slow exit if pondering

	* Fix memset error

	* Misc tidying of 'const' usage

2002-12-19  Simon Waters <simon@wretched.demon.co.uk>

	* 1/20th second sleep in input loop, to avoid
	  CPU hogging in easy mode.

2002-12-16  Simon Waters <simon@wretched.demon.co.uk>

	* The main development version reverts to Lukas's
	  version as of 2002-10-05

	* epd.c merged from 5.05

	* book random in help change merged from 5.05

	* Fix to not store score in hashtable when time
	  expired, as score has special value.

2002-10-05  Lukas Geyer  <lukas@debian.org>

	* Added copyright and license notices to ponder.c, input.c,
	  updated copyright years to 1999-2002 in all source files.

	* Updated NEWS file to really list user-visible changes
	  between releases, still not complete.

	* Updated my email address.

	* version.c: Removed as obsolete.

	* pgn.c: Fixed potential buffer overflow. (Thanks to David
	  Wheeler for this one.)

	* common.h: Added comments by David A. Wheeler.

	* cmd.c: Added support for "easy" and "hard" (disable/enable
	  pondering)

	* main.c: Default to "nopost".

	* common.h: Added #include <sys/types.h>, needed for some
	  pthread implementations, it seems.

2002-08-25  Lukas Geyer  <lukas@debian.org>

	* Merged Simon's and my version, reverted some stuff like changing
	  all the types to int before I know better justification.

2002-08-25 Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Various cleanups, some documentation and comment updates,
	  nothing really changed

2002-08-25 Lukas Geyer  <geyer@math.uni-dortmund.de>

	* configure.ac: Added support for --without-readline, cleaned
	  up by removing even more unneeded tests.

	* INSTALL: Updated (was not quite accurate anymore)

	* TODO: Updated (some things have been done now...)

	* cmd.c: Changed input parser to use method table, changed token
	  separation algorithm, the tokens are now only pointers to the
	  beginning of tokens in inputstr. Changed move.c accordingly that
	  it does not get confused by whitespace.
	  
	* Moved input code to src/input.c (new file), in a separate thread.
	  Changed other files accordingly (common.h, main.c, cmd.c, 
	  Makefile.am, configure.ac).

	* Removed all code related to the Novag Universal Board. (The
	  code was mostly in cmd.c.)
	  
	* common.h, ttable.c: Changed the HashSlot structure to make
	  persistent transposition tables possible.

	* ponder.c (new file): Added prototype of pondering.

2002-08-17 Simon Waters <simon@wretched.demon.co.uk>
	* Bug code bug introduced in development version
	  that breaks if no book is present in XBOARD
	  version.

2002-08-02 Simon Waters <simon@wretched.demon.co.uk>

	* Switch from short to int for all short
	  variable types.
	  (Note some aspects of change require futher work)

	* Correct SortRoot test for passed pawn moves.

2002-08-02 Simon Waters <simon@wretched.demon.co.uk>

	* Clean up of SortRoot (also MC suggested optimisation)

	* Tidy code to remove 99 lclint errors (274 to go)

2002-08-02 Based on patch from Lukas Geyer

	* Add list of possible book locations, to allow
	  central location for book on multiuser servers.
	   "book.dat"
	   "/usr/lib/games/gnuchess/book.dat"

	* Limit book to BOOKDEPTH ply not BOOKDEPTH moves.

	* Improve handling of excessive hashsize requests.

2002-08-01  Simon Waters <simon@wretched.demon.co.uk>

	* Correct additional input file name limits
	  and related field sizes throughout code.
	  (NB UNIVERSIAL code changes untested)

	* Changes proposed by MC for compiling with MSVC
	  Note: ULL() macro should be used for 64 bit integer constants

	* Change help text for "universal" if it wasn't compiled in.

	* Minor optimisation in the misnamed MateScan routine.

	* Shorten declaration of rings, this doesn't need to be in init.c

	* Clean up case statement for X-ray attacks.

	* Correct array bound error in cmd.c hint code.

	* Correct memset in book code.

	* Reorder test on trimming trailing spaces.

2002-05-19  Simon Waters <simon@wretched.demon.co.uk>

	* Corrected command line size to 128 through out cmd.c to
	  fix segmentation fault errors on complex fen positions.

2002-05-02  Simon Waters <simon@wretched.demon.co.uk>

	* Reorder move generation of promotions

	* Improve sorting of captures in SortMove

	* Insert pinned and hanging piece checks

	* Remove unreachable code in cmd.c

	* Update some eval weightings

2002-03-14  Simon Waters <simon@wretched.demon.co.uk>

	* Fix memory leak HashTab

2002-03-06  Simon Waters <simon@wretched.demon.co.uk>

	* Make "book on" use BOOKPREFER not BOOKBEST

	* Fix implementation of BOOKBEST

	* Implement "book {worst|best|prefer}"

	* Correct README as it said not Official distro

2002-03-05  Simon Waters <simon@wretched.demon.co.uk>

	* Remove redundant tests from configure.ac

	* Update version to 5.04 in configure.ac

	* Move local m4 macros to acinclude.m4

2002-03-03  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* common.h: Refine check for buggy gcc 2.95 on PPC.

	* common.h: Changed lzArray and BitCount from short to unsigned
	  char, corresponding prototypes for leadz() and nbits(), too.

	* inlines.h and util.c: Changed leadz() and nbits() to not use
	  union, rather do explicit bit arithmetic which does not assume
	  anything on endianness.

	* test.c: Changed all timings to floating point and higher
	  precision.

2002-03-03  Simon Waters <simon@wretched.demon.co.uk>

	* Added unknown protocol commands to
	  avoid "Illegal move: <unknown command>"

	* sd synonym for depth

	* Added approximate st and additional errors for xboard
	  suggested by Tim Mann

	* Added basic "hint" feature, by extracting next
	  move from PV in hash. Doesn't work in book.

2002-03-02  Simon Waters <simon@wretched.demon.co.uk>

	* Modified code to print "Illegal move: cmd" when
	  an illegal move or unknown command is entered.

2002-02-26  Simon Waters <simon@wretched.demon.co.uk>

	* Hacked version of ac_need_stdint_h AC macro to fix Win32 build

GNU Chess 5.03 Released

2002-02-12  Simon Waters <simon@wretched.demon.co.uk>

	* Fix bug with saving move after mate in PGN files

2002-02-09  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* book.c: Checked for calloc() failure to return BOOK_ENOMEM
	in BookBuilderOpen().

	* iterate.c: Changed search time calculation to a very
	non-aggressive strategy (keep always 2 seconds for possible
	delays). Added SearchRoot() if we fail low. This should fix
	the illegal move problem, which occurred exactly when we
	failed low for all depths.

2002-02-08  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Changes mainly to book.c in order to have
	dynamically allocated book hashes. Changed the
	binary book format once more.

2002-02-07  Simon Waters <simon@wretched.demon.co.uk>

	* Moved Lukas's version into CVS

	* Adjusted version string to 5.03

	* Reimplemented bk in better fashion

	* Added self to authors file


2002-02-06  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Clean-ups to make it build with the Sun cc compiler.

	* moved leadz() and nbits() to inlines.h, so that they will
	really be inlined. Left the original versions in util.c,
	so that one can define NO_INLINE to get the functions
	exported. Speed gain is quite significant on Linux/PPC.

2002-02-05  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Fixed a nasty bug in buf_to_book() which would add position
	evaluations to all the hash-collision positions while traversing
	the list. As collisions are not very frequent, this would
	generate slightly wrong books which could lead to infrequent
	strange opening blunders.

	* Abstracted hash handling functions in book.c into macros,
	implemented secondary hash traversal.

2002-02-04  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Removed index from binary book file, continued fixing book
	building. (It used to take only the white moves if two players
	from the list were playing each other.)

	* Added return codes to function in book.c.

2002-02-03  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Killed some bugs related to endianness and padding in
	book.c. Rewrote README to reflect reality more closely. Split
	BookBuilderOpen() from BookBuilder().

2002-02-02  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Cleaned up some types, converted them to explicit ones uint32_t,
	uint16_t and uint64_t. Should fix the bug that hashes generated on
	64 bit machines were different. Thanks to Goswin Brederlow
	<goswin.brederlow@student.uni-tuebingen.de> for this one.

	* Fixed a documentation bug (replaced "book compile" by "book
	add")

	* Added readline support

	* Added TODO
	
2002-01-30  Lukas Geyer  <geyer@math.uni-dortmund.de>

	* Redesigned the build system to use automake. Cleaned up code,
	fixed SETBIT /CLEANBIT for gcc 2.95 on Linux/PPC. (Actually,
	gnuchess hits a gcc optimization bug here, congratulations...)
	
	* Added help functionality. Still ugly, but informative. (And the
	plain gnuchess interface _is_ the definition of ugliness anyway.)

------------------------------------------------------------------------
This ChangeLog file only documents recent changes, for older ones please
look in doc/ChangeLog.

