10-21-95: Arasan 2.1
  1. Several fixes and enhancements have been made in the search module,
     especially in the null move code.  As a result, Arasan 2.1 is
     about twice as fast in completing a search compared to version 2.0.
  2. Arasan is now more aggressive about allocating memory for the hash
     table.  Generally it will use about twice as much RAM as version 2.0.
  3. The opening book was changed to a more compact format, to allow
     somewhat more opening moves.  The book now contains over 20,000
     positions.
  4. The PGN parser now handles things like "0-O-O" for castling.  Also,
     a game may now end with the "*" symbol (meaning the game is incomplete).
  5. A fix was made in Move_Generator::Check_Evasions for check evasion
     moves that happen to be promotions.
  6. Fixed a bug in Bearing::Pinned.
  7. Fixed some bugs in EPD output.
  8. The window size and position are now saved on exit and restored on
     startup.
  9. The Preferences and Search Limits dialog boxes have been converted
     to property pages.  A bug was fixed where exiting the Search Limits
     dialog without changing the settings caused the search to
     terminate.
  10. A color selection property page has been added.
7-1-95: Arasan 2.0
  1. Possible crash bug in Log module fixed.  This occurred when there
     was no predicted move after a search (rare, but possible).
  2. A fix was put into the Notation module for handling "Informant-
     style" capture moves (no "x").  This is mostly important for the
     opening book program ("makebook").
  3. The PGN reader did not handle games that ended with the checkmate
     symbol ('#').  This has been fixed.
  4. The "Resume" command in the Clock menu was not working.  It has been
     replaced by a "Pause" command that toggles the clock state.
  5. The "Computer plays White" menu command now has a check mark to
     indicate the current state.
  6. English opening names were not being shown in some circumstances.  A
     fix was made for this in ECO.CPP.
  7. The computer failed to correctly announce check after making a book
     move, or in some cases would announce it when there was no check.
     This was fixed (in CArasanView::update_board).
  8. The PGN and EPD readers have been improved to more gracefully handle
     bad input (e.g. control characters).  Also, a bug that could cause
     the EPD reader to hang was fixed.  Empty PGN games (no move section)
     could also cause a hang - fixed.
  9. Fixed a crash when ^O was typed (16-bit version only).
6-1-95: Arasan 2.0 beta
  1. Converted to use MFC and Visual C++.  One code base for 16 and 32
     bit versions.
  2. ECO classification implemented.
  3. EPD file support added.
  4. Opening book is now stored in a DLL.
  5. On-line help implemented.
  6. The parameters in the Scoring module have been adjusted to give
     better play in the opening and early middlegame.  This hasn't helped
     performance on the test suite, but I still think it plays better.
  7. The positional scoring routine has been consolidated into one function,
     for efficiency reasons.
??-??-95: Arasan 1.5 (not released)
  1. Casting moves that give check (e.g. O-O-O+) were not being
     parsed by the PGN reader.  Also, the PGN writer now puts out
     the '#' symbol for checkmate.
  2. Implemented the "deep null" algorithm described by Chr.
     Donninger, ICCA Journal v. 16 no. 3, 1993.
11-1-94: Arasan 1.3
  1. Fixed the following bug: when replaying moves with ^F, after a
     promotion move, the piece being promoted to was invisible.  It
     was actually there and became visible after the next move.
  2. Made a small change to the hash insertion code.
  3. Increased MoveGen::MaxMoves to 200.  This fixed a crash in
     test 330 in the ECM test suite.
  4. Fixed a bug in Bearing::Pinned.
  5. Several fixes and extensions have been made in the Notation
     module.  It now accepts a wider range of input formats and
     produces more correct PGN output.
  6. The version # was not being shown in the About box - fixed.
  7. Fixed a bug in makebook.cpp that caused many weights in the
     opening book to be wrong.
  8. Fixed a possible crash when the side to move is stalemated and
     the time control is set to Time_Limit, Game, or Tournament.
  9. The principal variation is searched with a wide but not infinite
     window.  It is now re-searched with a wider window if the
     initial search value is outside the search bounds.  Also,
     the constant Inital_Search_Window has been changed to 180,
     which seems to give a bit better performance.
  10. More additions to the opening book.  Added WCSAC test suite.
8-16-94: Arasan 1.2a
  1. Fixed a bug in the Options module: caused assert failure if
     arasan.ini was not present on startup.
  2. Fixed two bugs in computation of attack info.  One could
     occur after an en-passant capture.  The other case in which
     attack info could be incorrect was following a castling move.
     Added some debug code (-DDEBUG_ATTACKS) to test attack updating.
     Also corrected a bug in Search::draw.
  3. Added some more test suites.
8-6-94: Arasan 1.2
  1. Fixed a time control bug in module Search.  This was causing
     the program to fail Bratko-Kopec test #12.
  2. Added a positional scoring term to penalize the program for
     placing pieces in front of unadvanced center pawns.  Also
     added a knight mobility score and made some changes to the
     computation of bishop mobility.  Center control scoring
     parameters have also been tweaked, for better performance in
     the opening.
  3. TESTSRC has been converted to accept a subset of the Extended
     Position Description (EPD) format.  All the test suites have
     been converted to this format, which allows storing the key
     move and position together in one file.
  4. Two new types of time control, "Tournament" and "Game", are
     now supported.  A secondary time control can be specified.
  5. Arasan now retrieves the predicted game continuation from the
     hash table.  The code used in earlier versions to keep track
     of the predicted continuation was unreliable.
  6. A couple of improvements have been made to the search extensions.
     The search is extended if a capture move is made and the capturing
     piece is "backed up" by another piece of the same color.  Also,
     the constant Check_Depth has been changed to 2.
  7. Since the whole point of trying the null move is to cause cutoff,
     Arasan no longer repeats a null move search with a wider window
     if cutoff fails, as it used to.
  8. The log was not being cleared before a "Load Game" command
     was executed, so if this command was executed twice, the second
     time the game would not load correctly.  This has been fixed.
  9. The opening book has been expanded to approx. 10,000 half-moves.
 10. The hash table stores the repetition count for a position.
 11. The Notation module had a bug.  A move might be incorrectly flagged as
     ambiguous if two pieces had possible moves to the destination square,
     but one of them happened to be pinned.  This is now handled.

4-27-94:  Arasan 1.1.
  This version has no user interface changes.  However, there are
  a number of bug fixes and internal improvements:

  1. In saving a board using FEN, the en passant square was not
     being written out when an en passant capture was possible.
  2. In reading in a board from a position file, the en passant
     square in the board class was set incorrectly.
  3. Arasan would prevent the user from escaping check by making
     an en passant capture.  This has been fixed.
  4. When saving a game, the month was being written incorrectly
     in the PGN date field.  This has been corrected.
  5. In the hash table used by the Search class, the ply was
     being stored instead of the depth (limit-ply).  This caused
     some nodes to be evaluated by table lookup when they should
     have been searched.  This a couple of other hash table
     bugs have been fixed.
  6. Castling and en passant status is now stored in the hash
     table and must match that of the current board for a
     position to be retrieved from the table.  To be 100% correct,
     the repetition count should be stored too, but that is
     still not done.
  7. The move ordering calculation in class Move_Ordering has
     been improved.  In most cases, this will make searching
     faster (however, this is partly masked by the hash table
     fix, which makes some searches slower).
  8. At each iterative deepening, the search used to try moves in
     the order of scores returned by the previous search.  Now it
     tries the highest-scoring move first, but calls Move_Ordering
     to sort the remaining moves.  This is another speed enhancement.
  9. The search module now always starts with a 1-ply search -
     it used to begin with a 2-ply search; this could cause
     the program to miss a one-move mate and play instead a
     mate in 2.
 10. A search now terminates when the side to move detects that
     its opponent has a forced mate in n, where n <= search
     depth.  Further searching will not change the score.
 11. In some cases, the search routine was not performing the
     forced move extension.
 12. Additions and improvements have been made to the endgame
     evaluation in module Scoring.  These changes significantly
     improve the program's play in simple king and pawn endgames.
     However, the program is still fairly dumb about endgames.
 13. The "TESTSRC" program (distributed with the source) has been
     extended so that it can read >1 position from a single file.
     The test suites distributed with version 1.0 have been
     consolidated into single files.  Also, a file has been added
     (WINATCHES.FEN) containing the 300 "Win at Chess" problems.
 14. Rebuilt .EXE with Borland C++ 4.0.

3-8-94:  Arasan 1.0 initial release

