Ron Murawski -- Feb 1, 2008  --  HorizonChess@yahoo.com


Horizon Change Log


 ---------------------- 2008/02/01 version 4.4 ----------------------
  Chess:
        * Several minor chess knowledge changes/additions
        * Improved many weak/bad opening book lines
  New Features:
        * Elo weakening (adjustable from Elo 1000 -> full strength)
        * Search options can be disabled (for weaker play vs. humans)
        * ICS support for on-line play
        * Egtb cache size is configurable
        * Opening book styles: wide, best, deep, and tourney
        * Displaying config values in console mode for validation checking
  Internal:
        * Move-ordering somewhat follows Ed Schroeder website advice
        * Matekiller/killer/history logic improved
        * Null-move made more aggressive
        * Fewer adaptive razoring reductions, but ply reductions made deeper
        * Reduced size of hash entries, fitting more of them into hash
        * Asymmetric search window based on even/odd search depth
        * Replaced all assembly language with C code
        * Using 5 different compilers at maximum warning levels to tease out
          possible coding errors
  Optimizations:
        * Egtbs not probed until late endgame
        * Hash table code optimized
        * Improved code/data alignment, and some dead code/data removal
  Bugfixes:
        * Candidate passed pawn scoring was wrong (removed)
        * Egtb probe scoring for ep capture situations was wrong
        * Egtb probe scoring for mates was sometimes wrong
        * Null-move mate threat extension was wrong occasionally
        * Null-move verification search was wrong in many ways
        * IID search was blind to 50-move-rule draws
        * In match mode was claiming a draw from previous game
        * Sign of king shelter scoring occasionally wrapped-around
        * Internal Epd test suite was misidentifying some correct solutions
        * Resign threshold was set too low


 ---------------------- 2005/12/06 version 4.3 ----------------------
  Chess:
        * Playing strength now scales better with longer time controls
        * Time usage extended for problematic positions
        * Opening book improved by manually removing blunder moves and poor
          lines, and manually adding some selected missing lines -- some of
          these lines go quite deep
  Internal:
        * Improved move-ordering
        * Hash replacement logic changed
        * Hash aging changed
        * Fewer compiler warnings
  Optimizations:
        * Search speed increased up to 2x faster (move ordering improvements)
  Features:
        * Removed fail-high/fail-low indicators from score (illegal according
          to the Winboard specification although they didn't seem to cause any
          problems) and added the indicators to pv instead where they are more
          visible
  Bugfixes:
        * Fixed time-loss bug
        * Fixed bug causing random moves during long time-control games


 ---------------------- 2005/09/08 version 4.2 ----------------------
  Chess:
        * Potential passed pawn recognition added
        * Thinking time extended for "interesting" positions
        * Rooks now discouraged from the center early in the game
        * Thinking less for forced recaptures
  Internal:
        * Move ordering improved
        * Forward pruning made less aggressive
        * Ponder has been disabled until further notice
        * Much reworking of code for clarity
  Bugfixes:
        * Search instability causing bad moves and lost games corrected.
        * 50-move-rule and 3-ply repetition code corrected
        * Move generation for ep captures corrected
        * Hashtable logic changed to prevent overwriting current best move:
          passed on change to Beowulf team
        * Corrected eval bug confusing black rooks with black bishops (see 3.3
          change log)
        * Scoring of missing/advanced guard pawn in king safety corrected in
          several places
        * When rushed: using a small amount of time instead of none at all and
          not extending time for any reason
        * Draw offers from opponents no longer considered as illegal moves


 ---------------------- 2003/07/16 version 4.1 ----------------------
  Chess:
        * New book
  Internal:
        * Extensive reworking of code for clarity
  Optimizations:
        * Improved population count; more macros
        * Generating fewer moves that block check
        * Using some pre-computed values and avoiding some behind-the-scenes
          compiler casting in the move generator
  Features:
        * Column headers for DOS-mode analysis added
  Bugfixes:
        * Missed messages for WinBoard-announced won/lost/drawn games while
          Horizon is busy thinking corrected
        * 50-move rule code corrected
        * Promotion moves now SAN correct (ie: e8=Q, instead of e8q)
        * Rook mobility corrected
        * Capturing of rook on h8 no longer wrongly resetting Black castling
          rights


 ---------------------- 2003/01/21 version 4.0.2 ----------------------
  Bugfixes:
        * Base move in the hash was occasionally getting overwritten
        * On rare occasions the engine would hang


 ---------------------- 2003/01/17 version 4.0.1 ----------------------
  Bugfixes:
        * Pawn hash size was 10 times larger than requested


 ---------------------- 2003/01/17 version 4.0 ----------------------
  Chess:
        * Pawn evaluation code totally rewritten
        * Some passed pawn recognition/scoring revamped
        * King safety shuts off sooner and king-to-the-center bonuses start
          sooner as well
        * Rebalanced the values of 8th rank blockade penalties
        * Thinking longer just after leaving the book
  Internal:
        * Pawn hashing implemented
        * Forcing hash move first in quiescent move ordering
        * Moved all initialization code into the initialization section
        * Book-reader and some WinBoard messaging improved
  Optimizations:
        * Search is faster
  Bugfixes:
        * In positions with more than 128 legal moves, memory was getting
          overwritten, so increased legal move limit to 192
        * Trojan attack code was wrong for Black bishops
        * White 7th rank pawns with opposing pieces in front of them were
          scored incorrectly
        * Early queen penalty was wrong and could cause a crash under certain
          circumstances


 ---------------------- 2002/10/14 version 3.31 ----------------------
  Bugfixes:
        * Corrected the occasional misplaying of the last move(s) listed in
          opening book


 ---------------------- 2002/10/09 version 3.3 ----------------------
  Chess:
        * Added reward for not trading queen when opposing king position is
          compromised
  Features:
        * Changed hash setting in Horizon.cfg file from mysterious
          power-of-two values to MB units
  Optimizations:
        * Search is slightly faster
  Bugfixes:
        * Black bishops were being counted as Black rooks! This affected all
          the Black rook code as well as peripheral dependencies like
          calculation of scaling factors for center control and king attacks.
          Not all of this confusion has been corrected, but it is well
          on its way towards being fixed
        * Rook-behind-passed-pawn logic was wrong
        * Queen support/attack of passed and candidate pawns was wrong
        * Attackability of outpost squares by opposing pawns was incorrect
        * Penalty for having no pawns was being assessed twice
        * Removed spurious "Missing personality file" message at initial
          launching in DOS-mode


 ---------------------- 2002/07/01 version 3.2 ----------------------
  Chess:
        * Trade-down code totally rewritten
  Internal:
        * Size of hash signature increased from 40 bits to 64 bits to
          eliminate hash collisions once and for all
        * Added some hand-coded assembly routines
        * Lazy eval tweaked
  Optimizations:
        * Search is faster


 ---------------------- 2002/05/10 version 3.1 ----------------------
  Chess:
        * Re-wrote outpost coding
        * Introduced a fairly large penalty for blockading 7th rank passed pawns
        * Removed side-to-move bonus as well as a small penalty for blocked
          pawns
        * Rook-behind-passed-pawn bonus has been boosted
        * In the endgame the king becomes active a little sooner
        * The opening book has been reworked again


 ---------------------- 2002/03/30 version 3.0 ----------------------
  Chess:
        * Weak pawn logic added
        * Center control has been reworked
        * Pawn blockading bonuses added
        * Knight/bishop outposts now rewarded
        * Rook/queen on 8th rank now given a bonus
        * Rook mobility added
        * More fianchettoed logic added
        * Thinking 1.5 times as long on first move out of book
        * The repertoire opening book has been totally replaced
  Internal:
        * Knight, rook and queen square tables added
  Optimizations:
        * Faster search
  Bugfixes:
        * Pawn islands and open files were not recognized properly
        * Doubled pawns were being scored twice as harshly as intended
        * Weak back rank penalty was sometimes wrong
        * Endgame logic wasn't kicking in when it was supposed to
        * Configuration file comments were "live"


 ---------------------- 2002/01/29 version 2.01 ----------------------
  Chess:
        * Some king safety and development tweaks added
        * Thinking twice as long on first move out of book
  Bugfixes:
        * Wrong center control table was used in version 2.0, replaced it


 ---------------------- 2002/01/28 version 2.0 ----------------------
  Chess:
        * Pawn structure code totally rewritten
        * Much work done on fianchettoed-bishop / pawn-structure relationships
        * Center control totally reworked
        * King safety is now more aggressive, resulting in a 50% to 75%
          search-depth speedup for tactically sharp positions
        * Opening book lines further refined and new lines added
  Internal:
        * Uncoupled all non-pawn logic from pawn code in preparation for pawn
          hashing
        * Piece-pawn relationships (ie: doubled rooks on fully-open or
          half-open files)  moved into appropriate piece code section and
          rewritten
  Optimizations:
        * For the opening stage of a game, searches are now 2 to 5 times
          faster(!!!)


 ---------------------- 2002/01/13 version 1.3 ----------------------
  Chess:
        * Modified center control
        * Simplified pawn structure code
        * Improved king safety when fianchettoed
        * New opening book by Jim Monaghan
  Internal:
        * Replaced compiler 16-bit pseudo-random number generator with a full
          64-bit type and added more bits to hash signature to prevent random
          moves caused by hash collisions. Passed on improvement to Beowulf
          team.
        * Reduced the size of hash entries so 36% more positions can now be
          stored in the same amount of memory. Passed on improvement to Beowulf
          team.
  Optimizations:
        * Search about 30% faster


 ---------------------- 2001/12/06 version 1.2 ----------------------
  Chess:
        * Pawn structure code made more elaborate
        * Base of pawn chains is examined in more detail for weaknesses and
          possible attack
        * Weak, shielded pawns are not penalized as much as unshielded ones
        * Pawn distortion is now penalized
        * Added small bonus for pushing pawns
        * Prevented rash advancement of king shield pawns
        * Pawn islands added to scoring
        * Adjusted bishop vs knight in endgame code
        * Center control adjusted
        * Rooks and queens on 7th rank removed from endgame considerations
        * Early queen detection modified
        * Reduced connected passed pawn bonus and corrected a bad error in
          recognizing connected-ness
        * Castled king now slightly discouraged from moving into corner square
        * Mobility scoring now continues throughout the endgame
        * Made many small adjustments to bonus/penalty values.


 ---------------------- 2001/11/1 version 1.1 ----------------------
  Bugfixes:
        * Beowulf time-control code causes time-losses when playing a
          conventional clock. Reverted back to my own time-control code


 ---------------------- 2001/11/1 version 1.0 ----------------------
  Chess:
        * Changed doubled rooks reward: only given when on semi- or fully-open
          files
        * Pumped up king safety slightly and made uncastled offense/defense
          better
        * Added reward for connected passed pawns
  Features:
        * New time control from Beowulf supports conventional time-control as
          well as Blitz
  Bugfixes:
        * Horizon thought it was always playing the opening! That's why
          mid-game and endgame play was so mysteriously weak. This bug was
          introduced back in version 0.5
        * Infrastructure problem where hash was always set to 16MB is now fixed
        * Rooks on h-file were not recognized previously


 ---------------------- 2001/10/25 version 0.6 ----------------------
  General:
        * First publicly released version. There is no meaningful change from
          0.5.


 ---------------------- 2001/10/16 version 0.5 ----------------------
  Chess:
        * Toned down king safety so other positional factors have more
          influence
        * Added penalty for having no escape squares for king
        * Added penalty if king is threatened and queen is on other side of the
          board
        * Center control now has much more importance
  Optimizations:
        * Tweaked search params for 10-15% speedup
        * Made pawn structure code more efficient
        * Noticeable increase in kNps, depth of search, and playing strength
  Bugfixes:
        * Fixed trapped bishop bug


 ---------------------- 2001/10/11 version 0.4 ----------------------
  Chess:
        * Rewrote king safety again and pumped it up
        * Added fianchettoed bishops to control-of-center code
        * Added mobility scores for knights and bishops
  Optimizations:
        * Minor tweaks for efficiency
  Bugfixes:
        * Found a couple of errors in Beowulf passed pawn code. Passed this
          knowledge on to Beowulf team and folded in resulting Beowulf passed
          pawn code


 ---------------------- 2001/9/20 version 0.3 ----------------------
  Chess:
        * Incorporated some ideas from Crafty regarding Trojan attacks and bad
          trades
        * King safety was awful, rewrote it and now it's merely bad
        * Rewrote pawn structure code - this part is much improved
        * Added reward for pawns blocking opposing bishops
  Optimizations:
        * Finally gave up on detecting pins and lost pieces. It just takes too
          much time


 ---------------------- 2001/8/22 version 0.2 ----------------------
  General:
        * Replacing old, slow code with more traditional evaluation
        * Not much to distinguish Horizon from Beowulf at this point


 ---------------------- 2001/7/1 version 0.1 ----------------------
  General:
        * My first attempt is a new eval atop Beowulf codebase
        * The engine is not very strong
        * I've broken almost all the rules of chess common wisdom and my ideas
          don't work
        * The search depth is dismal
