2004-01-05  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.6 +++

	* README, NEWS: final touches

	* magick.c: bug fixes in flood fill operations

	* sprite.q: Windows usability fixes

	* magick, tk, odbc: fixes to Makefile.msc

2004-01-03  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: updated

	* graphics.q: overhaul of the standard devices section; this now
	works automagically on Windows, no need to patch the script any
	more

	* clib.c: fixed segfault in tmpnam on Windows

	* ggi, magick: more Windows compatibility fixes and code cleanup

2004-01-02  Albert Graef  <Dr.Graef@t-online.de>

	* Windows port, changed build system to latest mingw, bug fixes

2003-12-31  Albert Graef  <Dr.Graef@t-online.de>

	* magick: added drawing ops, this one is finished!

2003-12-30  Albert Graef  <Dr.Graef@t-online.de>

	* magick: finished basic image manipulation functions, code
	cleanup, bug fixes

2003-12-28  Albert Graef  <Dr.Graef@t-online.de>

	* magick: new resource management functions, started work on image
	manipulation operations

2003-12-26  Albert Graef  <Dr.Graef@t-online.de>

	* magick: new magick_info and ping_image operations

	* magick: read_image and write_image now fully support multi-frame
	image files, which are represented as image lists in Q land

2003-12-24  Albert Graef  <Dr.Graef@t-online.de>

	* magick: create_image now takes an additional PIXEL parameter
	used to initialize the pixels of the image; improved magicktest.q
	example; bug fixes

2003-12-23  Albert Graef  <Dr.Graef@t-online.de>

	* magick: added blob conversion operations; new MAGICK field in
	INFO structure, MATTE field is now an integer

2003-12-22  Albert Graef  <Dr.Graef@t-online.de>

	* ggi: yet another major overhaul of the ggi module

	Support for the GGI buffer extension has been dropped for now, as
	the current libggibuf from cvs really isn't ready for prime time
	yet. Support for simple alpha blending is now provided through our
	own code, but no z buffers yet. The API has been simplified
	accordingly, and has been dubbed "stable" now.

	Note that there a few incompatibilities between the new API and
	the one from the Q 4.5 release, namely that ggi_fill_screen has
	been replaced by ggi_clear (which now fills the screen with the
	background instead of the foreground color), and that
	ggi_get_char_size has been replaced by the more general
	ggi_get_string_size (which takes a string to be measured as the
	second argument, and also works for FreeType-managed fonts).

	TODO: 1. Optimizations. 2. Alpha blending for text rendered in the
	builtin font -- probably not worth the effort, so please don't ask
	for it. ;-)

2003-12-21  Albert Graef  <Dr.Graef@t-online.de>

	* ggi_demo.q: replaced ggi_get_char_size with ggi_get_string_size

	* ggi.c: more bug fixes in text renderer

2003-12-20  Albert Graef  <Dr.Graef@t-online.de>

	* ggi.q, ggi.c: added ggi_get_string_bbox operation to determine
	the bounding box of a string relative to the baseline, more
	elaborate ggi_get_font_info, additional operations to retrieve
	antialiasing status and current transform, more bug fixes

	* ggi.c: fixed mono text rendering, optimizations in renderer, bug
	fix in bbox calculation

	* ggi.c: implemented alpha blending in text renderer

	* ggi.c: make transformed glyphs work in text renderer, plug
	memory leaks

2003-12-19  Albert Graef  <Dr.Graef@t-online.de>

	* README-GGI: add information about FreeType support

	* ggi.q, ggi.c: replaced ggi_get_char_size with the more general
	ggi_get_string_size function which calculates the dimensions of
	the bounding box of a rendered string

	* ggi.q, ggi.c, configury: added FreeType2 support (TODO: add
	support for linear transformations and alpha blending in the text
	rendering algorithm)

2003-12-16  Albert Graef  <Dr.Graef@t-online.de>

	* README: add information on ImageMagick support

	* magick: added ImageMagick module

	* configure.in, modules/ggi/Makefile.am: fixed some ggi-related
	quirks in configury

	* README, NEWS: bump version to 4.6, add a NEWS entry for ongoing
	development for the 4.6 release, add pointers to the q-lang
	SourceForge project

2003-12-14  Albert Graef  <Dr.Graef@t-online.de>

	* configury: renamed bootstrap script to autogen.sh

	* ggi_demo.q: adapted to new interface

	* ggi.q, ggi.c: major overhaul of the interface. In particular,
	pixel values are now always represented in device-independent
	form, as byte strings of 16 bit RGBA values. Moreover, the
	ggi_fill_screen operation has been replaced by the more useful
	ggi_clear function which fills the clip area with the current
	*background* color, and also clears all buffers attached to the
	visual.

2003-12-06  Albert Graef  <Dr.Graef@t-online.de>

	* ggi.c: changed buffer initialization code to allow for changing
	the GGI_BUF_DISPOSE flag; this still doesn't work for z buffers,
	probably a libggibuf bug?

	* ggi.q, ggi.c: alpha and z buffers are now specified with
	ggi_setmode instead of separate ggi_add_buffer operation

	* ggi.q: remark that only 8 bit depth alpha and z buffers are
	supported right now (libggibuf limitation)

	* ggi.c (ggi_add_buffer): fixed a segfault occuring when
	ggiBufCladVis fails

	* ggi.q, ggi.c: support for packing pixels in byte string format

2003-11-27  Albert Graef  <Dr.Graef@t-online.de>

	* ggi.c: made buffer support optional, to make the module build if
	libggibuf is not installed

2003-11-02  Albert Graef  <Dr.Graef@t-online.de>

	* ggi.c: added alpha/z buffer support (requires buffer extension)

2003-10-23  Albert Graef  <Dr.Graef@t-online.de>

	* tk.c: kludge to work around some spurious X error messages
	occuring when Tk is used with GGI

2003-10-14  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.5 +++

	* README, NEWS, qdoc.texi: updated

	* qm.c: fixed potential deadlocks on tty mutex (acquire_tty,
	release_tty, exit_thread) and on global mutex (evalu)

	* qm.c: optimized locking during init phase (start_init, etc.)

	* qm.c: overhauled debugger: fixed argument parsing of `d' and `u'
	commands, renamed `l' command to `v', added a new `l' command for
	listing source lines, and added a new `? <expr>' command to
	evaluate a Q expression in the debugger, with the local variables
	bound to their lhs values

	* ggi: added libggi module

2003-09-19  Albert Graef  <Dr.Graef@t-online.de>

	* gdbm.c: fixed a memory leak in gdbm_open

2003-09-16  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.4 +++

	* README, NEWS, qdoc.texi: updated

	* configury: updated

	* odbc: added odbc module

2003-09-09  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: document new syntax of prompt command

	* q.c, qm.c, qmparse.y, qbase.h: make continuation and debug
	prompt configurable (extended prompt command)

	* libq.c, dxl.c: removed isobjm()

2003-08-28  Albert Graef  <Dr.Graef@t-online.de>

	* modules/tk/Makefile.msc: build tk module with thread support
	under Windows

2003-08-15  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.3.2 +++

	* tk.c(tk_start, INIT): check whether Tcl supports mutithreading

2003-08-14  Albert Graef  <Dr.Graef@t-online.de>

	* README, qdoc.texi: updated

2003-08-13  Albert Graef  <Dr.Graef@t-online.de>

	* configure.in, qm.c: added test for pthread_atfork

2003-08-11  Charlie &  <Dr.Graef@t-online.de>

	* clib/examples/pty.q: bug fix: pty driver routine hangs when
	interpreter has been built without threading support

	* glob.h: avoid name clashes with possibly incompatible system
	libraries

2003-08-08  Charlie Root  <root@obelix.local>

	* configury, clib.c: additional fixes for BSD compatibility

2003-07-28  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.3.1 +++

	* readline-4.2/configure.in: fixed broken library versioning

	* octave.c (writescalar): missing return value

2003-07-24  Albert Graef  <Dr.Graef@t-online.de>

	* configury: reverted to previous autotools (autoconf 2.52,
	automake 1.5, libtool 1.4.2) because of OSX compatibility problems

2003-07-21  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi (clib section): add note about cyclic reference chains

	* configury: updated to latest autotools (autoconf 2.57, automake
	1.7.6, libtool 1.5)

	* regex.h: additional #define's to prevent name clashes with
	system libraries

2003-07-14  Albert Graef  <Dr.Graef@t-online.de>

	* configury: fixes for latest autotools

2003-06-24  Albert Graef  <Dr.Graef@t-online.de>

	* clib.c: fixes for FreeBSD compatibility (thanks to Ralph Dratman
	for pointing this out)

	* glob.h: prevent redefinition of size_t which causes compile
	problems on some systems; use AC_TYPE_SIZE_T in configury instead

2003-06-13  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.3 +++

	* qdoc.texi: updated

2003-06-12  Albert Graef  <Dr.Graef@t-online.de>

	* qmparse.y (whos): print const attributes of var symbols

	* clib.q, gdbm.q: use var const for manifest constants

	* qc.y: implemented const var attribute

	* qctables.c (inittables): mark builtin variables (ARGS, INPUT,
	etc.) as const

	* q.c (rerun): bypass setvar when purging variables

	* qm.c (setvar): check for const variables; change error message
	for BAD_REDEF and BAD_UNDEF codes

2003-06-11  Albert Graef  <Dr.Graef@t-online.de>

	* qcc.c: intermediate object files are created in the build
	directory

	* libq.c (mklistv): fixed potential memory leak

	* libq.h, libq.c: added workaround for memory management quirks
	under Windows

	* gdbm.q: added missing import of clib (needed for non-standard
	preludes since clib::ByteStr is used in the C implementation)

2003-05-26  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: fixed description of fcntl interface

2003-05-06  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.2.3 +++

	* gdbm: added some documentation to README-Gdbm, added testdb.q
	and gdbm_dict.q examples

2003-05-05  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: updated

	* gdbm: implemented gdbm interface; added gdbm.q, gdbm.c,
	README-Gdbm and the necessary configury

	* except.q: updated

	* clib.q, clib.c: added isbytestr and crypt functions

2003-05-03  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.2.2 +++

	* qdoc.texi: updated

	* except.q: updated

	* clib.q, clib.c: renamed `suspend' to `await'

2003-05-02  Albert Graef  <Dr.Graef@t-online.de>

	* clib.q, clib.c: new Ref data structure

2003-04-28  Albert Graef  <Dr.Graef@t-online.de>

	* stdlib.q, clib.c: append now also applies to tuples

2003-04-25  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.2.1 +++

	* src: Solaris compatibility fixes

2003-04-24  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: updated, added some missing index entries

	* clib.c (fprintf, sprintf): automatic float/int coercion

	* clib.c: OS X compatibility fixes

2003-04-21  Albert Graef  <Dr.Graef@t-online.de>

	* clib: added openpty and forkpty functions, pty.q example

2003-03-26  Albert Graef  <ag@muwiinfc.geschichte.uni-mainz.de>

	+++ Release 4.2 +++

	* qm.c: evaluate lists and pairs non-recursively, to prevent C
	stack overflows

	* clib.c: OS X compatibility fixes

	* libq.h, libq.c: new xvrealloc function

2003-03-25  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: final touches

	* clib.c: 2nd attempt to fix a hairy bug which would cause the
	thread destructor to wait for a dead thread after fork. See also
	the ChangeLog entry from 2002-08-29. The previously attempted fix
	would resolve the bug but cause another one instead, namely
	prevent thread objects to be garbage-collected at all. Hopefully
	this all is fixed now.

	* qm.c: removed locks on tty and parser mutexes in atfork handlers
	(these would block a fork in a background thread when the
	interpreter sits waiting in the main loop)

	* q.c, qmparse.y: removed all fflush(NULL) calls except in exitproc
	(these could block when secondary threads were busy doing I/O)

	* qmfuns.c, qmparse.y: moved parser mutex locks to the qmparse
	interface routines, and made the parser mutex recursive

2003-03-24  Albert Graef  <Dr.Graef@t-online.de>

	* clib.q, clib.c: recv/recvfrom: additional SIZE argument

2003-03-21  Albert Graef  <Dr.Graef@t-online.de>

	* qmfuns.c, clib.c: fixes for BEOS and Windows compatibility

	* examples: added flush calls (required for Windows)

	* q.c: reset errno after startup

	* clib.c: some more Windows fixes

2003-03-20  Albert Graef  <Dr.Graef@t-online.de>

	* clib.q, clib.q: reworked spawn and new _spawn function

	Note that the `spawn' function now returns immediately, without
	waiting for the child to finish, to make its interface consistent
	with the `exec' function. The `_spawn' function provides the
	former functionality, but it also accepts a new MODE argument
	which specifies whether the child should be waited for or not.

	* q.c: interpreter now checks its own invokation path, to exec
	the compiler from the same path

	* clib.c: BSD/OSX portability fixes

2003-03-18  Albert Graef  <Dr.Graef@t-online.de>
	
	* qdoc.texi: updated

	* except.q: updated (new clib operations)

	* clib: reworked dgram.q example

	* clib: socket functions (getsockopt, setsockopt, send/receive
	operations) now use ByteStr's as well; this allows arbitrary socket
	options to be retrieved and changed, and arbitrary binary data to
	be transmitted on sockets

2003-03-17  Albert Graef  <Dr.Graef@t-online.de>

	* clib: added ByteStr data structure, reworked binary file
	operations (see bread, bwrite) to use the new type

	* clib: added WHENCE argument to fcntl file locking operations, as
	well as the fseek function; new rewind and lseek functions

	* clib: added dgram.q example

	* qmparse.y (parse): fix multithreaded-related bugs

2003-03-16  Albert Graef  <Dr.Graef@t-online.de>

	* clib.q, clib.c: new functions: gethostname, gethostbyname,
	gethostbyaddr, gethostent, getprotobyname, getprotobynumber,
	getprotoent, getservbyname, getservbyport, getservent

	* clib.q, clib.c: added BSD socket interface; new functions:
	socket, socketpair, shutdown, closesocket, bind, listen, accept,
	connect, getsockname, getpeername, getsockopt, setsockopt, recv,
	send, recvfrom, sendto

2003-03-15  Albert Graef  <Dr.Graef@t-online.de>

	* clib.q, clib.c: added termios interface (tcsetattr and friends)

2003-03-14  Albert Graef  <Dr.Graef@t-online.de>

	* clib.c: added a yield (release_lock/acquire_lock) to a couple of
	potentially blocking operations

	* qm.c, qmfuns.c, etc.: new trap builtin

2003-03-12  Albert Graef  <Dr.Graef@t-online.de>

	* qmfuns.c: removed evil automatic flushes of the standard output
	stream; note that this breaks some things under Windows (user
	scripts doing interactive prompt/input might have to use flush to
	work properly under Qpad)

	* clib.c (Thread destructor): fixed a bug which prevented
	terminated threads from being garbage-collected

	* qmparse.y, qdefs.h, qm.c: invalid command parameters now all
	raise a simple syntax error message

	* qmparse.y: `stats all' and `who all' commands

	* clib.q, clib.c: major overhaul:

	new aliases for builtin I/O functions: getc, fgetc, putc, fputc,
	puts, fputs; new ungetc/fungetc functions
	
	fixed mkdir, mkfifo, wait, waitpid to follow POSIX-compatible
	semantics

	overhauled the calendar time functions to make them more closely
	correspond with the corresponding C functions; added tzname,
	daylight, localtime, mktime, asctime, strftime

	new system functions: fdopen, fileno, setvbuf, select, open,
	close, dup, dup2, pipe, fstat, fchdir, fchmod, fchown, ftruncate,
	fsync, fdatasync, fcntl, isatty, ttyname, ctermid, tcgetpgrp,
	tcsetpgrp, truncate, readdir, link, symlink, readlink, access,
	chmod, chown, lchown, utime, nice, pause, raise, getppid, uname,
	getpwuid, getpwnam, getpwent, getgrgid, getgrnam, getgrent,
	getgroups, setgroups, setuid, setgid, seteuid, setegid, setreuid,
	setregid, getuid, geteuid, getgid, getegid, getlogin, getpgid,
	setpgid, getpgrp, setpgrp, getsid, setsid, errno, seterrno,
	perror, strerror

	added a bunch of "manifest constants" for the various option
	parameters of the system functions

2003-03-09  Albert Graef  <Dr.Graef@t-online.de>

	* qmparse.y: the who command now only lists user-defined variables

2003-03-07  Albert Graef  <Dr.Graef@t-online.de>

	* clib.c: fix for only partially implemented POSIX sempahores on
	MacOS X

	* clib.c: eliminated a race condition which could cause a thread
	object to be garbage-collected while its thread is still running

2003-03-06  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: added some notes on realtime scheduling

	* clib.c: some kludges to make realtime scheduling work under
	Windows; see the comment preceding the setsched function for
	details

	* givertcap: added sources to modules/clib, added givertcap
	support to clib.c

	NOTE: Under Linux, this program allows your applications to enjoy
	realtime scheduling without having to run them as root. That is,
	the clib::setsched function will now work even if the Q
	interpreter is run as an ordinary user. To make this work, you
	need to patch your kernel and install givertcap on your system;
	see modules/clib/givertcap/README for details.

	* clib.q, clib.c: added `getsched' function, `schedule' renamed to
	`setsched'

	* q.c: reenabled the backtrace mechanism; this still doesn't work
	properly with the multithreaded interpreter on Linux, but that is
	supposed to be fixed with kernel 2.6 and the next Linux pthread
	version

	* libq, clib, regex, src: some fixes for MacOS X compatibility

	Unfortunately, one of these fixes breaks binary compatibility in
	libq (the __error function had to be renamed to something else),
	so we're going to a new libq version.

2003-02-18  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.1.3 +++

	* qdoc.texi: updated

	* qm.c (rule): added missing gnuserv command for recording
	debugger options

	* stddecl.q, stdtypes: some minor code cleanup; members2 is now an
	alias for list2

	* except.q: merged with clib_except.q and graphics_except.q

	* hdict.q: fixed a typo in the deletek function

2002-12-17  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: fixed some typos

2002-11-24  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.1.2 +++

	* README-DXL, sombrero.q: added a comment about a new bug in
	recent OpenDX versions which affects Tk applications with embedded
	OpenDX image windows used in hardware rendering mode

	(Maybe that's actually a bug in the OpenGL library on my Linux
	system? Have to look into that sometime.)

	* qm.c (evalu): only invoke debugger on conditional error when no
	catch is pending

	* qclex.l (yywrap): fixed garbled error messages at eof

	* dxl.q: bug fixes in the dxl_file function -- OpenDX apparently
	does not like empty position, connection or data components, so we
	prevent empty components from being written to the data file

2002-11-21  Albert Graef  <Dr.Graef@t-online.de>

	* clib.c: missing initialization in clib::strcat

2002-11-19  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.1.1 +++

	* qmfuns.c (qmcatch): must clean up activation stack on exception

2002-11-11  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.1 +++

	* qdoc.texi: updated documentation

	* qctables.c, qmfuns.c, opcodes.h: added new `which' builtin (see
	the manual for details)

	* qbase.c (pfloat): fix weird infinity printouts with Windows sprintf

2002-11-10  Albert Graef  <Dr.Graef@t-online.de>

	* q.c, tk.c: fixes for Windows compatibility

	* qm.c: added debugger command to list local variables of a rule

2002-11-09  Albert Graef  <Dr.Graef@t-online.de>

	* q-mode.in: debugger-related improvements:

	- record --debug-options

	- fontify `where', `if' and `  ==>  ' as keywords

	* qbase.h, q.c: --debug-options option

	* qm.c: various improvements in the debugger:

	- debugger now prints real names of variables bound in where clauses

	- default expression detail level is now 2

	- new format for debugger options: `pathnames=y|n' (print long
	pathnames of scripts, yes/no), `detail=N|all' (number of
	expression levels to print), `maxitems=N|all' (number of
	list/tuple items to print), `maxchars=N|all' (number of string
	chars to print), `maxstack=N|all' (number of stack levels to
	print), `options' (print current settings).

	All these options can now be entered either at the "dot" command
	in the debugger, or with the `debug' command at the interpreter's
	prompt, or with the interpreter's --debug-options option
	(which replaces --debug-long-filenames).

	* stdlib.q: fixed broken definitions of pred and succ

	* stddecls.q: `members' is now a synonym for `list'

	* stdlib: moved list/tuple comparisons and type-checking
	predicates from stdlib.q to separate comp.q and typec.q scripts

2002-11-08  Albert Graef  <Dr.Graef@t-online.de>

	* tk.c, tk/Makefile.msc: fixes for latest stable Tcl/Tk release
	8.4

2002-11-05  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 4.0 +++

	* stdlib, clib.q: parenthesized equality checks

	* qc.y, qmparse.y: `=' operator must now be parenthesized on
	*both* the left- and right-hand side of a rule

	* tk.q, tk.c: added new tk_set, tk_unset and tk_get functions

	* tk.c: fixed random lockups and async replies in event
	processing; events are now always processed in the main thread
	only

2002-11-04  Albert Graef  <Dr.Graef@t-online.de>

	* qm.c, qmfuns.c: fixes in the exception handling code; as the
	manual says, non-break exceptions now *only* trigger the debugger
	if there's no `catch' on the stack

2002-11-03  Albert Graef  <Dr.Graef@t-online.de>

	* clib.c: fixed buffer allocation bug in external clib::sprintf
	function

2002-11-01  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi, q.1: updated documentation

	* qm.c (qmid): fixed bug in syntactic comparison of vectors

	* qmfuns.c (qmval, qmvalq, qmread, qmreadq): fixed an unhandled
	"unterminated string" error condition

	* q.c (rerun): fixed garbled error message when the compiler bails
	out with an error while compiling the empty script

	* qcdefs.h: increased harcoded compiler table sizes

2002-10-31  Albert Graef  <Dr.Graef@t-online.de>

	* stdlib, clib: exception modules moved to the examples directory

	* qm.c: nicer formatting in debugger display of def's and undef's

	* qmfuns.c (xmatch): bugfix in variable definition code

	* qm.c: modified debugger to acommodate for the language changes

	The debugger now stops on the current rule also after a
	condition/where clause has been processed, and always displays the
	current condition/where clause while it is being processed.

	* qc.y: allow arbitrary list of conditions and where clauses in
	the qualifier

2002-10-28  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.5.5 +++

	* tk.c: fixed segfaults and other quirks in the finalization
	procedure

2002-10-27  Albert Graef  <Dr.Graef@t-online.de>

	* qmfuns.c: fixed segfaults on negative integers in builtin hash
	function

2002-10-18  Albert Graef  <Dr.Graef@t-online.de>

	* graphics.q: replace include of stdlib and string with import

2002-10-10  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.5.4 +++

	* clib.c: work around a bug in the MSVC sscanf function

	* qcrules.c (clearexpr): reset variable table when parsing
	multiple right-hand sides for the same left-hand side

2002-10-08  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.5.3 +++

	* qm.c (clearvartb): reset vartb to NULL after freeing it

	* qmfuns.c (tupleconcat): initialize n when x1 is a vector

2002-10-06  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.5.2 +++

	* qdoc.texi: updated documentation

	* qmparse.y: the `save' command now uses a larger precision to
	reduce rounding errors when rereading floating point values

2002-10-05  Albert Graef  <Dr.Graef@t-online.de>

	* qmparse.y: default variable file name now named .q_vars

	* qmlex.l, qmparse.y: experimental support for the C99 printf %a
	flag which allows you to save exact floating point variable values
	represented in hexadecimal textual format on some systems (use
	-DHAVE_ISO99_PRINTF to enable this feature)

	* tk.c: fixed bogus warning in call to Tcl_CreateCommand

	* qcc.c: missing parameter type in fatal() function

2002-09-28  Albert Graef  <Dr.Graef@t-online.de>

	* configure.in: updated for Tcl/Tk 8.4

2002-09-19  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.5.1 +++

	* qdoc.texi: updated documentation

	* clib: new gets and fgets functions

2002-09-18  Albert Graef  <Dr.Graef@t-online.de>

	* clib: renamed the `gets' operation to `fget'

	* list.q, stream.q: filter out unmatched items in binding clauses
	of listof and streamof

	* cond.q: new matchp predicate, additional check in match before
	applying lambda, to prevent combinator exceptions when except.q is
	loaded

	* qbase.h: increased default stack size to 1024000

	* qm.c (x_copy): implemented non-recursively to prevent C stack
	overflows

	* qm.c (x_collect): bug fix in garbage collector (segfaults on
	tuple values)

	* qmfuns.c (xeq): fixed broken non-recursive implementation

2002-09-07  Albert Graef  <Dr.Graef@t-online.de>

	* qdoc.texi: fixed some typos in the documentation

2002-09-02  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.5 +++

	* qdoc.texi: updated documentation

	* qm.c: changed debugger's rule printer to handle multiple `where's

	* qcdefs.h: increased the compiler's expression and variable table
	sizes (needed since now the where clauses are kept in memory until
	a whole rule has been parsed)

	* qc.y, qcrules.c: allow where clauses both before and after
	condition

2002-09-01  Albert Graef  <Dr.Graef@t-online.de>

	* qc.y: bug fix in option parser

	* clib.q, clib.c: new gets function which reads an entire file at
	once

	* stdtypes.q: added hdict.q

	* except.q: added hdict exceptions

	* hdict.q: new hashed dictionary type

2002-08-31  Albert Graef  <Dr.Graef@t-online.de>

	* qmfuns.c, qctables.c: added new `hash' builtin

	* q-mode.in: bug fixes and general improvements in the indentation
	rules; q-query-before-kill is now disabled by default

2002-08-30  Albert Graef  <Dr.Graef@t-online.de>

	* qc.y, q.c, qbase.c, qbase.h: path/--path argument starting/
	ending with `:' is now appended/prepended to existing path

	* qc.y, qctables.c, qmcode.c: removed the useless codefile shebang
	stuff

2002-08-29  Albert Graef  <Dr.Graef@t-online.de>

	* clib.c (Thread destructor): fixed a bug that could cause a child
	process to kill itself or other threads in the parent at fork time
	(the latter misbehaviour is probably LinuxThreads-specific?)

2002-08-27  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.4.3 +++

	* qmfuns.c (xeq): implemented non-recursively to prevent C stack
	overflows

2002-08-25  Albert Graef  <Dr.Graef@t-online.de>

	* qmlex.l: allow ' as string delimiter in special commands

2002-07-31  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.4.2 +++

	* ports: interpreter cleanly builds and passes all tests on BeOS,
	Solaris and Windows

	* qdoc.texi: updated description of the import command

	* q.c (quotearg): quote empty arguments on Windows

	* q.c (rerun): clear imports list when loading bytecode file

	* q.c (main): set up qc command line for rerun() even if source is
	a bytecode file

2002-07-30  Albert Graef  <Dr.Graef@t-online.de>

	* qmparse.y (print_modlist, print_implist): suppress printing of
	dummy ("") main module

	* qclex.l: create dummy main module for holding global imports
	when "" is the main script

	* qclex.l: main module is now always first script argument on
	command line, even if it is the empty script, ""; this also
	affects the behaviour of the import command

	* q.c: \\m and \\M now print the true main module name, even if it
	is empty

2002-07-26  Albert Graef  <Dr.Graef@t-online.de>

	* qmparse.y: fixed parse stack overflows for large lists and
	tuples

	* qmparse.y: don't echo lines with `load'

	* q.c: .qinitrc and .qexitrc are sourced correctly again

2002-07-25  Albert Graef  <Dr.Graef@t-online.de>

	* qm.c (init_thread): block SIGINT and SIGTERM signals

2002-06-17  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.4.1 +++

	* tk.c: all interpreter-related data is now thread-local, so you
	can have multiple interpreters in different threads

	* tk.c: tk, tk_reads, etc. now release the interpreter's mutex, to
	prevent long Tk commands from locking up the Q interpreter

2002-06-13  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.4 +++

	* clib.c, octave.c: used xvalloc()/xvfree() where appropriate

	* libq.h, libq.c: added xvalloc()/xvfree() routines to
	allocate/free expression vectors to be passed to mklistv/mktuplev.
	Apparently this solves some weird Windoze-only malloc/free-related
	segfaults in some modules.

2002-06-12  Albert Graef  <Dr.Graef@t-online.de>

	+++ Release 3.3 +++

	* Makefile.mingw, mingw.h: fixed wrong copyright and version number

2002-06-11  Albert Graef  <Dr.Graef@t-online.de>

	* qc.y, qcrules.c: reinitialization of offs/plen/p needed at start
	of variable definition

2002-06-04  Albert Graef  <Dr.Graef@t-online.de>

	* qm.c, qmmatch.c: removed conditionals around inline keyword
	(already handled by configure)

2002-04-29  root  <Dr.Graef@t-online.de>

	+++ Release 3.2 +++

	* ports: interpreter cleanly builds and passes all tests on BeOS,
	Solaris and Windows

2002-04-28  root  <Dr.Graef@t-online.de>

	* clib.c, clib.q: added bounded semaphores

	* qmmatch.c: overhauled TA matching routines

2002-04-27  root  <Dr.Graef@t-online.de>

	* *.h, *.c: protoized most of the remaining sources

2002-04-26  root  <Dr.Graef@t-online.de>

	* qm.c etc.: reduced size of expression data structure from 36/40
	to 24 bytes

2002-04-09  root  <Dr.Graef@t-online.de>

	* qcdefs.h: increased size of the temporary expression table

2002-04-06  root  <Dr.Graef@t-online.de>

	* regexamp.q: added missing special declaration of the regsub
	function which was deleted by accident

2002-04-05  root  <Dr.Graef@t-online.de>

	* qdoc.texi: fixed some typos

2002-04-04  root  <Dr.Graef@t-online.de>

	+++ Release 3.1 +++

	* clib.c: massaged initialization sequence in the thread_proc
	routine

2002-04-02  root  <Dr.Graef@t-online.de>

	* ports: interpreter cleanly builds and passes all tests on BeOS,
	Solaris and Windows

	* optimizations: inlined some functions, gives a minor speed
	improvement

2002-03-31  root  <Dr.Graef@t-online.de>

	* qdoc.texi: added POSIX threads to clib documentation

2002-03-30  root  <Dr.Graef@t-online.de>

	* clib: added queens3 example

	* clib.c: fixed unref() call in unsafe section

2002-03-29  root  <Dr.Graef@t-online.de>

	* clib.q, clib.c: added spawn function

	* test.q: added pthread tests

	* q.c: added tty and fatal signal handlers

2002-03-28  root  <Dr.Graef@t-online.de>

	* q.c(rerun): proper reinitialization of ARGS variable

	* qm.c: fixed broken atfork handlers

2002-03-27  root  <Dr.Graef@t-online.de>

	* qm.c, q.c: added init_mutex to prevent threads from taking over
	during the variable initialization phase

	* qm.c, clib.c: added pthread_atfork handlers

2002-03-26  root  <Dr.Graef@t-online.de>

	* qmparse.y(assignment): fixed wrong redn and expr counts

	* clib.c(clib::thread): fixed silly bug in thread allocation

	* qctables.c(saveimps): fixed zero allocation bug

	* qbase.c(arealloc): fixed zero-length alloc bug

	* configury: added dmalloc support

2002-03-25  root  <Dr.Graef@t-online.de>

	* clib.c: implemented multithreading operations

2002-03-24  root  <Dr.Graef@t-online.de>

	* clib.q: added multithreading operations

	* modules: MT support, release mutex lock in potentially blocking
	operations

2002-03-22  root  <Dr.Graef@t-online.de>

	* stdlib: renamed the cond function to ifelse

	* libq: added multithreading-related stuff

	* interpreter: added multithreading capability: Q machine state is
	thread-local, global mutex lock in the interpreter

2002-03-15  root  <Dr.Graef@t-online.de>

	+++ Release 3.0 +++

	* ports: interpreter cleanly builds and passes all tests on BeOS,
	Solaris and Windows

	* bootstrapped from scratch

	* bootstrap: latest libtool apparently has a broken configure
	script, therefore added autoconf in libltdl to the bootstrap
	process

	* clib.c, sys.h: work around a bug in some gmp versions which causes
	mpz_fits_xxx_p(z) to return false when mpz_size(z) is zero

	* qctables.c: fixed segfault in compiler on solaris: we have to
	properly initialize *all* symbol table entries

	* Makefile.am: added a simple test script (run with `make test'
	after interpreter has been installed)

	* configury: converted to latest autotools

2002-03-14  root  <Dr.Graef@t-online.de>

	* qdoc.texi: doc updated once more

	* stream.q: stream constructors are now simply named `bin' and `nil'

	* compiler, interpreter: `in' is now a relational operator symbol

2002-03-13  root  <Dr.Graef@t-online.de>

	* qdoc.texi: doc updated, added some missing index entries

	* clib.q, clib.c: added clock and clocks_per_sec functions

	* qmparse.y: stats command prints cpu time, not total elapsed time

2002-03-12  root  <Dr.Graef@t-online.de>

	* src/Makefile.mingw: Windows portability fixes

	* qc.y, qclex.l: various bug fixes in compiler: treatment of
	qualified variable symbols; made `_' a predefined variable symbol;
	check that aliased symbol in redeclarations is already declared

	* qdoc.texi: description of import interpreter command: added
	usage without args

	* qmparse.y, qmlex.l: fixed a bug in the command parser:
	def/undef/imports keywords incorrectly recognized after ? escape

	* qdoc.texi: final touches on the docs

2002-03-11  root  <Dr.Graef@t-online.de>

	* clib.q: added missing declaration for regerr

	* stdlib.q: added isexcept type predicate

	* stdlib.q: cosmetic changes in the eq and neq functions

	* array.q: made bin constructor symbol, turned constructor
	equations into separate mkbin operation

	* qmparse.y: bug fix in which command: add .q suffix if necessary

	* qmfuns.c: fixed bug in qmdef(): treatment of anonymous variable

2002-03-10  root  <Dr.Graef@t-online.de>

	* qdoc.texi, q.1: updated documentation

2002-03-09  root  <Dr.Graef@t-online.de>

	* lambda.q: changed declaration of normal mode combinators to
	include the (non-special) lambda argument

2002-03-07  root  <Dr.Graef@t-online.de>

	* graphics.q: GRAPHICS variable now assigned to standard output by
	default

2002-03-06  root  <Dr.Graef@t-online.de>

	* qc.y: fixed a compiler bug: expression stack mark 2 placed too
	early, must be placed *after* qualifier

	* q-mode.in: fixed a bug in syntactic fontification: _ must be
	word constituent in the local font-lock syntax table

2002-03-05  root  <Dr.Graef@t-online.de>

	* qmlex.l: fixed bug in lexical analyzer: save start state when
	starting nested parse

	* qmfuns.c: fixed a bug in the qmdef/qmundef functions: don't
	count these as reductions for stats

	* modules: module examples are now installed in separate
	subdirectories

	* dxl: added the dxl_file data file generation routine, overhauled
	examples

	* prelude: clib is now loaded by default

2002-03-04  root  <Dr.Graef@t-online.de>

	* qc.y, qmcode.c: implemented new "#!" header in bytecode files

	* stdlib, clib: added exception handler modules

	* stdlib.q: some cosmetic changes

	* qclex.l: handle different aliases for the same source script by
	manufacturing aliases for all symbols of the module, to prevent
	duplication of the module

	* q.c: fixed bug in module loader: filename of module is now
	derived from the basename of the script filename, not the module
	name which could be aliased

2002-03-03  root  <Dr.Graef@t-online.de>

	* modules: updated to new compiler version

	* examples: updated to new compiler version

	* stdlib: updated to new compiler version

	* compiler/interpreter: endless number of bugfixes in the new
	symbol table code, should work now :)

2002-03-02  root  <Dr.Graef@t-online.de>

	* stream.q: bugfix in streamcat function

	* type.q: stuff now included in stdlib.q

	* array.q: added missing emptyarray operation

	* stdtypes: container constructors are private now

	* q-mode.in: fixed various bugs and updated to new syntax

	* qmparse.y: implemented dynamic import and unimport of modules in
	the interpreter

2002-03-01  root  <Dr.Graef@t-online.de>

	* qclex.l: extra modules specified on the command line are
	automatically imported into the main module

	* libq: FUNCTION, DESTRUCTOR and FUNCALL macros now take the
	module name as first argument; updated standard modules
	accordingly

	* qm.c: EXT_ERR and user exceptions now invoke the debugger if
	break is on

	* qm.c: show "where" bindings in debugger

2002-02-28  root  <Dr.Graef@t-online.de>

	* added where clauses for local variable bindings

2002-02-27  root  <Dr.Graef@t-online.de>

	* hard exceptions are now represented using builtin Exception type

	* added pattern-matching variable bindings

	* changed variable defs/undefs to builtin function

2002-02-25  root  <Dr.Graef@t-online.de>

	* qbase.c: fixed a bug in the searchlib routine (uses stat now to
	avoid directories)

2002-02-24  root  <Dr.Graef@t-online.de>

	* interpreter: implemented symbol table logic for new namespacing
	system

2002-02-23  root  <Dr.Graef@t-online.de>

	* compiler: implemented new import/include facility, qualified
	identifiers, added new error messages

	eliminated -w option, as the compiler does not emit warnings any
	more

	eliminated overlapping rules warning, made cyclic module refs an
	error

2001-11-06  root  <Dr.Graef@t-online.de>

	* configure.in, acinclude.m4: fixes for latest autotools versions

2001-09-17  root  <Dr.Graef@t-online.de>

	+++ Release 2.3 +++

	* regex.h: redefined names of regcomp/regexec routines to prevent
	clashes with incompatible system routines

2001-09-16  root  <Dr.Graef@t-online.de>

	* q-mode.in: fixed broken library path

	* README updated (Solaris info)

	* configure.in: -lDXL needs -lsocket -lnsl on Solaris

	* Makefile.am (etc, src): $< doesn't work with SUN make

	* glob.c: some minor fixes for Solaris compatibility

2001-08-12  root  <Dr.Graef@t-online.de>

	+++ Release 2.2 +++

	* ported to Windows, Cygwin and BeOS

	* final touches and last-minute bug fixes

2001-08-11  root  <Dr.Graef@t-online.de>

	* manual updated

	* qm.c (eval, evalu), qmfuns.c (qmcatch): handle hard exceptions
	with catch

2001-08-09  root  <Dr.Graef@t-online.de>

	* automake/libtool support for bundled readline, glob and regex
	packages (quick and dirty, but needed to make everything work
	properly)

2001-08-08  root  <Dr.Graef@t-online.de>

	* src/Makefile.am, qld.in: added libqmain and qld program

	* qmparse.y (save command): always unparse floating point values
	with maximum precision

	* q.c(rerun): don't restart interpreter after run

	* qclex.l(opensrc): allow null source file names in compiler

2001-08-07  root  <Dr.Graef@t-online.de>
	
	* qdoc.texi: integrated clibdoc.texi

	* q.c (resolve): private external symbols are now also mangled
	with module name to prevent clashes between same private extern
	identifier in different modules

	* portability fixes: added the necessary bits to make the package
	compile with mingw again

	* `which' on empty script once more prints nothing rather than the
	prelude script

2001-08-06  root  <Dr.Graef@t-online.de>

	* src/Makefile.am: added -dlopen flags for standard modules

	* qmparse.y: modules command now shows external modules with a
	trailing `*'

	* libq.h: modified for global symbol stropping [see below]; to
	these ends, INIT and FINI now require module name as parameter,
	changed standard module sources accordingly

	* q.c: __initmod/__init/__fini globals in modules are now stropped
	with module name, to prevent name clashes when modules are linked
	statically

	* q.c: mangled global symbols in interpreter to prevent name
	clashes with dlopened modules [see also mangle.sh]

2001-08-05  root  <Dr.Graef@t-online.de>

	* qcc: changed --no-compile to --dry-run and --cygwin to --mingw

	* qcc: now uses libtool instead of gcc

2001-08-04  root  <Dr.Graef@t-online.de>

	* libq: make module initialization return module name, which is
	now checked in the dl loader in q.c (resolve)

	* libq: stropped FAIL and ERROR with `__' to prevent collisions with
	macro definitions in other libraries; updated modules accordingly

	* sources: reorganized, automakified and libtoolized

	* ChangeLog started
