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
