		       Release Notes CBUFF 0.9.0
		Anjo Anjewierden (anjo@swi.psy.uva.nl)
		           November 15, 1993

Below are the release notes for CBUFF 0.9.  I will have little time
available until the end of the year to develop CBUFF further.  Most of the
utilities have already existed for quite a while and I therefore suggest
that they have entered the status of an "alpha-release".

The utilities have been tested extensively under Unix (compiled with GCC
2.4.5).  I leave the testing on other platforms to you.  I'm also looking
for those who can compile CBUFF on Amiga, Macintosh and MS-DOS (other than
Borland C++).  The public distribution will contain binaries for the Atari
ST.

The documentation is nearly complete.

New utility:
============

There is a new utility: "cunames".  This utility prints a frequency count
of the players and the source of the games in a database.  The intention of
"cunames" is to spot incorrect player and source names.

At the moment "cunames" can generate the following information:

-names file
	Names of the players (Black and White).
-place file
        Place where the game was played.
-players file
	Entire players field.
-source file
	Entire source field.

The top-10 of applying "cunames" to a large database results in:

cunames -names

2466  Tal,M
1258  Timman,J
1030  Karpov,An
 824  Kasparov,G
 802  Korchnoi,V
 722  Nunn,J
 684  Portisch,L
 672  Uhlmann,W
 664  Hort,V
 634  Spassky,B

cunames -place

5794  corr
4009  cr
3718  Moskva
3718  Budapest
3558  Bratislava
3446  BRD tt
3378  New York
3341  London
2903  Duisburg
2664  Manila

cunames -players

  74  Kasparov,G-Karpov,An
  74  Karpov,An-Kasparov,G
  42  Neumann,G-Anderssen,A
  42  De la Bourdonnais,Louis-MacDonnell,Alexander
  41  MacDonnell,Alexander-De la Bourdonnais,Louis
  34  Anderssen,A-Neumann,G
  33  Karpov,An-Timman,J
  28  Karpov,An-Korchnoi,V
  27  Timman,J-Karpov,An
  27  Short,N-Timman,J

cunames -source

2667  cr
1302  BRD tt
1124  Sverige
 781  USSR
 668  London
 659  Hastings
 653  Moskva
 624  corr
 605  Karlsbad
 571  Hamburg GER-chJI U20

Many players appear more than once under different names.  Kasparov
appears as:

 824  Kasparov,G
  64  Kasparov,Gary
  40  Kasparov,Garry
   6  Kasparov,Garri
   4  Gary Kasparov
   2  Kasparov

and Karpov appears as:

1030  Karpov,An
 164  Karpov,Anatoly
 118  Karpov,A
  16  Karpov,Anatoli
   8  Anatoly Karpov
   2  Karpov

The total number of player names is 32706 (including duplicates such as
those mentioned above).  The total size of the database is 192649 games,
such that the average per different player is about 11.8 games.  Note
that the total player count would fit within 16 bits, this presents an
opportunity to improve the space efficiency of "cusort" further.


Player names:
============

In order for "cunames" to work a number of changes have been made to the
way player names are extracted from the "players" field of a game.  If the
players field contains more than one hyphen, it is compared against a list
of known player names that include a hyphen (e.g. "Jan-Hein", "Lars-Bo",
etc.).  If there is a match then the hyphen is replaced by a space and once
again the names of White and Black are extracted.  Finally, the function
"normalisePlayer" is used to remove leading and trailing spaces, brackets
and so forth.  This is implemented as part of "getWhiteGame()" and
"getBlackGame()" and therefore applies to all utilities that use these
functions.


Place names:
===========

The function "getPlaceGame()" can be used to extract the place from a game.
This function uses a number of heuristics.  The main heuristic is that the
place is the first word of the players field.  There are obviously various
exceptions (e.g. New York, Wijk aan Zee), these are stored in the file
"places.def" and "getPlaceGame()" will load this file.


Sorting:
=======

Thanks to Urban Koistinen the "cusort" utility has been improved.  Urban's
algorithm is (much) more space efficient than my old one was.  I have been
able to sort a 11000 game database under DOS.  "cusort" reports the
amount of memory available, so you can experiment.  The C compiler still
generates a number of "sign-mismatches", I will work this out later.


CBUFF directory:
===============

In DOS and Unix you can specify a CBUFF directory.  CBUFF will read the
standard files (e.g. "ascii.sym") from this directory if they don't appear
in the current working directory.  The same applies to files specified with
the "-insert" or "-symbols" option.

In DOS say (do not forget the trailing "\")

   set CBUFFDIR C:\CBUFF\

In Unix say (do not forget the trailing "/")

   setenv CBUFFDIR "~/CBUFF/"

Make sure to copy the relevant files to the directory you mention.


Bugs fixed:
==========

* "culist" would generate an error message for games for which
  no Result was available.

* "culist" could crash on a game with errors.

* Memory exhaustion in "cusort" printed properly.

* The -append option would remove the last game of a database and make
  it appear that the first game of the appended database appeared twice.


Enhancements:
============

* "cusort" can handle bigger databases under DOS.  If "cusort" cannot
  obtain the name of White it will use the entire player field instead.

* "cuverify" contains additional options to control what aspect of
  a database is being verified (see -help of "cuverify for details).
  Brief summary of new options:

  cuverify <db>	   			To find errors in header and moves
  cuverify -nomoves <db>		To find errors in header only
  cuverify -noverify -index <db>	To check .cbi file against .cbf
  cuverify -noverify -names <db>	To check names of players, source


Version management:
==================

The version numbers are now:

CBUFF library	0.9.0

Utility	        Version    DOS limitations (approximately)
----------------------------------------------------------
cuclean		1.1.0      60000 games / database
culatex		1.1.0	   60000 games / database
culist		1.1.0	   60000 games / database
cumerge	        1.1.0	   60000 games / database
cunames		1.0.0	   60000 games / database
cupgn		1.1.0	   60000 games / database
cusort		1.1.0	   13000 games (see Memory available statistics)
custats		1.1.0	   60000 games / database
cuverify	1.1.0	   60000 games / database

