2006-5-20  Keith Packard <keithp@keithp.com>
version 2.54
	* builtin-toplevel.c
	time() builtin needs to return all 32 bits

2006-5-20  Keith Packard <keithp@keithp.com>

        * Makefile.am:
	* configure.in
	Compute NICKLELIBDIR at build time, not config time

2005-2-15  Bart Massey  <bart@cs.pdx.edu>
	
	* examples/coroutines.5c:
	New example using continuations
	to implement channels and coroutines.
	
2005-2-12  Bart Massey  <bart@cs.pdx.edu>
	
	* examples/search.5c:
	New example using continuations
	to implement constraint satisfaction
	search.
	
2005-1-28  Bart Massey  <bart@cs.pdx.edu>
	
	* README.solaris:
	Update a bit to reflect current reality.
	
2005-1-28  Bart Massey  <bart@cs.pdx.edu>
version 2.53	
	
	* debian/changelog:
	Update for version 2.51-2.53
	
2005-12-24  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	Use rpmbuild instead of rpm to build rpms.
	
	* scanf.5c:
	Permit {} in numbers to allow exact rational input

2005-12-23  Bart Massey <bart@cs.pdx.edu>
	
        * parse-args.5c:
	Make usage() function user-visible by exporting
	closure when parse_args() is called.
	
2005-12-11  Bart Massey <bart@cs.pdx.edu>
version 2.52

        * prng.5c:
	Since it's now autoimported, autoload ARC4
	so that it will continue to work.

	* examples/menace2.5c:
	* examples/miller-rabin.5c:
	* examples/mutextest.5c:
	* examples/randtest.5c:
	* examples/rsa-demo.5c:
	* examples/skiplist.5c:
	* examples/skiplisttest.5c:
	* examples/sort.5c:
	* examples/smlng/generate.5c:
	Add needed autoloads/autoimports to make
	the examples work again.  Not obvious that
	PRNG shouldn't continue to be loaded, and
	maybe even imported, although that would also
	force in ARC4 in the current implementation.
	
2005-12-10  Bart Massey <bart@cs.pdx.edu>
version 2.51

        * builtin.5c:
	Don't load every random library; make the user autoload or
	autoimport them if they want them instead.
	
	* process.5c:
	Replaced putc and getc in copy function.

	* compile.c:
	* lex.l:
	* gram.y:
	* pretty.c:
	* type.c:
	Added &&= and ||= operators.

	* execute.c:
	* opcode.h:
	Added Drop opcode needed for short-circuit code for &&= and ||=.
	
2005-12-06  Keith Packard  <keithp@keithp.com>
version 2.50

	* debian/changelog:
	Update for version 2.50

2005-12-01  Keith Packard  <keithp@keithp.com>

	* math.5c:
	cbrt must use more intermediate precision to hit the
	specified error bound

2005-11-20  Bart Massey <bart@cs.pdx.edu>

        * process.5c:
	New code to handle process creation provides system(),
	popen(), and run_process().
	
2005-10-26  Bart Massey <bart@cs.pdx.edu>

        * parse-args.5c:
	Fixed to cope properly where args field of
	argd is uninit.  Most common cause: no optional
	arguments.
	
2005-10-20  Keith Packard  <keithp@keithp.com>

	* type.c: (TypeBinaryIntegral):
	Permit any numeric type in this function, result
	type will always be integer. Let run-time system catch
	any representation problems.

2005-09-04  Bart Massey <bart@cs.pdx.edu>

	* parse-args.5c:
	Fixes for various buglets including
	mis-parsing single-character
	options and using the wrong variable
	in an error message.

	* command.5c:
	Changed the semantics of argv.  It is now
	dim 0 iff the program reads from standard
	input *and* was not passed arguments.
	
2005-09-02  Bart Massey <bart@cs.pdx.edu>

	* Makefile.am:
	Older versions of GNU Make (before 3.80,
	apparently) seem to require shell invocation
	macros to be defined with :=

	* gram.y:
	Solaris yacc gives an error if a type is
	given to a non-terminal that does not
	actually appear in the grammar.  Removed
	opttypename.
	
2005-08-03  Keith Packard  <keithp@keithp.com>

	* command.5c:
	Fix minor regression from argument parsing rewrite;
	library path was not augmented by script directory
	as it used to be.

2005-08-02  Keith Packard  <keithp@keithp.com>

	* builtin-string.c: (do_String_index), (do_String_substr):
	* file.c: (FileStringWidth), (FilePutString):
	* lex.l:
	* rational.c: (RationalDecimalPrint):
	Fix compiler warnings about signed/unsigned mismatches
	for StringNextChar (thanks GCC 4)

	* debian/changelog:
	* debian/control:
	Update for version 2.49
	Use new readline (5), update policy to 3.6.2

2005-08-02  Bart Massey  <bart@cs.pdx.edu>
	
	* doc/tutorial/basics/invoke.sgml, nickle.1.in:
	Fix documentation to reflect new argument parsing.
	
2005-07-31  Bart Massey  <bart@cs.pdx.edu>
version 2.49
	
	* parse-args.5c:
	Big rewrite of parse-args code to work better and be
	more usable. Will now accomodate Nickle startup.
	
	* builtin.5c, command.5c:
	Changes to use parse-args instead of ad hoc argument parsing
	at startup.  Changed key conventions: -e now takes a single
	argument; -e, -f, and -l can be freely mixed; interactive mode
	can now have argv through "--"; others?

	* compile.c:
	Fixed trivial spelling error.
	
2005-07-08  Keith Packard  <keithp@keithp.com>

	* builtin-sockets.c: (do_Socket_connect):
	Set SO_BROADCAST just in case
	
	* compile.c: (CompileCall):
	CompileCall with auto_reference == True must not
	return a pointer to the return type as this function
	is called from CompileLvalue which is defined to return
	the type of the underlying object, not a pointer to
	that type. The alternative is to return a reference type,
	and I'm fairly sure that's not right as & is supposed
	to return a pointer type, not a reference type, right?
	
	* nickle.spec.in:
	Make sure the nickle headers are installed
	
	* test/Makefile.am:
	* test/reftest.5c:
	Add a test for reference types which checks the above
	change

2005-06-16  Keith Packard  <keithp@keithp.com>
version 2.48

	* debian/changelog:
	Prepare for version 2.48

2005-06-16  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileLvalue), (CompileCall), (_CompileExpr),
	(_CompileStat), (ObjUnFuncName):
	&poly foo() { ... };
	&poly x = &foo();
	Compiler generated 'Dereference, do_reference' in this
	call which caused the object referenced by foo() to be
	copied.  Notice case of call to reference value function
	followed by & operator and elide the Dereference/do_reference
	pair.

2005-06-04  Keith Packard  <keithp@keithp.com>

	* math.5c:
	Add π as an alias for pi
	
	* rational.c: (IntPowMod):
	Use signed_digit instead of long long

2005-03-15  Keith Packard  <keithp@keithp.com>
version 2.47

	* debian/changelog:
	Update for version 2.47
	* builtin.c: (BuiltinType), (BuiltinArgType), (BuiltinAddFunction):
	Builtin functions return pointers, not references as reference
	return values now auto-dereference

2005-03-15  Keith Packard  <keithp@keithp.com>

	* hash.c: (HashGet):
	Check for NULL hash value in a valid hash element.  This
	occurs when a reference to a hash element is made and then
	not stored through.

2005-02-24  Eric Anholt  <anholt@freedesktop.org>

	reviewed by: Keith Packard

	* func.c: (NewBuiltinCode):
	Initialize base.func pointer to NULL.

2005-01-14  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileCall):
	Functions returning reference type need auto-dereference on
	return value

2005-01-13  Keith Packard  <keithp@keithp.com>
version 2.46

	* Bump to version 2.46

2005-01-13  Keith Packard  <keithp@keithp.com>

	reviewed by: <delete if not using a buddy>

	* builtin-file.c: (import_File_namespace):
	* file.c: (FileInitErrors), (FileGetError):
	Use error_type typedef instead of directly using the type.
	
	* builtin-toplevel.c: (do_setdims):
	* execute.c: (ThreadArrayInd):
	* sched.c: (RaiseException):
	Use ArrayValue to catch uninitialized values
	
	* float.c: (DoublePart):
	Raise exception on non-float args
	
	* gram.y:
	* lex.l:
	Rearrange publish/class/type grammar elements to make them prettier
	Fix ignorenl decrementing to avoid going below zero on syntax error.

2004-12-24  Keith Packard  <keithp@keithp.com>
version 2.45

	* debian/changelog:
	Update to version 2.45

2004-12-23  Keith Packard  <keithp@keithp.com>

	* foreign.c: (ForeignMark), (NewForeign):
	* value.h:
	Change foreign API to include mark so that foreign objects can
	use nickle allocator if they like.  Note this is an ABI incompatible
	change.
	
	* scanf.5c:
	EOF not handled correctly in '%s' scanf formats

2004-12-18  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* builtin-foreign.c: (do_Foreign_load):
	* configure.in:
	Look for -ldl, but don't depend on that, instead look
	for dlopen et al directly.  Makes it build on FreeBSD

2004-12-17  Keith Packard  <keithp@keithp.com>

	* array.c: (BuildArrayType):
	Create and initialize dimension vector in BuildArrayType.

2004-12-16  Keith Packard  <keithp@keithp.com>

	* float.c: (FloatPrint):
	Trim '0's from floating point when no precision is specified

2004-12-16  Keith Packard  <keithp@keithp.com>

	* builtin.c: (BuiltinSetUserdefType), (BuiltinType):
	* builtin.h:
	Add support for up to 100 user-defined types for builtin functions
	
	* file.c: (FileCheckBlocked):
	Fixed an execution ordering bug which should have caused
	an infinite loop in some weird file blocking cases.
	
	* float.c: (FloatPrint):
	Don't print fractional part if it rounds to zero. Still
	need to trim trailing zeros from fractions.
	
	* foreign.c: (ForeignFree):
	Best return 1 or the object will not actually be freed.
	
	* pretty.c: (PrettyDoc):
	Doc strings with multi-byte chars were broken.
	
	* array.c: (BuildArrayType):
	* union.c: (BuildUnionType), (BuildEnumType):
	* value.h:
	Add type construction helpers for foreign libraries
	
2004-12-11  Keith Packard  <keithp@keithp.com>

	* builtin-foreign.c: (do_Foreign_load), (import_Foreign_namespace):
	* foreign.c: (ForeignEqual), (ForeignPrint), (ForeignHash),
	(ForeignMark), (ForeignFree), (ForeignInit), (NewForeign):
	Forgot to add actual foreign dataype and interface code.

2004-12-10  Keith Packard  <keithp@keithp.com>

	* builtin.c: (BuiltinSetUserdefType), (BuiltinType):
	* builtin.h:
	Expose mechanism for using user-defined types in builtin functions

2004-12-10  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* builtin-namespaces.h:
	* builtin-sockets.c: (import_Socket_namespace):
	* builtin.c: (BuiltinType), (BuiltinInit):
	* builtin.h:
	* configure.in:
	* gram.y:
	* io.c: (IoTimeout):
	* lex.l:
	* mem.h:
	* nickle.h:
	* string.c: (NewStrString):
	* value.c: (ValueInit):
	* value.h:
	Add support for dlopen and Foreign datatypes

	* execute.c: (ThreadsRun):
	* file.c: (FileCreate), (FilePutRep), (FileCheckBlocked),
	(FileSetBlocked):
	* sched.c: (BlockHandlerMark), (ThreadsRegisterBlockHandler),
	(ThreadsUnregisterBlockHandler), (ThreadsBlock), (ThreadInit):
	Add block handlers.
	Change file block handling to use timers only on pipes,
	not on disk files or terminals.  That makes for a lot
	fewer signals while idle at the prompt.
	
2004-12-10  Keith Packard  <keithp@keithp.com>

	* prng.5c:
	ARC4 requires positive keys

2004-12-10  Keith Packard  <keithp@keithp.com>

	* float.c: (FloatPrint), (NewDoubleFloat), (DoublePart):
	Round floats correctly for printing.
	Add double<->real conversion for (eventual) use in C code.

2004-12-09  Keith Packard  <keithp@keithp.com>

	reviewed by: Martin Hoch <hoch.martin@web.de>

	* main.c:
	Add #include <sys/time.h> as required for Mac OS X.

2004-12-01  Keith Packard  <keithp@keithp.com>
version 2.44

	* Makefile.am:
	* debian/changelog:
	* debian/copyright:
	* debian/lintian.override:
	* debian/rules:
	* examples/Makefile.am:
	* examples/qbrating.5c:
	Don't ship non-DFSG examples.
	Update to version 2.44
	Fix debian bits to ignore extra (necessary) COPYING files
	Mark debian/copyright with all Copyright data

2004-12-01  Keith Packard  <keithp@keithp.com>

	* stack.c: (StackCopy):
	Must reference new stack object before allocating chunks
	lest the collector run and eat our stack.
	Zero out previous pointer to make sure the stack
	is valid in case the collector is called.
	* stack.h:
	Declare panic when debugging stack problems.

2004-11-30  Keith Packard  <keithp@keithp.com>

	* float.c: (FloatHash):
	Provide hash function for float representation
	
	* hash.c: (generate_crc32_table), (HashCrc32), (HashInit):
	* value.h:
	Implement general purpose crc32 function for hashing
	
	* natural.c: (NaturalHash):
	* string.c: (StringHash):
	Use crc32 hash for naturals and strings
	
	* value.c: (ValueHash), (NewDataCache):
	Return Zero for representations without hash functions
	instead of uninit (oops).
	Initialize datacache to zero before adding as a root (just a cleanup)
	
2004-11-30  Bart Massey  <bart@cs.pdx.edu>

	* math.5c
	Added lsb()
	
2004-11-29  Keith Packard  <keithp@keithp.com>

	* configure.in:
	Move AC_CONFIG_AUX_DIR above AM_INIT_AUTOMAKE as needed for new
	automake version

2004-11-29  Keith Packard  <keithp@keithp.com>

	* mem.c: (newBlock), (MemAddRoot):
	Call to panic had wrong arguments and caused a segfault.

2004-11-22  Bart Massey  <bart@cs.pdx.edu>

	* builtin-toplevel.5c:
	Change dims() to return dimensions in order
	consistent with array defns, setdims(), etc.
	Bug discovered by Jeremy Greenwald.
	
2004-11-18  Keith Packard  <keithp@keithp.com>

	* examples/sort.5c:
	Change copyright symbol encoding from Latin-1 to UTF-8
	* execute.c: (ThreadArray), (ThreadArrayInd):
	Catch negative array dimensions.
	Bug discovered by James LaMar

2004-11-15  Keith Packard  <keithp@keithp.com>

	* examples/COPYING:
	* examples/Makefile.am:
	* examples/miller-rabin.5c:
	* examples/mutextest.5c:
	* examples/numbers.5c:
	* examples/polynomial.5c:
	* examples/prime.5c:
	* examples/randtest.5c:
	* examples/restart.5c:
	* examples/roman.5c:
	* examples/rsa-demo.5c:
	* examples/rsa.5c:
	* examples/shortpaths.5c:
	* examples/skiplisttest.5c:
	* examples/smlng/COPYING:
	* examples/smlng/Makefile.am:
	* examples/smlng/context.5c:
	* examples/smlng/generate.5c:
	* examples/smlng/parse.5c:
	* examples/smlng/test.5c:
	* examples/turtle/COPYING:
	* examples/turtle/Makefile.am:
	* examples/turtle/snowflake.5c:
	* examples/turtle/snowflake.tex:
	* examples/turtle/turtle.5c:
	Add a bunch of copyright and license information

2004-11-15  Keith Packard  <keithp@keithp.com>

	* lex.l:
	Lost **= somehow.

2004-11-15  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileImplicitInit):
	Implicitly initialize resizable arrays to zero-length array.

2004-11-15  Keith Packard  <keithp@keithp.com>

	* examples/Makefile.am:
	* examples/apsp.5c:
	* examples/comb.5c:
	* examples/cribbage.5c:
	* examples/erat.5c:
	* examples/google-puzzle.5c:
	* examples/initializer.5c:
	* examples/is-prime.5c:
	* examples/kaiser.5c:
	* examples/menace2.5c:
	Add licensing information to some of the examples

2004-11-8  Bart Massey <bart@cs.pdx.edu>

	* string.5c:
	inchars() had the arguments to index() backward.
	
2004-11-7  Bart Massey <bart@cs.pdx.edu>

	* string.5c:
	Add shiftn(), shift(), chump() functions.
	
2004-11-7  Bart Massey <bart@cs.pdx.edu>

	* string.5c:
	Add wordsplit() function.
	
2004-10-19  Keith Packard  <keithp@keithp.com>

	* lex.l:
	Permit any non-ASCII character in an identifier.  Better
	discrimination requires a better lexer generator as flex
	can't deal with UTF-8.

2004-10-17  Keith Packard  <keithp@keithp.com>

	* gram.y:
	Add POW2 and POW3 operators
	
	* lex.l:
	Add several non-ascii character equivalents.
	Make \r be white space (and ignored)
	
	* mem.h:
	Remove spurious semi-colon from ALLOCATE definition.

2004-10-09  Keith Packard  <keithp@keithp.com>

	* gram.y:
	Permit multiple namespaces in import statements

2004-10-09  Keith Packard  <keithp@keithp.com>

	* value.c: (ShiftL), (ShiftR):
	Optimize shifts of small ints by small ints

2004-10-01  Bart Massey  <bart@cs.pdx.edu>

	* compile.c:
	Compiler dumped core when trying to create a variable of
	incomplete structure type.
	
2004-09-22  Bart Massey  <bart@cs.pdx.edu>

	* gram.y:
	Made try blocks as well as try statements not create a new
	scope, for convenience in using try the way it is intended
	to be used.
	
2004-09-21  Bart Massey  <bart@cs.pdx.edu>

	* gram.y:
	Added operator precedences to resolve 3 of 4 shift/reduce
	conflicts in the grammar.

	* Makefile.am:
	Make sure builtin.o is always rebuilt, so that the "build"
	variable is kept up-to-date.
	
2004-09-17  Keith Packard  <keithp@keithp.com>

	* array.c: (ArrayResize):
	Resizing arrays to zero elements would cause segfault when
	adding to the array

2004-09-16  Keith Packard  <keithp@keithp.com>

	* examples/google-puzzle.5c:
	Avoid having leading 0's convert in octal.
	Reformat to reasonable line lengths.
	Note that this still gets the wrong answer.

2004-08-22  Keith Packard  <keithp@keithp.com>

	* builtin-file.c: (do_File_print):
	Base is allowed to be zero (in which case it uses 10).

2004-08-22  Bart Massey <bart@cs.pdx.edu>

	* builtin-file.c:
	don't allow bases smaller than 2 in do_File_print().
	Closes bug report by Clem Taylor <clemtaylor@comcast.net>.
	
2004-08-12  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	add clean-local to remove nickle.1 and nickle.spec
	* debian/changelog:
	Update to version 2.43

2004-08-10  Keith Packard  <keithp@keithp.com>

	* mem.c: (newBlock), (MemAllocateHunk), (MemAllocateHuge),
	(activeReference), (activeReset), (MemInitialize), (MemAddRoot),
	(MemReference), (MemReferenceNoRecurse), (mark), (sweep),
	(MemCollect):
	* mem.h:
	* memp.h:
	Clean up new allocator implementation.

2004-08-10  Keith Packard  <keithp@keithp.com>
version 2.43

	* Makefile.am:
	* avl.c:
	* avl.h:
	Remove avl tree code
	
	* mem.c: (MemHunkMore), (MemAllocateHuge), (tossFree), (busy),
	(checkBlockRef), (checkRef), (MemReference),
	(MemReferenceNoRecurse), (MemCollect):
	* mem.h:
	* memp.h:
	Rewrite garbage collector to place reference bits right in
	each object by stealing the low bit of the type pointer.

2004-08-04  Keith Packard  <keithp@keithp.com>

	* debian/changelog:
	Update to 2.42, noting significant changes.

2004-08-04  Keith Packard  <keithp@keithp.com>
version 2.42
	* Bump version to 2.42

2004-07-28  Keith Packard  <keithp@keithp.com>

	* configure.in:
	* main.c: (main):
	Unlimit stack so that GC can recurse forever
	
	* examples/Makefile.am:
	* examples/mutextest.5c:
	* examples/skiplist.5c:
	* examples/skiplisttest.5c:
	Add skiplists
	
	* gram.y:
	Fix precedence of ** so that ++x**2 works
	
	* hash.c: (HashEqual):
	Make sure hash element in table is valid before comparing

	* lex.l:
	Track newlines in files better.

	* test/orderofoptest.5c:
	Add comments about x value for each test.

2004-07-22  Bart Massey  <bart@cs.pdx.edu>

	* value.h:
	* builtin-toplevel.c: (do_make_uninit):
	Be able to mark a box uninit (for shift())
	
2004-07-09  Keith Packard  <keithp@keithp.com>

	* func.c: (MarkFuncCode), (MarkBuiltinCode):
	* symbol.c: (SymbolLocalMark):
	Missed a few pointers in mark code
	
	* mem.c: (MemInitialize):
	* sched.c: (RaiseException):
	A nasty one -- jumping into a continuation that is referenced
	from the thread object itself (catch) drops the reference to the
	continuation before finishing the jump.  Combined with careful
	MemCollect timing, this can break the resulting thread state.
	
	* stack.c: (StackPush), (StackPop), (StackDrop), (StackReset),
	(StackReturn), (StackElt), (StackCopy), (stackMark):
	* stack.h:
	Add assertions to make sure the stack pointer is in range
	
	* util.c: (wait_write), (debug), (panic):
	Deal with non-blocking file descriptors

2004-07-07  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileCountCatches), (CompileCatch), (InstDump):
	* execute.c: (ThreadCatches), (ThreadRaise), (ThreadEndCatch),
	(ThreadUnwind), (ThreadsRun):
	* sched.c: (FarJumpContinuation), (ContinuationTrace):
	* value.h:
	Parallel catch blocks are peers, not nested.  This affects
	how FarJump execution inside them happens; in particular,
	all of the peer catches are unwound before the handler is
	invoked so all jumps from inside use the same NonLocal
	data structure.  Also added yet more debugging to
	continuation execution.

	* gram.y:
	Allow 'enum switch'

2004-06-19  Keith Packard  <keithp@keithp.com>

	* execute.c: (ThreadCall):
	Tail call to lonjmp should not pop frame

	* func.c: (FuncPrint):
	Make 'g' format print only the declaration, leaving 'v' printing
	the definition as well.
	
	* sched.c: (do_Thread_list), (TraceFunction), (TraceFrame),
	(TraceIndent), (ContinuationTrace), (RaiseException):
	Clean up continuation debug code to include call trace
	and adjust for changes since the last time it was used.

2004-06-17  Keith Packard  <keithp@keithp.com>
version 2.41

	* Makefile.am:
	Add commands to upload release files to nickle.org
	
	* debian/changelog:
	Note changes since last debian package (2.38)

2004-06-17  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileLvalue):
	Generalize the previous fix to handle the remaining cases,
	including names.

2004-06-17  Keith Packard  <keithp@keithp.com>

	* gram.y:
	Update conflict comment to note new reduce/reduce
	conflicts caused by accepting ** and && as unary operators

2004-06-17  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileLvalue):
	Handle nested & in Lvalues with auto_reference so that &&7 works.
	* gram.y:
	* lex.l:
	* nickle.h:
	* scope.c: (NamespaceLocate):
	Make ** and && work as unary operators.
	Get CodePtr out of CurrentFrame so that execution can
	refer to frame contents up the static link.

2004-06-13  Keith Packard  <keithp@keithp.com>

	* file.5c:
	Don't open /dev/null until needed for mkchild

2004-06-13  Keith Packard  <keithp@keithp.com>

	* abort.5c:
	* arc4.5c:
	* builtin-namespaces.h:
	Add CVS Header and Copyright
	
	* file.5c:
	Clean up function doc comments
	
	* math.5c:
	Use 0.{3} for 1/3

	* builtin.c: (BuiltinType):
	* type.c: (TypeNumeric), (TypeIntegral), (TypeIsCotype),
	* value.h:
	(TypeBinaryGroup), (TypeBinaryField), (TypeUnaryGroup), (TypeInit):
	Remove typeGroup/typeField
	Add (#if 0'd out) TypeIsCotype while we figure out how its supposed
	to work.
	
2004-06-08  Keith Packard  <keithp@keithp.com>
version 2.40

	* abort.5c:
	* arc4.5c:
	* builtin-command.c: (import_Command_namespace),
	(do_Command_pretty_print):
	* builtin-debug.c: (import_Debug_namespace):
	* builtin-environ.c: (import_Environ_namespace):
	* builtin-file.c: (import_File_namespace):
	* builtin-math.c: (import_Math_namespace):
	* builtin-semaphore.c: (import_Semaphore_namespace):
	* builtin-sockets.c: (import_Socket_namespace):
	* builtin-string.c: (import_String_namespace):
	* builtin-thread.c: (import_Thread_namespace):
	* builtin-toplevel.c: (import_Toplevel_namespace):
	* builtin.5c:
	* builtin.c: (BuiltinType), (BuiltinException),
	(BuiltinAddException), (BuiltinAddFunction), (BuiltinInit):
	* builtin.h:
	* command.5c:
	* compile.c: (CompileComprehension):
	* ctype.5c:
	* debug.c: (do_Debug_dump):
	* file.5c:
	* file.c: (FileFopen):
	* func.c: (MarkFuncCode), (NewFuncCode), (MarkBuiltinCode),
	(NewBuiltinCode):
	* gram.y:
	* history.5c:
	* lex.l:
	* math.5c:
	* mutex.5c:
	* nickle.h:
	* parse-args.5c:
	* pretty.c: (PrettyDoc), (PrettyBody), (doPrettyPrint),
	(PrettyPrint):
	* printf.5c:
	* prng.5c:
	* scanf.5c:
	* socket.5c:
	* string.5c:
	* string.c: (NewCharString):
	* symbol.c: (SymbolExceptionMark), (NewSymbolException):
	* value.h:
	Add doc strings to all functions and exceptions.

2004-06-03  Keith Packard  <keithp@keithp.com>
version 2.39

	* gram.y:
	Fix fix for crash with empty array/hash initializers
	(really do need 'null' node in expr tree)

2004-06-03  Keith Packard  <keithp@keithp.com>

	* gram.y:
	Fix crash with empty array/hash initializers

2004-06-02  Keith Packard  <keithp@keithp.com>

	* gram.y:
	* lex.l:
	Eliminate 'primary' non-terminal.
	Add ENDFILE token to ensure files end at top level.
	Change NL handling to allow NL after simple declarations
	Allow 'func' values to not require SEMI termination
	

2004-05-27  Keith Packard  <keithp@keithp.com>
version 2.38

	* Makefile.am:
	* configure.in:
	* debian/changelog:
	* nickle.1.in:
	Build nickle.1 and nickle.spec from Makefile where VERSION is set
	Update to version 2.38

2004-05-27  Keith Packard  <keithp@keithp.com>
version 2.37

	* debian/changelog:
	Update for 2.37

2004-05-27  Keith Packard  <keithp@keithp.com>

	* int.c: (IntPlus), (IntMinus):
	* nickle.h:
	* value.h:
	Overflow detection from small integer add/subtract was
	broken.

2004-05-27  Keith Packard  <keithp@keithp.com>

	* value.c: (ShiftR):
	Ceiling, not Round for negative left operand in shift right

2004-05-27  Keith Packard  <keithp@keithp.com>

	* natural.c: (NaturalCompliment):
	Bogus effort to truncate compliment answers resulted in
	broken IntegerLand operation

2004-05-26  Keith Packard  <keithp@keithp.com>
version 2.36

	* compile.c: (CompileDimensionStorage), (CompileArrayDimValue):
	* type.c: (TypeArrayMark):
	* value.h:
	Distinguish between array types of static variables and
	initializers within static scope -- dimension storage is different.
	
	* debian/changelog:
	update to version 2.36

2004-05-26  Keith Packard  <keithp@keithp.com>
version 2.35

	* examples/menace2.5c:
	* examples/turtle/snowflake.5c:
	Clean up examples to not try and run themselves as scripts

2004-05-26  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileArrayDimValue):
	Array dimension values are always local in static initializers
	
	* Makefile.am:
	* bench/Makefile.am:
	* configure.in:
	* examples/Makefile.am:
	* examples/menace2.5c:
	* examples/randtest.5c:
	* examples/rsa.5c:
	* examples/smlng/.cvsignore:
	* examples/smlng/Makefile.am:
	* examples/smlng/data.sgml:
	* examples/smlng/parse.5c:
	* examples/smlng/test.5c:
	* examples/turtle/Makefile.am:
	* examples/turtle/snowflake.5c:
	* make-version.sh:
	* scanf.5c:
	* update-version.sh:
	Clean up examples so they all work again.  Remove old files.
	add 'scanf' to top-level namespace

2004-05-25  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* builtin.c:
	* configure.in:
	Completely ignore VERSION support from configure and grub it
	out of the ChangeLog using $(shell) from the Makefile.

2004-05-25  Keith Packard  <keithp@keithp.com>

	* debian/changelog:
	Add comments for version 2.35

2004-05-25  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileLvalue), (CompileAssign), (CompileAssignOp),
	(CompileAssignFunc), (CompileArrayInit), (_CompileExpr),
	(CompileDecl):
	Allow &rvalue and have it automatically box the value.

2004-05-21 Bart Massey <bart@cs.pdx.edu>
version 2.34
	
	* version.m4, Makefile.am, make-version.sh

	The version number is going stale again.  Start putting it in the
	ChangeLog, and have the Makefile grub it out of there.  Get rid of
	version.m4 After all, the ChangeLog has to be good for something
	:-).

2004-05-20  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileLvalue), (_CompileExpr):
	Ok, so the previous change was incomplete.
	
	Restructure CompileLvalue so that the processing of ampersands is
	unified.  The unified rules were changed so that the value of a
	reference to a reference type is converted to a pointer instead of a
	reference.  That seems confusing enough.  Basically, it allows:

		&int r;
		*&int pr = & & r;

2004-05-20  Keith Packard  <keithp@keithp.com>

	* compile.c: (_CompileExpr):
	When compiling '&' expressions, if the operand is of ref type,
	the result type is the referenced type, not NULL.

2004-05-20  Bart Massey  <bart@cs.pdx.edu>

	* gram.y, compile.c pretty.c
	Two-argument for() loop is legal
	now (no init expr).
	* version.m4
	Bumped the version to 2.33

2004-05-17  Bart Massey  <bart@cs.pdx.edu>

	* parse-args.5c:
	Added argument parser library.
	* Makefile.am:
	parse-args.5c will be installed.
	* version.m4
	Bumped the version to 2.32.

2004-05-13  Bart Massey  <bart@cs.pdx.edu>

	* string.5c:
	Rebuild dequote() and parse_csv() to handle
	quote contexts using generator functions.

2004-05-13  Bart Massey  <bart@cs.pdx.edu>

	* builtin-toplevel.c:
	* nickle.h:
	Rename is_defined() to is_uninit().

2004-05-12  Bart Massey  <bart@cs.pdx.edu>

	* builtin-toplevel.c:
	* nickle.h:
	Add a predicate is_defined() to test whether a reference
	is to a <uninit> value.

2004-04-23  Keith Packard  <keithp@keithp.com>

	* test/optest.5c:
	* test/orderofoptest.5c:
	Turn each test into an assertion which exits with an
	error on failure so that 'make check' validates the interpreter

2004-04-18  Keith Packard  <keithp@keithp.com>

	* pretty.c: (doPrettyPrint):
	Label profile times in ms
	* profile.c: (sigprofile), (ProfileInterrupt), (do_profile):
	profile tracking code was quite busted, generating largely
	random numbers.

2004-04-16  Keith Packard  <keithp@keithp.com>

	* builtin-command.c: (command_name), (do_Command_new_common),
	(do_Command_delete):
	* builtin-environ.c: (do_Environ_get), (do_Environ_check),
	(do_Environ_unset), (do_Environ_set):
	* builtin-file.c: (do_File_print), (do_File_open),
	(do_File_filter), (do_File_reopen), (do_File_string_read):
	* builtin-sockets.c: (address_lookup):
	* builtin-string.c: (do_String_length), (do_String_new),
	(do_String_index), (do_String_substr):
	* configure.in:
	* edit.c: (EditFile):
	* execute.c: (ThreadOpArray):
	* file.c: (FilePutsc), (FileStringWidth), (FilePutString),
	(FileVPrintf):
	* int.c: (IntPrint):
	* lex.l:
	* scope.c: (NamespaceLocate):
	* string.c: (StringPlus), (StringEqual), (StringLess),
	(StringPrint), (StringNextChar), (StringGet), (StringLength),
	(StrzPart), (StringHash), (NewString):
	* value.h:
	Change string representation to counted rather than
	null-terminated.
	Allow nulls in the middle of strings.
	Trap strings with nulls passed to the operating system.
	Raise exception when attempting to access the null which
	is stored off the end of the string.

2004-04-16  Bart Massey  <bart@cs.pdx.edu>

	* string.5c: (parse_csv):
	Last field wasn't being chomped and dequoted.

2004-04-16  Bart Massey  <bart@cs.pdx.edu>

	* string.5c: (parse_csv, _dequote):
	Fixed unclosed string detection case in parse_csv.
	Fixed unclosed string detection in _dequote.
	Fixed function name in parse_csv exception msg.

2004-04-15  Bart Massey  <bart@cs.pdx.edu>

	* builtin-string.c: (do_String_substr):
	Allow a zero-length substr() at the end of the string.
	
	* string.5c:
	Clean up a bunch of substr() references.  Remove
	accidental redundant code.
	
2004-04-15  Bart Massey  <bart@cs.pdx.edu>

	* file.c: (FilePuts):
	Handle emitting backslash in quoted string properly.
	
2004-04-15  Bart Massey  <bart@cs.pdx.edu>

	* string.5c:
	Added new string functions _dequote(), dequote(), inchars(),
	readcsv(), and associated machinery.
	* builtin.5c:
	String depends on Ctype now, so reordered.

2004-04-15  Keith Packard  <keithp@keithp.com>

	* array.c: (ArrayResize):
	Fix warning about uninit 'good'

2004-04-15  Keith Packard  <keithp@keithp.com>

	* autogen.sh:
	Always regenerate configure in case version.m4 changes
	* configure.in:
	Update to autoconf 2.59 syntax
	* debian/changelog:
	* version.m4:
	Update to version 2.31

2004-04-15  Keith Packard  <keithp@keithp.com>

	* array.c: (ArrayEqual), (ArrayPrint), (ArrayHash), (ArrayMark),
	(BoxVectorMark), (NewBoxVector), (FillBoxVector), (NewArray),
	(ArrayResize):
	* builtin-toplevel.c: (do_dims), (do_setdims):
	* execute.c: (BuildFrame), (ThreadArrayInd),
	(ThreadArrayReplicate), (ThreadArrayInit), (ThreadRaise),
	(ThreadExceptionCall), (ThreadOpArray), (ThreadsRun):
	* file.c: (FileFilter), (FileMakePipe):
	* gram.y:
	* hash.c: (HashKeys):
	* main.c: (setArgv):
	* sched.c: (RaiseException), (RaiseStandardException):
	* scope.c: (NamespaceLocate):
	* type.c: (TypeCompatibleAssign):
	* value.c: (CopyMutable):
	* value.h:
	Change resizable array representation to be a vector
	of single entry boxes.  This allows clean semantics
	for array shrinking -- outranged elements still have
	storage, but are no longer accessible through the
	array, even if the array is subsequently enlarged.

	* builtin-file.c: (do_File_filter), (do_File_end),
	(do_File_ungetb):
	Change File::end semantic to actually peek at the file
	and check whether the next read would return EOF.
	This seems like the only useful semantic here.

	* builtin-string.c: (do_String_new):
	Was using ArrayDims instead of ArrayLimits
	
	* builtin.5c:
	white space change

	* compile.c: (AppendObj):
	Must propogate error when appending objects together

2004-04-15  Bart Massey  <bart@cs.pdx.edu>

	* lex.l:
	Allow identifiers to start with "_".

2004-04-14  Bart Massey  <bart@cs.pdx.edu>

	reviewed by: Keith Packard <keithp@keithp.com>

	* hash.c: (HashGet), (HashSet):
	Make hash table grow when full on get of
	default value.  Clean boundary case in
	test in HashSet.  Keithp really did this.

2004-04-11  Bart Massey  <bart@cs.pdx.edu>

	* string.5c: (split):
	Add split function ala awk.

2004-04-11  Keith Packard  <keithp@keithp.com>

	* configure.in:
	Add AM_MAINTAINER_MODE
	* debian/changelog:
	Update debian to 2.30
	* version.m4:
	Update version to 2.30

2004-04-10  Keith Packard  <keithp@keithp.com>

	* doc/tutorial/intro/variables.sgml:
	Primitive docs for resizable arrays and hashes.

2004-04-10  Keith Packard  <keithp@keithp.com>

	* builtin-toplevel.c: (do_setdims):
	setdims arguments need to be inverted to match array
	dimension order for ArrayResize.

2004-04-10  Keith Packard  <keithp@keithp.com>

	* box.c: (BoxRewrite):
	Ugh.  Array shrink causes problems with references to
	elements now outside the box boundaries.  "real" fix
	is hard, so here's a kludge to keep the interpreter
	from crashing and (perhaps) prevent the error
	from propagating through the application.

2004-04-10  Keith Packard  <keithp@keithp.com>

	* array.c: (ArrayPrint), (ArrayResize):
	* builtin-toplevel.c: (do_setdims), (do_setdim):
	* builtin.c: (BuiltinType):
	* compile.c: (CompileArgs), (CompileTypecheckArgs),
	(CompileCountInitDimensions), (CompileBuildArray),
	(CompileSizeDimensions), (CompileImplicitArray),
	(CompileArrayInits), (CompileImplicitInit), (CompileArrayType),
	(InstDump):
	* execute.c: (ThreadArrayIndex), (ThreadsRun):
	* file.c: (FilePutDimensions), (FilePutSubscriptType):
	* gram.y:
	* hash.c: (HashGet), (HashSetDef), (HashRef):
	* lex.l:
	* main.c: (setArgv):
	* nickle.h:
	* pretty.c: (PrettyParameters), (PrettyArrayInits),
	(PrettyArrayInit):
	* type.c: (NewTypeArray), (TypeInit):
	* value.h:
	Make value distinction between resizable and unresizable
	arrays.  Types now use '...' for resizable arrays and '*'
	for unresizable arrays of unspecified size.
	
	Also fixed a bug in the implicit array dimension
	computation for multi-dimensional arrays -- the
	dimensions were compiled in the reverse order.

2004-04-10  Keith Packard  <keithp@keithp.com>

	reviewed by: <delete if not using a buddy>

	* compile.c: (CompileHashInit):
	* execute.c: (ThreadsRun):
	* gram.y:
	* hash.c: (HashPrint), (HashMark), (NewHash), (HashGet),
	(HashSetDef), (HashRef), (HashCopy):
	* opcode.h:
	* value.h:
	Add default hash table values, and initializes for same.

	* type.c: (TypeUnaryRef):
	Oops.  Poly couldn't be a ref

2004-04-01  Keith Packard  <keithp@keithp.com>

	* debian/changelog:
	Mark debian bug 241417 closed

2004-04-01  Keith Packard  <keithp@keithp.com>

	* debian/changelog:
	Update to 2.29-1
	* integer.c: (NewInteger):
	* mem.c: (MemReference), (MemReferenceNoRecurse):
	More pointer casting magic for gcc on ia64

2004-04-01  Keith Packard  <keithp@keithp.com>

	* gcd.c: (NaturalRslInplace), (NaturalBdivmodInplace):
	Ouch.  NaturalRslInplace was not checking argument
	for zero

2004-04-01  Keith Packard  <keithp@keithp.com>

	reviewed by: Mike Harris <mharris@redhat.com>

	* .cvsignore:
	* Makefile.am:
	* build-rpm:
	* configure.in:
	* debian/.cvsignore:
	* nickle.spec:
	* nickle.spec.in:
	* version.m4:
	Mike Harris provided a new .spec file.
	
	Move .spec file to .spec.in so that version can be
	set automatically.

	Add 'rpm' target in the Makefile

	Bump version (now 2.29)

2004-04-01  Keith Packard  <keithp@keithp.com>

	* value.h:
	Add casts to avoid warnings where sizeof (int) != sizeof (void *)

2004-04-01  Keith Packard  <keithp@keithp.com>

	Debian bug 241417

	* command.5c:
	Catch File::open_error when loading files and print
	reasonable message.
	exit(1) immediately if an file or library from the
	command line fails load.

2004-03-02  Keith Packard  <keithp@keithp.com>

	* debian/changelog:
	* debian/control:
	Separate build dependencies with commas

2004-02-26  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	Fix debuild stuff to always recreate tar files and share setup
	* debian/changelog:
	Update to 2.28

2004-02-26  Keith Packard  <keithp@keithp.com>

	* builtin/.cvsignore:
	Work harder at getting rid of builtin directory

2004-02-26  Keith Packard  <keithp@keithp.com>

	* builtin/Makefile.am:
	* builtin/bsdrandom.c:
	* builtin/namespaces.h:
	* builtin/semaphore.c:
	* builtin/sockets.c:
	* builtin/string.c:
	* builtin/thread.c:
	* builtin/toplevel.c:
	Get rid of builtin directory contents

2004-02-26  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* builtin.c:
	version.h has moved
	* Every file
	Change copyright to 2004

2004-02-26  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* debian/changelog:
	* debian/compat:
	* debian/control:
	* debian/copyright:
	* debian/nickle.install:
	* debian/rules:
	* make-version.sh:
	Clean up debian build instructions to make non-native package
	that conforms to policy.
	Change version.h build instructions

2004-02-15  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* configure.in:
	* builtin.h:
	Move builtin sources to top level directory so that
	make works right -- leaving them in the subdir meant that
	yacc/lex wouldn't get run at the right time.
	* value.h:
	Use unsigned bitfields to make :1 values easier to read in gdb
	Prototype more functions
	* debian/control:
	Switch standards version to 3.5.10 to make lintian happy
	* debian/rules:
	Don't install .cvsignore files in docs

2004-02-15  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* test/Makefile.am:
	* builtin/Makefile.am:
	Fix EXTRA_DIST.  Remove automatic version number updates.  That
	should be done by CVS.  Make separate build dir work.
	
	* debian/changelog:
	* debian/control:
	* debian/copyright:
	Take over debian package creation.

	* file.c: (FilePutDoubleDigitBase), (FilePutUIntBase),
	* nickle.h:
	(FileVPrintf):
	Add 'D' format to print out 64-bit values (for tick counts)

2004-01-18  Keith Packard  <keithp@keithp.com>

	* box.c: (NewBox):
	box->replace was uninitialized

2003-12-13  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileBuildArray), (CompileArrayInit),
	(CompileImplicitInit):
	Use canonical type to see if ANONINIT is an array.
	Don't need to call TypeCanon before recursive CompileImplicitInit
	call.
	* version.m4:

2003-10-25  Keith Packard  <keithp@keithp.com>

	* Makefile.am:
	* autogen.sh:
	Use automatic dependencies, fix up yacc stuff a bit.
	Replace autogen.sh with short version

2003-10-24  Keith Packard  <keithp@keithp.com>

	* compile.c: (CompileLvalue):
	* version.m4:
	Couple of valgrind problems:
	Initialize branch.offset field in all instructions so that
	CompileIsReachable can blindly fetch them before the real
	offset is set.
	Set the static link offset to zero for names contained in
	declarations; it was otherwise uninitialized.

2003-10-25  Keith Packard  <keithp@keithp.com>

	* builtin/Makefile.am:
	* builtin/builtin.c: (BuiltinType):
	* builtin/builtin.h:
	* expr.c: (NewExprComma):
	* nickle.h:
	* version.m4:
	Eliminate bogus explicit dependencies from Makefile.am
	Eliminate need for gram.h in builtins
	Move #include version.h from builtin.h to builtin.c

1.99.0:	First semi-public test release
2.00:	Stable enough for Debian package
2.20:   Things are pretty good now
