Changes in Arasan 17.4:
1) Deeper LMR (and different reduction formula) After a LMR search
fails high, first re-search with no reduction but zero width bounds,
then only do a full-width, full-depth search.
2) Reduce q-search pruning margin.
3) Bug fix for pondering in Winboard mode. Engine could fail to ponder
again after a successful ponder.
4) Bug fixes to Winboard analysis mode.
5) Bug fix in Board::wouldAttack.
6) Widen somewhat the range of conditions that will prevent
a move from being pruned, based on the null-move threat (if
there is one).
7) Simpify & tune late-move pruning code and remove vestiges of history
pruning.
8) Add .EXPORT_ALL_VARIABLES target to Linux Makefile, to make build
targets work that depend on redefining CC etc.
Changes in Arasan 17.3 (Sept. 2014):
1) Reduce doubled pawn score in endgame.
2) Fix some bugs involving hash size settings for UCI.
3) Minor changes to outpost scores.
4) Fix a couple bugs in "makebook" program.
5) Some king safety enhancements.
6) Tuning of futility pruning parameters.
7) History pruning disabled.
8) Fixes to history and killer move handling.
9) Simplify capture extension code and disable "easy nove" if
capturing the last piece.
10) Increase see pruning depth to 1.5 ply.
Changes in Arasan 17.2:
1) Fix "st" command in Winboard protocol to interpret time as seconds.
2) Scoring changes: king safety, king cover, weak pawns.
Changes in Arasan 17.1 (May 2014):
1) Scoring changes: connected passer code, knight and bishop
piece square tables, new king safety scoring.
2) Add special-case eval code for K vs K+R and K vs K+Q endgames.
3) Bug fix: validate hash move in q-search before using it.
4) Changes to handling of book selectivity option.
5) Adjust variable strength option so bottom end of strength scale
is lower (will blunder sometimes).
6) Increase ply depth in reduced strength mode for very low material
endgames (engine was having difficulty mating in these cases
even at moderate strength settings). This also fixes some
problems with playing into stalemate.
7) Better handling of out-of-memory errors when allocating hashtable.
8) GUI fix: initialize all engine options at start of game. Fixes
problem with resignation setting not being obeyed.
9) GUI fix: clear any previous game result and other details after
loading a position file.
Changes in Arasan 17.0b (Apr. 2014):
1) GUI fix: PGN reading was not working. Also fixed PGN reader to
skip variations (if present).
Changes in Arasan 17.0a:
1) GUI fix: takeback was not working properly.
2) GUI fix: changing strength during a game was not working.
Changes in Arasan 17.0 (March, 2014):
1) A common hashtable is now used in both quiescence and non-
quiescence search, instead of using a separate q-search eval
cache (hashtable stores static evals so also serves as an
eval cache).
2) Scoring module no longer does lazy eval.
3) Opening book format has changed. Manual tuned book file is
now annotated PGN instead of a custom text format. Book code
is simplified.
4) Opening book is no longer modified at runtime by result and
score learning. Only position learning (aka permanent brain)
is supported now.
5) Improvements to opening book and ECO classifier.
6) Qsearch no longer does pre-selection of capture targets.
Qsearch forward pruning margin and logic changed.
7) Bug Fix: correct time field of "post" output for Winboard/xboard
(was off by factor of 10).
8) Bug fix: declare on startup for UCI that the tablebase type
option is "Tablebase type", not "TablebaseType".
9) Bug fix: check for previous move legal before returning draw
score.
10) Bug fix: Don't apply history pruning to moves before the
history phase of move generation.
11) Bug fix to KP + wrong Bishop vs. K draw detection.
12) Bug fixes to lockless hashing. But also: restore validity
check for moves fetched from hash, since lockless hashing
is not 100% reliable.
13) A few evaluation changes.
14) Improved debug output when -DSEARCH_STATS enabled.
15) Performance fix: remove unneeded update of node count at end
of search function.
16) Change to time usage: generally uses more time in early phase
of games.
17) Changes to razoring.
Changes in Arasan 16.3 (Dec. 2013):
1) Generate/search discovered checks in qsearch.
2) Changes to forward pruning in qsearch: re-introduce futility +
SEE pruning in addition to filtering capture targets in movegen.
But do not prune discovered check candidates.
3) Prune some non-capture evasions in qsearch.
4) Changes to check and capture extensions.
5) Refine extension logic when null move search shows there is
a threat related to a previous move that was reduced.
6) Defer SEE pruning until a legal move has been found/searched
(fixes bugs in mate + stalemate detection).
7) Speed enhancements in SEE, pin detection, and check status
computation.
8) Changes to weak pawn and outpost scoring.
9) Cleanup code and add some extra checks in the Notation class.
10) Fix in move generator: do not repeat hash move in winning
capture phase.
11) Use shorter time check interval for very short time controls.
Convert timing code to use high-resolution timer.
12) Change formula for computing min book weight from selectivity
setting, to play a wider variety of opening moves.
Changes in Arasan 16.2 (October 2013):
1) Fix adjacent passed pawn code so bonus for this is independent of the connected passer bonus. Adjust various passed pawn related scoring params.
2) Add engine console command for perft.
3) Adjust scores for Rook on 7th and make dependent on game phase.
4) Fixes to weak pawn scoring and outpost code.
5) Simplify and fix SEE function. Use variant version with quick exit when only need to know if score is above or below a threshold.
6) Improvements to move ordering for check evasions.
7) Fix bad bug in lazy eval code of scoring module.
8) Bug fix: don't set the retrieved hash entry type to Invalid in cases where the score is in bounds but moves have been pruned.
9) Bug fix: remove redundant increment of parentNode->num_try in searchSMP.
10) Further clean up & optimize pinned piece detection.
11) Static null margins & futility margins adjusted.
12) Fix KBPK draw detection.
13) Makefile support added for a popcnt-enabled 64-bit Windows build.
Changes in Arasan 16.1 (Sept. 2013):
1) Fix UCI protocol bug that could cause engine to hang in cases where
ponder is on and game is terminating due to a draw by repetition
or rule.
2) Some speed optimizations for pin detection.
3) Bug fix in razoring code (return razor value from search).
4) Fix time & nps display for UCI (was off by factor of 10)
5) Some pawn scoring changes.
6) Bug fix: correct some of the constants in Attacks class.
7) Fix problem in UCI multi-PV analysis mode.
8) Allow LMR for checking moves and recaptures if they do not
meet the extension conditions (still disable LMR if side
to move is in check).
9) Fix console input handling in Windows.
10) Add -o (output file) option to "test" command.
11) GUI uses .chm help file format, for compatibility with Windows Vista, 7, 8.
Changes in Arasan 16.0 (July 2013):
1) Improvements to multi-core and multi-processor performance: limit
global memory usage, do dynamic adjustment of split depth.
2) Change book format, book weights are 0..100 not 0..10 now. New
larger opening book is included with Arasan binaries.
3) Book selectivity logic changed (again).
4) Fix bug in 50-move draw detection.
5) Move sorting no longer uses node counts; now an initial sort is
done by move score, then subsequently PV moves are moved to the front
each iteration, keeping other moves in the same order.
6) Check extensions are more limited now. Overall limit on extensions
at high ply counts from root is removed.
7) Search time can be extended more in case of fail-low or resolving a
fail-high.
8) Aspiration window changes. Fix bug that can cause array overflow in
aspiration window code.
9) Somewhat experimental self-play code added for testing (not enabled
in release builds by default).
10) Numerous adjustments to evaluation weights.
11) Score pawnless KRB vs KR and KRN vs KR as draws.
12) Bug fix: allow resignation when in fixed depth search and depth<=1.
13) Fix bug in handling of fail_high_root flag.
14) Convert to conditional variables for thread synchronizaton on Linux
+ Mac (fixes Mac OS problem where semaphores may not be cleaned up
on exit).
15) Fix stack size for threads on Mac OS (avoids bus error crash in deep
searches).
Changes in Arasan 15.6 (May 2013):
1) Bug fix in search (affects multi-core searching only).
2) Book selectivity logic changed (50 setting is a bit more selective now).
3) book.random option is fixed (was not working).
4) Book move kibitz for ICS is fixed so that weights are shown normalized
and the book selectivity rules are applied.
5) Fix "makebook" program to handle comments after PGN result.
Changes in Arasan 15.5 (Apr. 2013):
1) Fix bug that can cause illegal move from pondering.
2) Check for checkmate before returning 50-move draw.
3) Send Winboard variants in feature line (only "normal" is supported).
Changes in Arasan 15.4 (Apr. 2013):
1) Internal time accouting is now in millseconds, not centiseconds.
2) Fix time management to reduce losses on time in very fast games.
3) Native GUI now recognizes "offer draw" command (fixes bug in draw
detection). Also though engine now reverts to using result command
in cases of draw by rule before a move is made.
4) Remove extra quote from response to "protover" command in Winboard
(so myname feature works).
5) Modify how book selectivity setting works. Selectivity has to be lower
now to select very rare moves.
6) A few more code portability fixes.
7) Fix UCI protocol bugs leading to occasional loss on time with ponder on.
8) Fix strength option scaling so play is stronger at high values.
Changes in Arasan 15.3 (April 2013):
1) Fix a bug in king cover calculation.
2) Modify root LMR logic.
3) Reduce memory usage for "makebook" utility by shrinking/packing structures.
4) Fix "makebook" so it works on Linux.
5) Improve makebook speed by optimizing Board::reset.
6) Some tweaks to trade down scoring, especially to discourage trading down
from a possibly winnable to a drawish endgame.
7) Change hashtable replacement policy so exact hash code matches always
replace existing entries.
8) Main search probes q-search cache for a pv move if the main hash table
does not provide one.
9) Improved ordering of evasion moves.
10) Add extra time to search if resolving a fail-high at the root.
11) Thread limit raised to 64.
12) Thread split depth is dynamic based on number of threads.
13) Some code portability fixes, in particular fixing big-endian support.
Changes in Arasan 15.2 (Feb. 2013)
1) Some speed improvements especially when multithreaded.
2) Code cleanup and bug fixes related to draw handling (could lose on
time in server games, in rare cases, due to problems in this area).
3) Some more code conversion to C++ style intead of C. Use STL pair template.
4) Minimum search time changed to 10ms to better support very fast test
games.
5) Bug fix in code for checks in qsearch: ensure checking moves do not
place own king in check.
6) Some weights changed in scoring module based on CLOP.
7) Simplified razoring code.
8) Qsearch forward pruning changes. We use only pre-selection of captures
now, not traditional forward pruning. Margins for this adjusted.
9) Linux-specific bug fix for occasional crashes when >2 threads in use.
10) Fix in aspiration window code for rare overflow condition when
failing low with a mate score.
11) Fix bug setting hash sizes > 2GB through Winboard/UCI.
12) Somewhat more general Rook pawn vs wrong color Bishop draw detection.
Changes in Arasan 15.1 (Nov. 2012):
1) Correctly parse Winboard "level" command that includes a fractional
part in the time increment.
2) Fix bug in result learning code: incorrect learn value when drawing
a high-rated opponent as Black.
3) Fixes to eval for potential passed pawns. Small increase in castling
scores.
4) Changes to "trade down" material scoring.
5) Remove a redundant check for moving a pinned piece when searching
checks in q-search.
6) Fix UCI multipv output when there are fewer legal moves than the
specified multipv count.
7) Change max hash table size for GUI.
Changes in Arasan 15.0 (Sept. 2012):
1) Increase static null pruning threshold at low depths.
2) Scoring fixes/improvements: king cover, potential passed pawns,
bad bishop.
3) Fix code that tracks node count per ply 0 move, for move ordering.
4) Changes to LMR reduction amounts and ply 0 reduction threshold.
5) Avoid null move if hash table info indicates it would fail to
generate cutoff.
6) Losing checks are no longer extended, in any case. Threat extension
is now done differently, similar to Stockfish.
7) Re-work of SMP code to increase thread usage by supporting the
"helpful master" algorithm.
8) Fix a bug in communicating with the Fritz interface, specifically
the "process testsuite" command.
9) Fix UCI and console score output so upperbound & lowerbound status
displayed when appropriate.
10) Fix setting Strength option from native GUI.
11) Some GNU Makefile fixes for MingW support. clang is also supported
now.
Changes in Arasan 14.3 (July 2012):
1) King safety is scaled by the opponent's material value (fixing a bug).
2) Adjustments and fixes to strength reduction feature.
3) Fix to material scoring for R vs 2 minors.
4) Do not terminate search after forced move if in analysis mode.
Changes in Arasan 14.2b:
1) Fix sporadic hang in GUI under Windows 7.
Changes in Arasan14.2a:
1) Another fix for "ping" handing in engine to cure hang problems in Arasan
GUI.
2) Strength reduction operates during pondering.
Changes in Arasan 14.2 (June 2012):
1) The chess engine handled input from the the UI in several places
and had duplicate code for scanning input and breaking it into lines.
This is now centralized and simplifed.
2) Some other code cleanup, especially conversion from C-style string
handling to C++.
3) Simplified code for lazy eval. Partial (lazy) scores are no longer
cached in the scoring module (such scores were seldom used anyway).
4) Outpost scores reduced.
5) Tweaked threshold values for history pruning and late move pruning (due
to a bug, 14.1 actually did only late move pruning above depth = 1 ply).
6) Reduced thresholds for static null pruning.
7) Some changes to LMR and root move reduction logic.
8) Bug fix: ensure final stage of ply 0 search window widening sets a
correct upper/lower bound.
9) Improvement to logic for searching checks in q-search.
10) Fix material eval adjustment for Q vs 2R.
11) Support is added for varying the engine strength via UCI or Winboard
options (Arasan GUI supports this too).
12) GUI bug fix: search could hang when a "Go" command is issued when it
is the user's turn to move, and the user then makes a manual move before
the search completes.
13) Winboard driver fixes: pings could be processed out of order in some
cases. Also, an extra move could be sent after Winboard has send a
"resign" or "result" command.
Changes in Arasan 4.1 (Mar. 2012):
1) Fix (again) UCI promotion move formatting bug.
2) Fix Winboard "memory" command.
3) Support added for MingW environment (use Linux Makefile for this)
4) Q-search selectively generates only moves that will likely reach
futilty threshold.
5) Fix icc Makefile (on Windows).
6) Fix bug in PV display in Windows GUI.
Changes in Arasan 14.0 (Mar. 2012):
1) Board::wouldCheck function handles promotions.
2) Much simplifed time management, functions better in particular under very
short time controls.
3) LMR is performed at root node (formerly was not).
4) Null move uses R=3 with verification.
5) Simplified hash table implementation.
6) Move generator defers SEE test on captures until the move is used (this
was done previously in the qsearch but not elsewhere).
7) Better sort algorithm in move generator.
8) Fixes to learning code. Hash table (w/ learn info) was being cleared
at each new game, now learn info is retained.
10) Some code cleanup, esp. conversion from char * to C++ string usage.
11) Arasan uses Gaviota tablebases. Fix tb probing when en passant
capture possible. Tablebase hits now are cached in the hash table.
12) Additional UCI & winboard options supported. GUI now uses the standard
winboard options command to send options to the engine.
13) Fix bug involving mate scores in UCI analysis mode.
14) Makebook program can directly consume PGN.
15) Arasan engine source is released under the MIT license (same license used
by the Gaviota tablebase code).
Changes in Arasan 13.4 (Dec. 2011):
1) Fixes to UCI analysis mode.
2) Fix handling of UCI Threads option.
3) Arasan GUI allows changing thread count for search.
4) Support "cores," "memory" and "egt" features in Winboard. Note: Arasan
command-line switches take precedence over Winboard settings.
5) Memory for the evaluation cache is now dynamically allocated and
is sized relative to the main hash table.
6) Some changes to pruning and lazy eval logic.
7) Fixed faulty bitbase data. Fixed "eval" command to handle bitbase
and tablebase probes properly.
8) Improvements to UCI time management for very short time controls.
Changes in Arasan 13.3 (Nov. 2011):
1) In Winboard mode, Arasan still accepts but does not rely on the
deprected "white" and "black" commands to keep track of the
computer's side of the game.
2) Winboard "level" command accepts time of form mm:ss and allows decimal
times.
3) More general code for trapped bishop.
4) Static null pruning is implemented.
5) Dynamic null reduction based on score (aka "smooth scaling").
6) Changes to razor & futility margins and related code.
7) Fixes to history pruning. History table is global now, not per-thread.
Changes in Arasan 13.2 (Oct. 2011):
1) Fix in search to eliminate some unnecessary re-searches.
2) Fixes to material scoring for unbalanced material positions.
3) Simplified bonus code for Bishop in endgames with pawns on both sides.
4) Revised bonus for trading material when ahead.
5) Misc. scoring fixes, esp. for connected rook on 7th.
6) Utility programs such as makebook now do not create a log file.
7) Another/better fix for UCI output after a quick mate.
Changes in Arasan 13.1 (Aug. 2011):
1) KPK bitbases are now internal to the program, not stored in files.
2) Minor change to checks in qsearch conditions.
3) Fix bug in see pruning affecting stalemate detection.
4) Fix bug where UCI PV output was omitted in case search terminated
very rapidly (for example, in cases of a forced mate).
5) Handle DOS-style CR/LF from chess interfaces such as SCID.
6) Some book additions/fixes.
Changes in Arasan 13.0 (Aug. 2011):
1) History pruning and see pruning are implemented.
2) Fixes to history code.
3) Code cleanup and parameter tweaking in evaluation, especially to
isolated pawns, pawn center scores, passed pawns, mobility, king safety.
4) Fixed bug in adjacent passer code.
5) Potential passer code is more accurate.
6) Material scoring changes: queen value is higher, re-introduced some
special case adjustments for bad trades.
7) Check extensions have been reduced to 3/4 ply.
8) Hash table code cleanup & bug fixes.
9) Intel C++ supported under Windows.
10) GUI edit menu allows paste of PGN and FEN from the clipboard into the GUI.
11) fix GUI memory leak.
12) By default, Arasan will play a somewhat wider variety of openings (the
book selectivity option can be used to change this).
Changes in Arasan 12.3 (Feb. 2011):
1) Changes to move ordering in qsearch - formerly we used to call see()
in the initial move sorting phase but now it is deferred until we
are ready to use a move - this is how most programs do it.
2) Linux version uses an ASM routine (if USE_ASM is defined) for
bit extraction - this is much faster (on CPUs that support it).
3) Small fix to pin detection.
4) Bug fixes in scoring: specifically in adjustMaterialScoreNoPawns,
outpost scoring, potential passer scoring, passer piece block.
5) Reduce penalty for open files around king (was excessive)
6) Qsearch futility prune margin increased back to 1 1/4 pawn. Changes
to LMR reduction depth and thresholds.
7) Endgame capture extension is made in more cases but is decreased to
1/2 ply extra depth
8) Several UCI protocol fixes.
Changes in Arasan 12.2 (Nov. 2010):
1) Somewhat complex trade scoring has been removed - in favor of just
adjusting piece values.
2) More aggressive futility pruning, margin is adjusted at 1/2 ply increments.
3) Changes to extension/pruning logic. LMR now done after futility. Extra
LMR is done at high depths/move counts.
4) King safety scoring changed - open files are now scored separately,
score is based on opposing Rook + Queen count.
5) Bishop pair score reduced (but increases in endgame).
6) Changes to pawn scoring: outside pawn & doubled pawn scores reduced.
7) Outside pawn calc is done via a table, like Crafty does.
8) Penalty for own pieces ahead of passer; somewhat reduced bonus for rook
behind passer.
9) EGTB values are no longer hashed (seemed to cause problems).
10) Minor GUI fix: remove trailing junk after game description.
Changes in Arasan 12.1 (Aug. 2010):
1) Remove extra "quit" output on program termination
2) Decrease thread wait time on exit
3) Fix UCI tablebase support - enable tablebases when path is set
4) Fix to outside passed pawn scoring
5) Increase king attack scores
Changes in Arasan 12.0 (Aug. 2010):
1) Eval code is changed to split eval terms more explicitly into
opening, middlegame and endgame terms and these are merged via
a weighting function based on material.
2) Some eval changes to king safety, bishop pair, etc.
3) King safety cache was also used for opponent pawn proximity - but
the hashing didn't account for opponent pawns. This is fixed by
not storing proximity in the cache.
4) Material score adjustment added for Q vs R + Pawns, and R vs pawns.
5) Some new "trade down" bonus code is present to encourage exchanging
when ahead - there was some code for this earlier but less correct.
6) Fix to futility pruning margin calculation.
7) Fixed a Winboard/xboard driver bug where some "ping" commands from
ICC were being ignored.
8) Fix a rarely occurring bug in qsearch: generating a check
that involves moving a pinned piece.
9) Fix bug in razoring code that could cause array overflow at very
large search depths (as in endgame).
10) Fix display in GUI game list dialog & main window to include year of game
Changes in Arasan 11.7a (Feb. 2010):
1) Fixes, rebuild of GUI for out of memory problem.
2) Include "Chess Usual" font in installer.
3) Include version in app name so registry path is unique for each version.
Changes in Arasan 11.7 (Feb. 2010):
1) Fix in PGN parser for rare cases where moves need rank + file for
disambiguation.
2) Changes to LMR and other pruning logic.
3) Fix time measurement bug in Linux version.
4) Fix thread deadlock problems on Linux.
5) Convert to POSIX unnamed semaphores for Linux, to ensure semaphore
cleanup on program exit.
6) Multiple other code fixes and warning removal for Linux compiles.
7) Bug fix in Board::wouldCheck.
8) Increased scores for bishop pair, Rook on 7th
9) Fix UCI mate score output.
10) Fix crash bug in UCI mode on Vista, Windows 7
Changes in Arasan 11.6 (Nov. 2009):
1) Several speed improvements:
a. Greater use of lazy eval + partial evals are now cached.
b. Best move and score in eval cache can be independently updated.
c. Eval cache is shared across threads.
d. better alignment/sizing of structures
2) Scoring changes:
a. Bishop pair bonus decreased a bit
b. Mobility scores tweaked
c. Outpost scoring tweaked
d. Some king safety changes esp. for enemy pawns near King
3) Search changes:
a. Now using variable reduction null move again.
b. Allow reduce/prune on moves regardless of history, except the
two moves with best history are exempt.
Changes in Arasan 11.5 (Sept. 2009):
1) King safety scores are tapered off so they don't reach extreme values.
2) Mobility calculation improvements.
3) Changes to razoring logic.
4) Profile Guided Optimization (PGO) build uses deeper search on
fewer positions.
Changes in Arasan 11.4 (June 2009):
1) Fix to KBP draw code.
2) Fix Winboard/xboard driver to send "O-O" not "o-o" for castling.
3) Fix time calculation in tournament mode.
4) Scoring changes, fixes for Rook mobility & rooks on open files.
5) Scoring change in king safety: don't count Bishops more highly
than Knights in evaluating king attacks.
6) The usual book fixes/additions.
Changes in Arasan 11.3 (Mar. 2009):
1) Fix bug that caused occasional early search termination.
2) Fix Winboard communication to use a thread for greater reliablity.
3) Keep game file open - fixes some occasional failures to save games.
4) Fix Makefile to build "pgn2book" utility (some code fixes in this too).
5) Some search changes: Lessen futility margin. Enable additional extensions at ply 0. Enable a version of razoring.
6) Improved move ordering based on node counts.
7) Bug fix in outpost scoring.
8) Passed pawn scores increased.
9) Bug fix in GUI: bad PV display at high search depths.
10) Larger opening book.
Changes in Arasan 11.2 (Dec. 2008):
1) Fix square colors in mono mode in GUI display.
2) More Linux compile fixes.
3) Fixes for compilation on MacOS.
4) Bug fixes in scoring module (array overrun).
5) Some pawn race code added (ported from version 10.4).
6) Fixes to contempt factor based on ICC rating.
7) Bug fix in book learning.
Changes in Arasan 11.1 (Dec. 2008):
1) Fix mono mode in GUI display.
2) Fix compile problem with 32-bit Linux
3) Fix deadlock problem under Linux.
4) Some bug fixes in search.
5) Fix bug - contempt factor based on rating diff (when on a chess server)
was not being set.
6) Uninstaller removes .lrn file.
Changes in Arasan 11.0 (Nov. 2008):
1) Re-work to use "magic" bitboard logic instead of rotated bitboards. About
20-25% speedup from this.
2) Eval re-written to use bitboard attack functions for king saftey, mobility.
3) Some changes and fixes to search (especially LMR).
4) Check extensions are done at ply=0 now.
5) Substantial code cleanup, more consistent variable/function naming,
remove obsolete or redundant code.
6) g++ 3.2 and earlier are no longer supported.
7) Various scoring changes, including fixes to outside passed pawn scoring.
8) Remove unsafe optimization for q-search when in check.
9) Remove lock on main hash table - speeds up multi-threaded searches (thanks
to Bob Hyatt).
10) New position learning system - keeps learn data in a text file vs a
book file. Learn data is loaded into the main hash table (simpler and
avoids locking). Fixes to position learn code.
11) Fixes for loss on time with very short time controls.
Changes in Arasan 10.4 (June 2008):
1) Speedup illegal move detection in search.
2) Speedups in move generation.
3) Improved move ordering for check evasions.
4) Use IID more sparingly.
5) Several scoring changes, esp. fixes/improvements to material scoring.
6) Fix to "bk" command (to list opening book moves).
7) Time usage fixes/improvements.
8) A couple of locking fixes for more stable SMP operation.
9) Fix for invalid moves propagated to pv list
Changes in Arasan 10.3 (March 2008):
1) Fix bad search bug which caused different behavior in SMP and single
thread search code and unstable searches with 1 cpu.
2) Another search bug fix - caused problems in statemate detection.
3) Couple of scoring fixes.
4) Support Threads option in UCI mode.
Changes in Arasan 10.2 (Feb. 2008):
1) Fix possible crash bug: check for previous illegal move before hash
cutoff.
2) Forced move extension in q-search removed - caused some searches to
blow up (excessive nodes searched).
3) Limited razoring removed - in its place, wider use of LMR. Consolidate
reduction + pruning code. Disable recapture extension by default.
4) Some pawn scoring changes. Fixed asymmetric king center score in endgame.
5) Bug fixes in bad trade scoring.
6) Greater use of R=3 in null move.
Changes in Arasan 10.1 (Dec. 2007):
1) Substantially more efficient SMP support, keeps threads more active.
2) Some bug fixes in scoring and checking move generation, thanks to
Keiichiro Tashiro.
3) King safety and endgame scoring changes & fixes.
4) Fixed bug that could cause failure to move when there is a single
legal move from the tablebases.
5) Fix bug that could lead to illegal moves in pv display.
6) Fix long-existing move sorting bug.
7) Use narrower bounds on re-search (Negascout algorithm). Reduce re-search
frequency by setting flag when score is exact.
8) Fix bad search bug involving illegal move detection - in some cases a
valid score was returned after a previous illegal move. One symptom
was problems with stalemate detection.
Changes in Arasan 10.0 (Sept. 2007):
1) Fix to pawn scoring: a doubled pawn behind a passed pawn is no longer
counted as passed also.
2) Changes to king safety and mobility scoring. Bishop and queen attacks
and mobility are now checked in all directions (was formerly only the
"forward" direction).
3) Other scoring changes, including adjustments to piece trade scoring.
4) Multi-core/multi-procesor (SMP) support is now working, using the YBWC
algorithm. However the "helpful master" concept is not yet implemented.
5) Now supports 6-man tablebases. Some fixes added to better tolerate
incomplete 6-man tb sets.
6) Checks in q-search are on by default now. Checking moves are generated
for 1st two plies of q-search (configurable), but can be extended in
some cases.
7) Forced move extension tweaked - move generator marks move as forced
when a singular check evasion that is not a winning capture exists.
8) Some changes also to late move reduction and recapture extension code.
9) Null move verification search was broken - it works now.
10) Another fix for draw scoring - avoid draw when opponent is lower rated
11) Arasan outputs more information to UCI clients during a search.
12) UCI time management fixes.
Changes in Arasan 9.5 (October, 2006):
1) Fix bad mate scores from EGTB hit.
2) Numerous UCI fixes:
a) Fix notation for pv
b) Fix multipv output under Chessbase GUI.
c) Fix UCI pv output during ponder.
d) Fixes for hang under Shredder UI
3) Some additonal book fixes
Changes in Arasan 9.4 (Sept. 2006):
1) Some speed enhancements. For example, check evasion is incremental now.
2) Q-search has special code for check evasion. Checking move generation
can be enabled in the q-search (off by default).
3) Scoring changes: king safety, passed pawn, piece placement, bad trade.
4) Engine will kibitz if on ICC and opponent is a computer.
5) Fix for PV display under Arena with UCI: use O-O, O-O-O for castling.
6) Fix result learning information in arasan.log.
7) Fix draw accept logic - was erroneously accepting draws from lower
ranked players on ICC in some situations.
8) Fix tablebase probe logic - probes in more cases now.
9) The usual book additions/fixes.
Changes in Arasan 9.3 (July, 2006):
1) Another KBP vs K draw fix.
2) Bug fixed in pawn race scoring.
3) Passed pawn scoring changes.
4) King safety changes.
5) Some search changes. Reductions now not done in pv.
6) GUI fix: Fix Edit|Copy Game to Cliboard.
7) GUI fix: "Hint" command shows book moves.
8) GUI fix: Auto-saved games show computer side correctly.
9) Some Linux and Windows x64 specific fixes.
10) Larger opening book, book fixes.
Changes in Arasan 9.2:
1) Fix illegal move after promotion under UCI.
Changes in Arasan 9.1:
1) UCI protocol fixes
2) Fix tablebase/hashtable interaction problem
3) Some book additions/fixes
Changes in Arasan 9.0:
1) New king safety scoring routine.
2) Increased bonus for mobility in scoring module.
3) Disabled buggy code for wrong bishop draw (still recognizes
some simple cases).
4) A couple of rare crash bugs fixed.
5) Extension after repetition added.
6) "History pruning" added.
7) There is experimenal support for multi-threading, not
enabled in the compiled binaries.
8) The Linux version now compiles with gcc 4.0 and above.
9) Improved, larger opening book. Book selection logic has
been changed, so that Arasan will play a somewhat wider
selection of openings.
10) UCI protocol support.
11) GUI fixes to work on 120DPI displays. Also some fixes put in for
GUI occasionally getting out of sync with engine.
Changes in Arasan 8.4 (Feb. 2004):
1) Bug fixes in pin detection
2) Scoring changes
3) Better lazy eval in scoring module.
4) Improved pawn race scoring, handles more cases.
5) More liberal use of null move in endgames (but less aggressive use
of R=3).
6) "make install" target added to Linux Makefile.
7) use feature done=0/done=1 to bracket tablebase initialization.
Changes in Arasan 8.3 (Dec. 2004):
1) Small king safety change in eval.
2) Fix for crash on make move after "undo" in UI.
3) Some misc. code cleanup.
Changes in Arasan 8.2 (Nov. 2004):
1) Fixes to draw by repetition detection.
2) Several endgame scoring and bug fixes. Pawn race code is more accurate.
3) Remove losing moves (leading to mate) from move list - was supposed
to do this before but it works now.
4) KPK endgame is now computed using bitbases.
5) Some speed improvements in check evasion code.
Changes in Arasan 8.1 (Sept. 2004):
1) Fixed bad bug related to pawn promotions, giving unstable score with
promotion moves.
2) Some asymmetric eval added to avoid "locked" pawn positions
3) Pawn scoring changes.
4) Killer move phase now uses killers at ply-2.
5) GUI fix: "Think When Idle" option didn't work properly.
Changes in Arasan 8.0 (Aug. 2004):
1) Extended futility pruning is implemented now. Futility pruning and
razoring can be combined.
2) Passed pawns are scored higher.
3) "Capture" extension is now disabled by default.
4) Fixed some bugs in king-pawn hash table code
5) Minor changes to hash probe code.
6) Default tablebases cache size increased, changes to tablebase probe
logic. Generally this version does fewer probes.
7) New egtb code from Eugene Nalimov & Andrew Kadatch.
8) Significant changes to evaluation. Evaluation is simpler and
faster. A small evaluation cache is used.
9) Various speed enhancements, in move generator and elsewhere.
10) Some fixes to 50-move draw handling.
11) "makebook" program can now filter moves so that only moves
occurring with a minimum frequency will be included. New book
uses minimum frequency of 6 from a large PGN game collection.
12) a few minor GUI fixes.