Changes since 18.9:
minor bug in book.c would let crafty play lines that were very
rarely played even though there were others that had been played
far more times and were more reliable. king safety scores ramped
up a bit and made more "responsive".
18.9 Book() modified to increase the responsiveness of book learning.
the new code, plus the default weights for the book parameters
now make Crafty learn very aggressively and repeat good opening
lines and avoid bad ones.
18.8 recapture extension turned back on for a while. changes to the
evaluation code, particularly EvaluatePawns() to make it more
efficient and accurate. IE it was possible for an isolated pawn
to be penalized for being isolated, weak, and blocked, which made
little sense.
18.7 BOOK_CLUSTER_SIZE increased to 2000 to handle making really large
books. a book made without this change could produce clusters
that would cause memory overwrites.
18.6 "new" no longer produces a new log.nnn/game.nnn file if no moves
have actually been played. minor change to rook scoring gives a
penalty when a rook has no horizontal (rank) mobility, to avoid
moves like Ra2 protecting the pawn on b2, etc. glitch in the
code that initializes is_outside[][] and is_outside_c[][] could
cause missed outside pawn cases to happen. this has been there
a long time.
18.5 minor change to RootMove() to use Quiesce() rather than the more
complicated way it was ordering with Evaluate()/EnPrise(). this
is no faster, but it is simpler and eliminated the need for the
EnPrise() function totally, making the code a bit smaller. bug
in EvaluateDraws() would let it think that the bishop+wrong rook
pawn endings were winnable if both kings were very close to the
queening square, even with the wrong bishop.
18.4 recapture extension was left in SearchSMP() erroneously. this
has now been protected by a #ifdef just like it was in Search().
bug in RepetitionCheck() was causing problems in SMP versions.
The entire repetition list code was modified to clean this up.
the problem was most noticable on things like fine #70. bug in
LearnImportBook() confused the learn value sign, due to the other
changes to make +=white all the time. opposite bishop scoring
has been beefed up a bit to avoid these drawish endings.
include:
18.3 minor bug in "avoid_null_move" test used R=2 for the test rather
than testing R=2/3 as the real null-move search uses. the kibitz
for "Hello from Crafty Vx.xx" has been moved so that it works
with the new xboard/winboard 4.2.2 versions. book learning was
badly broken in the previous version and has been fixed/tested.
The main feature is that it fixes the winboard hang problem when crafty plays
black on a chess server. It also has much more aggressive book learning (code
has been significantly changed). A minor bug was fixed in analyze mode that
would break the "h" command when black was on move, and show one less move for
either side that had actually been played in the game. Another fixed bug
reversed the sign of a score whispered in analysis mode.
Pkgsrc changes include fixing the build target on Solaris (untested).
main source tree, so no more pkgsrc patches. Changes from version 17.13:
another endgame evaluation problem fixed. the outside passed
pawn code worked well, up until the point the pawn had to be
given up to decoy the other side's king away from the remainder
of the pawns. Crafty now understands the king being closer to
the pawns than the enemy king, and therefore transitions from
outside passer to won king-pawn ending much cleaner.
new command "selective" as requested by S. Lim, which allows the
user to set the min/max null move R values (default=2/3). they
can be set to 0 which disables null-move totally, or they can be
set larger than the default for testing.
minor changes to init.c sent by Eugene Nalimov to handle 64 bit
pointer declarations for win64 executable compilation.
NetBSD changes included along with a new Makefile that requires
no editing to use for any known configuration ("make help" will
explain how to use it). this was submitted by Johnny Lam.
serious changes to the outside passed pawn code. the evaluator
now understands that outside passers on _both_ sides of the
board is basically winning. same goes for candidate passers.