
CHANGE LOG for Cost 2:

25 Jul 1999:
	XML -- 'query attval foo' didn't work for lower-case attribute names.
	'in' and 'within' clauses also broken.

25 Jul 1999:
	costsh error recovery *still* wasn't doing the right thing.
	(on Tcl initialization failure, entered interactive loop.
	This is *very bad* when used in a pipeline w/input from nsgmls.)
	'loaddoc' error recovery isn't so great either.

17 Jul 1999: 
	Added --enable-debug flag to configure script.
	Fixed minor bugs revealed by gcc -Wall.  
	Added cygconfig.sh for semi-automatic configuration on Windows.

16 Jul 1999: 
	Errors in queries are now reported via TCL error mechanism
	instead of printing to stderr (finally).

11 Jul 1999:
	Still more autoconf/Makefile hacking: 
	    added --enable-stubs configure option
	    only build libcost2.2.a and costwish if requested
	    builds on AIX now.

4-5 Jul 1999:
	More autoconf hacking; worked on Windows distribution;
	added some WINHELP support to RATFINK  (undocumented);
	added a few more utilities (Counters)

3 Jul 1999:
	BUGFIX: Package cleanup code was freeing the same
	thing multiple times.

1 Jul 1999:
	Updated specification command "do" method to accept a default
	argument like the "get" method does.

	Officially dropped support for Tcl 7.4.  This only required
	a few #ifdef'ed sections in the C code (now removed)
	but the supporting Tcl scripts *really* want to use
	stuff like multi-variable 'foreach' loops,  'file join', etc.
	Should still work with 7.5 and up.

	Added cost:findFile and cost:openFile commands. 

	Stub support now works, I think.


29-30 Jun 1999:
	Miscellaneous 
	On advice from Boris Tobtras: 
	  + 'loaddoc' now invokes NSMGLS by default instead of SGMLS;
	    this can be overridden by setting the $COST_PARSER
	    environment variable.
	  + Modified 'loaddoc' to be more forgiving of errors.


============================================================
Release 2.2, 28 Jun 1999

26-28 Jun 1999:
	Switched from the Perl "Artistic License" to Tcl's license,
	since the latter is shorter.  Various configuration & 
	documentation changes for release engineering.

24 Jun 1999:
	Loading a new document no longer frees the current document.
	loadsgmls &c. now return a document handle; you can switch
	between documents with the new 'selectDocument' command.
	Added a command 'currentDocument' to return the current
	document handle.  Added 'withDocument <docname> <script>'
	command, analagous to 'withNode' command.

	Also added 'setstream' and 'savestream' as aliases for
	'selectDocument' and 'loadDocument', respectively.
	This should be compatible with Boris Tobotras' patches.

24 Jun 1999:
	More autoconf hacking.
	'./configure ; make ; make install' now seems to work
	on all the platforms that I have available except for one.

	Set things up so that users shouldn't need to set 
	COSTLIB environment variable anymore.

23 Jun 1999: 
	Added stub library support to tclcost.c (but not to
	configure.in or Makefile.in -- if somebody could tell
	me what autoconf black magic is necessary to enable
	stub support, I'd appreciate it.)

11 Feb 1999: 
	BUGFIX:  [query* forward] didn't do the right thing.

10 Feb 1999:
	Started adding XML support by integrating EXPAT parser.
	Still need to learn a bit more about XML to make sure
	Cost is doing the Right Thing (wrt NAMECASE, entity handling,
	XML DOM, Unicode, etc.)

2 Feb 1999:
	Moved global variables 'current_node' and 'current_document'
	into clientData structures.  Cost should now work properly
	with multiple Tcl interpreters.

21 Jan 1999:
	Made relations tree nodes instead of a separate structure.
	It is no longer necessary for all ilinks in a relation to
	have the same set of anchor names.

18 Jan 1999:
	Documented a few previously undocumented utilities.
	Added 'cost:undefined' utility procedure.

27 Dec 1998:
	[Simple.tcl] -- added 'translateContent' procedure.
	Thanks to David James Houghton for suggesting this.

15 Dec 1998: 
	Attempting to 'autoconfiscate' Cost.

4 Dec 1998: 
	Changed error handling in costsh/costwish Tcl_AppInit;
	I believe it finally does the right thing now (though
	I've said that before...)

19 Nov 1998: Internal code changes:
	Split ESISStream into ESISInputStream, ESISBuilder,
	and ESISDocument.

18 Nov 1998: Internal code changes:
	Minor cleanups to rdsgmls.c (main loop now reads
	the entire document, instead of reading one event
	at a time, since the events were never delivered to 
	anyone else).

17 Nov 1998: Documented, integrated, and fixed Boris Tobotras' comment patch.

10 Nov 1998: Minor fixes to compile with no warnings under 'gcc -ansi -Wall'.
	Cleaned up some of the #ifdef's; now appears to work without
	source code changes under Tcl 8.0.

4 Nov 1998: Bug fix from Boris Tobotras: character #255 was being
	interpreted as EOF on machines with signed chars.

3 Feb 1998: *Another* bugfix in esis_first_ilink; failed under many
	circumstances.

7 Aug 1997: Internal change:  made 'pwrite' function in 'pile.c' static,
	to avoid nameclash with Solaris system call of the same name.
	This broke dynamic loading under Solaris 2.5.  Thanks to 
	Andreas Saremba for finding this bug.

7 Jun 1997: [content] now includes SDATA text.  (Potential
	incompatibility.)

11 Feb 1997: Internal change: replaced idiom 'typedef struct Foo ... *Foo'
	with 'typedef struct FooRec ... *Foo' (in certain headers)
	to be C++-compatible.

10 Feb 1997: added 'forward', 'backward', 'earlier', and 'later' clauses.

4 Feb 1997: Bugfix in esis_first_ilink: 'query anchtrav foo bar baz'
	failed if the current node was an anchor in more than one
	link.

* * * long hiatus * * *

16 Jun 1996:  Updated (and shortened) reference manual.
	Moved most of the examples to a separate document,
	as they did not seem to clarify things very much.
	Moved 'Simple' documentation to a separate document.

31 May 1996: [BUGFIX] in CostLoadProc(), 'current_document' left
	dangling if there was an error loading a new document.
	NB: there's also a reentrancy bug, not fixed yet.

23-24 May 1996:
	Found workaround for Cost crashing under Windows
	(Tcl-malloc()ed memory cannot be free()d by an extension
	unless they were compiled with the same version of the
	same compiler, due to incompatibilities in C runtime. 
	Workaround is to call Tcl_EventuallyFree() instead of free())

	Removed costdoc->HTML and LaTeX translation scripts from
	the distribution; will replace these with [incr Tcl]-free
	versions later.

22 May 1996:
	Error handling in startup sequence is now doing the right thing
	(this time, for sure!)  I think... [4 Dec 1998: No, it wasn't]

21 May 1996:
	Ported to Tcl 7.5: rdsgmls.c no longer uses stdio directly;
	added a layer of indirection so SGMLS input stream;
	can come from a Tcl_Channel instead of a FILE *.

	Added synonyms 'query#', 'q#' for 'countq'.  [no doc]

	Think I have DLLs and .EXEs working under Win 95 with BC.
	It crashes under Windows, though.

19 Feb 1996:
	Finally got initialization routine to report error traceback
	if 'specfile' fails. (20Feb96 -- no, not quite; still some
	problems.)

============================================================
Release 2.0a3, 20 Jan 1996: 

16 Jan 1996:
	Replaced calls to nonstandard 'strsave' and 'strdup' functions.
	Now compiles (under IRIX 5) in strict ANSI mode.

15 Jan 1996:
	Slight change to startup sequence:
	'cost_commandline' procedure is now called from tclAppInit()
	instead of costinit.c, and only for non-graphical shells
	(-DUSE_TK not defined).  This should help prevent problems
	when cost is loaded as a shared library or .DLL under
	Tcl 7.5 (not yet tried).

15 Jan 1996:
	Added 'haspropval' query clause
	Added 'unsetprop' command (suggested by PMR)

14 Jan 1995:
	Added 'nodes' query clause (suggested by PMR)

31 Dec 1995:
	[incr Tcl] 2.0 released.

7 Dec 1995:
	Added 'eventHandler' command, a (faster) replacement for
	proc fooHandler {event} { switch $event {  } }

30 Nov 1995:
	Minor speedup in 'query element ...'

29 Nov 1995:
	'break' and 'continue' now work in 'foreachNode'
	(suggested by PMR)

27 Oct 1995:
	BUGFIX: forgot to add definition of 'identity' proc
	in Simple.tcl.  (Found by Arijit Sengupta <asengupt@cs.indiana.edu>)

26 Oct 1995:
	Added relations and ilinks (partially); experimental feature.

17 Oct 1995:
	BUGFIX:  Newlines in PIs caused rdsgmls.c parser to fail.

15 Oct 1995:
	BUGFIX: changed 'else if' to 'elseif' in costinit.tcl.
	Updated 2.0a2 release.

============================================================
Release 2.0a2, 13 Oct 1995.

13 Oct 1995:
	Integrated the 'Simple' module.
	Added the FAQ and associated DTD and HTML conversion script
	to the distribution.

13 Oct 1995:
	[incr tcl] support is now optional.
	Added two new commands:
	    [haveExtension ext] and [needExtension ext]
	'ext' is a mnemonic extension name, e.g., TK, ITCL, TCLX, etc.
	haveExtension tests if the extension is built into the interpreter
	needExtension aborts with an error message if it is not.
	[ Removed these commands, 24 Jun 1999.  Use 'package require' instead].

12 Oct 1995:
	added 'node' and 'address' query clauses.

10 Oct 1995:
	added 'rootpath' query clause.

9 Oct 1995:
	added pathloc document position tracking [doc:N];
	not tested yet. [tested, 12 Oct 95]

 9 Oct 1995:
	esisp.h, rdsgmls.c, node.c:
	Partially redid internals; got rid of union u. ... in ESISNode;
	distinguish between container nodes, data nodes, and reference nodes.
	Internal ENTITY nodes are now data nodes, as documented [check this].
	Moved some of the tree construction logic from rdsgmls.c into node.c.

30 Sep 1995:
	bindings.c: in  'env set/save args...', args... may now
	be a single argument, interpreted as a list. [doc:Y]

27 Sep 1995:
	added 'countq' builtin command; [doc:Y]
	added 'childNumber' and 'hierarchyNumber' commands to Core.tcl [doc:N]

23 Sep 1995:
	Cost_Init(): exit if reading startup file fails.
	In costinit.tcl, use 'require' instead of 'source'
	to load specification file.

Release 2.0a1, 14 Sep 1995
============================================================
