2019-10-25  Per Bothner  <per@bothner.com>

	* Procedure.java (getApplyMethod): New method.

2017-09-27  Per Bothner  <per@bothner.com>

	* MethodProc.java (mostSpecific): Use isCompatibleWithValue.
	This fixes a problem for Scheme.booleanType, in that it was considered
	incompatible with (say) CharSequence, rather than just less specific.
	Then if resolving (string-builder:append "foo") at run-rime, and
	append(boolean) is tried first (as on Java 9) we get append(boolean)
	because it is compatible (even if it is unspecific),
	which we don't want.  If append(CharSequence) is considered more
	specific than append(boolean), than it will be ordered before it.

2017-08-24  Per Bothner  <per@bothner.com>

	* Promise.java (makeBlank, checkAlias): New utility methods.

2017-08-23  Per Bothner  <per@bothner.com>

	* LocationEnumeration.java: More precise types.

2017-07-26  Per Bothner  <per@bothner.com>

	* CallContext.java (checkDone): Also check for unused keywords.

2017-07-24  Per Bothner  <per@bothner.com>

	* CallContext.java: Fix some procedure-call corner cases.
	Improvements for keywords handling and error messages.

2017-07-15  Per Bothner  <per@bothner.com>

	* CallContext.java (matchError): Remove debug print-out.

2017-05-16  Per Bothner  <per@bothner.com>

	* CallContext.java (throwOnException): New method.

2017-04-20  Per Bothner  <per@bothner.com>

	* Procedure.java (inlineIfConstantSymbol): New constant.

2017-01-21  Per Bothner  <per@bothner.com>

	* CallContext.java (matchError): Different error message used
	for guard expression being false.
	* MethodProc.java (NO_MATCH_GUARD_FALSE): New error code.

2017-01-06  Per Bothner  <per@bothner.com>

	* ConstrainedLocation.java (getKeySymbol): Add paranoia null check.

2016-12-04  Per Bothner  <per@bothner.com>

	* MethodProc.java (isApplicable): Use Type.isCompatibleWithValue.

2016-10-28  Per Bothner  <per@bothner.com>

	* WrappedException.java: Add test against null.
	This is a fix for the NullPointerException part of Savannah bug
	#49471 "(kawa pictures) filling a re-centered picture not OK?".

2016-03-13  Per Bothner  <per@bothner.com>

	* RunnableClosure.java (<init>): Remove unused parameter.
	Remove one overload, update calls, and simplify.
	* Future.java: Remove unused constructor.

2015-10-24  Per Bothner  <per@bothner.com>

	* LocationProc.java: Make a generic type.
	(getValue): New method.

2015-09-15  Per Bothner  <per@bothner.com>

	* CallContext.java (startFromContext): Only do simple case
	if lastObject not set.

2015-08-02  Per Bothner  <per@bothner.com>

	* CallContext.java (getRestPlainArray): New method.
	(checkKeywordsDone, getRestArgsArray): Some tweaking.

2015-03-11  Per Bothner  <per@bothner.com>

	* CallContext.java: Change result method of getting result as Object
	given method that writes result to Consumer.  Specifically avoid
	fiddly TreeList operations in common case.
	(startFromContext, getFromContext, cleanupFromContext,
	runUntilValue): Major re-write.
	* ValueStack.java (lastObject, gapStartOnPush, gapStartOnPush)
	(oindexOnPush): New fields.
	(push, pop, getValue): New methods.
	(ensureSpace, writeObject): New overrides.
	* Values.java (make): Remove unused method.

2015-01-09  Per Bothner  <per@bothner.com>

	* Values.java (empty): Initialize directly as new FromArray.

2014-12-17  Per Bothner  <per@bothner.com>

	* Values.java (incrPos, getFromPos, getFromPosFinal, checkFinalPos):
	New static methods.

2014-12-16  Per Bothner  <per@bothner.com>

	* Values.java (makeFromArray): New static method.

2014-11-18  Per Bothner  <per@bothner.com>

	* Environment.java (getCurrent): Throw an error if
	Environment.global hasn't been set.

2014-09-15  Per Bothner  <per@bothner.com>

	* Location.java (define): New static method, used top-level
	'define' in Scheme interactive mode.

2014-09-10  Per Bothner  <per@bothner.com>

	* DynamicLocation.java (global): Remove field and uses of it.
	(setGlobal): Remove method.

	* ThreadLocation.java: Split into two classes: for "anonymous"
	thread-locals use ThreadLocarion.  Otherwise use new class:
	* DynamicLocation.java: New class for dynamic named variables.
	* SimpleEnvironment.java: Update accordingly.

2014-08-31  Per Bothner  <per@bothner.com>

	* Makefile.am: Merge in gnu/Makefile.am.

2014-07-27  Per Bothner  <per@bothner.com>

	* MethodProc.java (isApplicable): Take an extra parameter
	to handle splice argumemnt expressions.

2014-07-06  Per Bothner  <per@bothner.com>

	* WrongArguments.java (checkArgCount): Take haSplicies argument.

2014-05-24  Per Bothner  <per@bothner.com>

	* Procedure.java (compilerXKey): New property key.

2014-05-05  Per Bothner  <per@bothner.com>

	* Procedure.java (validateXApplyKey): New static field.

2014-02-16  Per Bothner  <per@bothner.com>

	* LazyPropertyKey.java: Make sure Error is uncaught or re-thrown.
	* Location.java: Likewise.
	* ProcLocation.java: Likewise.
	* RunnableClosure.java: Likewise.

2014-02-12  Per Bothner  <per@bothner.com>

	* WrappedException.java (rethrow): Change return type from
	void to RuntimeException.
	* ConstrainedLocation.java: Use rethrow.

2014-02-07  Per Bothner  <per@bothner.com>

	* ThreadLocation.java (setWithSave): Delate to set method.

2014-02-06  Per Bothner  <per@bothner.com>

	* ThreadLocation.java: Re-write "anonymous mode" to use a direct
	ThreadLocal - i.e. one that stores the actual value, rather than
	a Location holding the value.  This means a parent thread can't
	change values in a child after child is created - for good (mostly)
	or ill.  One advantage is performance; another is we can wrap
	an existing ThreadLocal; another is we're hopefully more thread-safe.

	* NamedLocation.java (setWithSave): Simplify - don't make expensive
	call to ThreadLocation#makeAnonymous.  This does change the semantics,
	but it seems worth it.

2014-01-06  Per Bothner  <per@bothner.com>

	* BinaryInPort.java: Moved to new package gnu.kawa.io.
	* BinaryOutPort.java: Likewise.
	* CharArrayInPort.java: Likewise.
	* CharArrayOutPort.java: Likewise.
	* InPort.java: Likewise.
	* OutPort.java: Likewise.
	* LogWriter.java: Likewise.
	* TtyInPort.java: Likewise.

2013-12-30  Per Bothner  <per@bothner.com>

	* BinaryInPort.java (class BinaryInputStream): New member class,
	extends BufferedInputStream.  Use it instead of "doing it by hand".
	(getInputStream): New method.
	(bstrm): New field.
	(bbuffer, bpos, blimit, strm): Remove fields.

2013-12-26  Per Bothner  <per@bothner.com>

	* OutPort.java (getSystemOut, getSystemErr): New methods.
	(outInitial, errInitial): Change types.

2013-12-20  Per Bothner  <per@bothner.com>

	* OutPort.java: Add synchronization.

	* UnboundLocationException.java: Tweak message formatting.

2013-12-02  Per Bothner  <per@bothner.com>

	* Promise.java (force(Object,Class)): New method.

2013-11-28  Per Bothner  <per@bothner.com>

	* BinaryOutPort.java (makeStandardPort, openFile): Don't need to
	allocate a BufferedWriter, since PrettyWriter does buffering.

2013-11-27  Per Bothner  <per@bothner.com>

	* BinaryOutPort.java: Avoid dependency on Java 7 class
	java.nio.charset.StandardCharsets.

2013-11-24  Per Bothner  <per@bothner.com>

	* BinaryOutPort.java: Generalize the text-port aspect so the
	text concoding can be other than just Latin1, with optimized
	non-buffering support for UTF-8.
	(class OutputStreamWriterLatin1): Rename to OutputStreamWriterSimple
	since it now also supports UTF-8.
	* OutPort.java (outInitial, errInitial): Change these to
	BinaryOutPorts.

	* InPort.java (openFile): Allow conversion specifier to be a
	Charset or a CharsetDecoder.

2013-11-13  Per Bothner  <per@bothner.com>

	* CharArrayInPort.java (<init>): New constructor taking FString.
	(make): Make method static.  Use new constructor.

2013-11-03  Per Bothner  <per@bothner.com>

	* Values.java: Change to an abstract class that extends
	AbstractSequence rather than TreeList.
	(class FromArray): Values implementation using an array.
	(class FromList): Values implementation using a java.util.List.
	(class Values): Values implementation using two fields.
	(class FromTreeList): Values implementation using a TreeList;
	* ValueStack.java: Change to extend Values.FromTreeList.
	This means TreeList access needs indirection via the buffer field.
	Also, no longer implement Sequence.
	(clear): Update accordingly.
	* CallContext.java (startFromContext, getFromContext,
	cleanupFromContext, runUntilValue): Update accordingly.

	* ValueStack.java: Add generic parameter.

2013-09-07  Per Bothner  <per@bothner.com>

	* MethodProc.java (overrideEquivalent): New method.
	(mostSpecific(MethodProc[],int)): Moved to PrimProcedure.

2013-08-31  Per Bothner  <per@bothner.com>

	* CharArrayOutPort.java (close): Set IS_CLOSED flag, so
	output-port-open? will do the expected.

2013-06-12  Charles Turner  <chturne@gmail.com>

	* Namespace.java (Namespace()): Changed from protected to public
	for use by gnu.kawa.lispexpr.LispPackage.

2013-06-10  Per Bothner  <per@bothner.com>

	* Namespace.java (isUnknownNamespace): New method.
	(UNKNOWN_NAMESPACE): New macro.
	(valueOf, makeUnknownNamespace): Update.
	* Symbol.java (hasUnknownNamespace): New method.
	(getNamespaceURI): Return "" for UNKNOWN_NAMESPACE.

2013-03-04  Per Bothner  <per@bothner.com>

	* CharArrayOutPort.java (writeTo): Generalize to Appendable.
	(size): Add synonym for length, to match CharArrayWriter.

2012-11-28  Per Bothner  <per@bothner.com>

	* BinaryInPort.java (<init>): New constructor taking byte array.
	(close): Call super.close.
	(bfill):  Allow null stream - needed for bytevector port.
	(openFile): New method.
	* InPort.java (openFile): New overload.  Some refactoring.
	* OutPort.java (IS_CLOSED): New constant.
	(close): Set IS_CLOSED.
	(isOpen): New method.

	* BinaryOutPort.java (openFile): Just use super.openFile.

2012-11-27  Per Bothner  <per@bothner.com>

	* BinaryInPort.java: New class, extends InPort.
	* Makefile.am: Update accordingly.
	* InPort.java (convertToReader, <init>): Inline into other constructor.
	(openFile): Add overload.  Re-write to use BinaryInPort if requested.
	* TtyInPort.java (fill): Make protected.

2012-11-24  Per Bothner  <per@bothner.com>

	* OutPort.java (flushBuffer): New method.
	* BinaryOutPort.java: Call flushBuffer is appropriate.
	(writeByte, writeBytes, getColumnNumber): New methods.

	* CharArrayOutPort.java (writeTo(Consumer)): Call 3-parameter writeTo.
	(toString): Implement using toSubString.

2012-11-22  Per Bothner  <per@bothner.com>

	* BinaryOutPort.java: New class, extends OutPort.
	* Makefile.am: Update accordingly.
	* OutPort.java (openFile): New overload.
	Return BinaryOutPort if conv is FALSE.

2012-07-02  Per Bothner  <per@bothner.com>

	* Namespace.java: Reimplement to extend AbstractHashTable - and
	thus implement java.util.Map<String,Symbol>.

2012-06-27  Per Bothner  <per@bothner.com>

	* Namespace.java (class SymbolRef): Implement Map.Entry<String,Symbol>.

2012-06-26  Per Bothner  <per@bothner.com>

	* Location.java: Change to parameterized class.
	* NamedLocation.java: Update accordingly.
	* IndirectableLocation.java: Update accordingly.
	* PlainLocation.java: Update accordingly.
	* ProcLocation.java: Update accordingly.
	* ThreadLocation.java: Update accordingly.
	* PropertyLocation.java: Update accordingly.
	* SharedLocation.java: Update accordingly.
	* ConstrainedLocation.java: Update accordingly.

2012-05-20  Per Bothner  <per@bothner.com>

	* SimpleEnvironment.java (newLocation): Make protected.

	* NamedLocation.java: Add generic parameter to supertype.
	(getKey): Fix return type to match.

2012-01-31  Per Bothner  <per@bothner.com>

	* Lazy.java: Note that getValue is allowed to return this.
	* Promise.java (force): Handle case of getValue returning this.

2012-01-27  Per Bothner  <per@bothner.com>

	* Promise.java (isBlank): New method.
	(checkUnset): Rename to checkBlank.
	(setValue, setvalue, setException, setThnk): New methods.
	(getValue): Changes to handle new functionality.
	(print): Add overload.
	(toString): New method.

2012-01-15  Per Bothner  <per@bothner.com>

	* Promise.java: Make final, because moveFrom would be anomolous if
	source or target would be a sub-class of Promise.
	(moveFrom): New method.
	(forceValueIfPromise): New field.
	(setForceValueIfPromise): New method.
	(<init>): New default constructor.
	(setValue, setAlias, setException, setThunk): New methods.
	(getValue) Re-implement to match SRFI-45.
	(force1): New static method.

2012-01-01  Per Bothner  <per@bothner.com>

	* Lazy.java (getValue): Changed to no longer throw Throwable.
	* Future.java (getValue): Catch and maybe wrap exception.
	* Promise.java (getValue): Likewise.
	(makeBoundPromise): New static method.
	(force): Simplify.
	* WrappedException.java (rethrow): New static method.

2011-10-08  Charles Turner  <chturne@gmail.com>

	* OutPort.java (getPrettyWriter): New getter.
	* OutPort.java: various @Override annotations.

2011-07-13  Per Bothner  <per@bothner.com>

	* Namespace.java (valueOfNoCreate): New static method.

2011-07-04  Per Bothner  <bothner@kuling.bothner.com>

	* MethodProc.java (isApplicable): Add special hack for
	Type.toStringType.

2011-06-29  Per Bothner  <bothner@kuling.bothner.com>

	* MethodProc.java (mostSpecific): Fix thinko.  (Not 100% sure this
	is right, but at least is doesn't crash now.)

2011-06-23  Per Bothner  <bothner@kuling.bothner.com>

	* Lazy.java (force): Rename to getValue;
	* Future.java (force): Likewise
	* Promise.java (force): Likewise.
	(static force): Update to use getValue method interface Lazy.

2011-06-14  Per Bothner  <per@bothner.com>

	* Lazy.java: New interface.
	* Makefile.am: Update accordingly.
	* Promise.java: Implement Lazy.
	(force): Change to use Lazy.  Force repeatedly.
	* Future.java: Implement Lazy.
	* RunnableClosure.java: Make generic.

2011-06-14  Per Bothner  <per@bothner.com>

	* Promise.java: Moved here from kawa.lang.

2011-04-25  Charles Turner  <chturne@gmail.com>
	    Per Bothner  <per@bothner.com>

	* WrongType.java (getMessage): Retrieve types from the
	currently default language.

2011-04-14  Per Bothner  <per@bothner.com>

	* InheritingEnvironment.java (namespaceMap, propertyMap): Remove
	fields - which are never actually set or used.
	(lookupInherited): Skip unused namespaceMap/propertyMap translation.

2010-11-27  Per Bothner  <per@bothner.com>

	* OutPort.java (finalizeAction): New field.
	* CharArrayOutPort.java (finalize): New empty method.
	(close, closeThis): Null out some fields.
	(finalize): Check finalizeAction and maybe flush or close.

2010-11-26  Per Bothner  <per@bothner.com>

	* Symbol.java (<init>(Namespace,String)): Swap argument order.
	Change from public to protected, to fix overloading resolution
	problems from Scheme 'symbol' constructor function.
	(makeUninterned): Publicly-visible alternative.
	* SimpleSymbol.java: Update accordingly.
	* Namespace.java: Likewise.

2010-10-21  Per Bothner  <per@bothner.com>

	* CallContext.java (getArgCount): New method.

2010-10-15  Per Bothner  <per@bothner.com>

	* MethodProc.java (getParameterType): Handle varargs methods.

	* ThreadLocation.java (getLocation): Remove some dead code.

2010-10-06  Per Bothner  <per@bothner.com>

	* Procedure.java (getReturnType): New semi-deprecated method
	replaces method in Inlineable interface.

2010-09-20  Per Bothner  <per@bothner.com>

	* Procedure.java (minArgs, maxArgs): New static methods.
	Use them as appropriate.

2010-08-27  Per Bothner  <per@bothner.com>

	* Procedure.java (inlineCallsKey): Remove constant field.

2010-08-26  Per Bothner  <per@bothner.com>

	* Procedure.java (inlinerKey): Remove constant field.
	(validateApplyKey): New constant field.

2010-08-20  Per Bothner  <per@bothner.com>

	* ThreadLocation.java (makePrivate): Renamed to ..
	(makeAnonymous): New method name.
	* NamedLocation.java: Update accordingly.

	* Location.java (setWithSave, setRestore): Remove unused ctx parameter.
	* NamedLocation.java: Likewise.
	* ConstrainedLocation.java: Likewise.
	* ThreadLocation.java: Likewise.

2010-08-19  Per Bothner  <per@bothner.com>

	Re-write fluid-variables and thread inheritance to make use of
	java.lang.InheritableThreadLocal, and so inheritance/fluids
	works even for threads not created using 'future'/RunnableClosure.
	* RunnableClosure.java:	Don't explicitly inherit Environments here
	- this is handled by InheritableThreadLocal.  Likewise don't
	clone bindings in the ClassContext.pushedFluids list, which is removed.
	(environment): Remove field.
	* CallContext.java (curEnvironment, currentThread): Remove fields.
	(getEnvironmentRaw, setEnvironmentRaw, getEnvironment): Remove methods.
	(pushFluid, popFluid): Remove methods.
	(pushedFluids, pushedFluidsCount): Remove fields.
	* ThreadLocation.java:  If ANONYMOUS use a InheritableThreadLocal,
	rather than a plain ThreadLocal.  Otherwise, use neither - just
	lookup in Environment.getCurrent().
	(class LocationRef): Remove local class.
	* Environment.java (class InheritedLocal): New member class which
	extends InheritableThreadLocal, and handles Environment inheritance.
	(curEnvironment): New static InheritedLocal field.
	(setCurrent): Re-implement to use curEnvironment.
	(setSaveCurrent, restoreCurrent): New static methods.
	* Location.java (setWithSave, setRestore): Don't call
	pushFluid/popFluid.
	* NamedLocation.java (setWithSave, setRestore): Likewise.
	(setWithSave): Indirect to a new anonymous THreadLocation.
	* Future.java: Simplify various places to not explicitly
	inherit Environments, since that is now handled by InheritedLocal.
	(getEnvironment): Remove field.

2010-08-03  Per Bothner  <per@bothner.com>

	* ThreadLocation.java: Change to extend NamedLocation.
	(<init>): Update accordingly.
	(name, property): Remove now-inherited fields.
	(getKeySymbol, getKeyProperty): Remove now-inherited methods.
	* ThreadLocation.java (unlink): Replace field by (property==ANONYMOUS).

2010-06-14  Per Bothner  <per@bothner.com>

	* Namespace.java (getPrefix): New method.

	* Symbol.java (valueOf[2-argument]): Combine two methods to one that
	takes an Object argument, and add some extra options.  Avoids certain
	problems with method resolution.

2010-06-13  Per Bothner  <per@bothner.com>

	* Symbol.java (equals): Revert 2010-05-19 change (but add comment and
	minor simplification) - uninterned symbols should only be equals if
	they're the same Symbol object.

2010-05-23  Per Bothner  <per@bothner.com>

	* Symbol.java (parse): Also recognize 'prefix{uri}:local' and
	'{uri}local'.
	(toString(char)): New method, to control printing of prefix and uri.
	(toString): Change to use toString(char).

2010-05-19  Per Bothner  <per@bothner.com>

	* SimpleSymbol.java (valueOf(String)): Move to super-class Symbol.
	* Symbol.java (valueOf): Also add 3 new overloaded methods.
	* Namespace.java (valueOf): Add new methods.
	(make, getInstance): Remove some old method names.
	(<init>): Make constructor be protected.
	(create): New factory methods in place of protected constructors.

	* Namespace.java (make(String,String)): Intern both uri and prefix.
	(toString): Also emit optional prefix.
	* Symbol.java (equals): Minor fix.

2010-04-13  Per Bothner  <per@bothner.com>

	* Values.java (make): Generalize from Sequence to java.util.List.

2010-04-10  Per Bothner  <per@bothner.com>

	* RunnableClosure.java: Also implement java.util.concurrent.Callable.
	(call): New method, to implement Callable.

2009-12-06  Per Bothner  <per@bothner.com>

	* MethodProc.java (mostSpecific): Fix logic bugs.
	This is one fix for Savannah bug #28022, though I decided it
	was best to *not* try to sort the methods for specificity.

2009-08-27  Per Bothner  <per@bothner.com>

	* Procedure.java (isSideEffectFree): New method.

2009-08-23  Per Bothner  <per@bothner.com>

	* Procedure.java (inlineCallsKey): New field.

	* Procedure.java (compilerKey): New field.

	* PropertyKey.java: New class.
	* LazyPropertyKey.java: New class, extends PropertyKey.
	* Makefile.am: Update accordingly.

2009-08-12  Per Bothner  <per@bothner.com>

	* Procedure.java (inlinerKey): New constant.

2009-08-10  Per Bothner  <per@bothner.com>

	* SimpleEnvironment.java (addLocation): Fix typo.

2009-05-19  Per Bothner  <per@bothner.com>

	* OutPort.java (print(boolean)): New method.

2009-05-17  Per Bothner  <per@bothner.com>

	* CallContext.java (cleanupFromContext): Remove unneeded throws clause.

2009-03-14  Per Bothner  <per@bothner.com>

	* LocationEnumeration.java: Use generics.
	(curLoc): Rename field to nextLoc.
	(prevLoc): New field, used for remove.
	(remove): Add working implementation.
	* SimpleEnvironment.java (hasMoreElements): Update accordingly.
	* InheritingEnvironment.java (hasMoreElements): Likewise.

2008-03-23  Per Bothner  <per@bothner.com>

	* OutPort.java (closeThis): New method.

2007-11-02  Per Bothner  <per@bothner.com>

	* WrongType.java (<init>): New constructor.

2007-09-08  Per Bothner  <per@bothner.com>

	* TtyInPort.java (emitPrompt): New method, pulled out from lineStart,
	to make for more convenient overriding.

2007-02-28  Per Bothner  <per@bothner.com>

	* TtyInPort.java (lineStart): Call freshLine on tied output port
	even if prompter is null.

2007-02-18  Per Bothner  <per@bothner.com>

	* PropertySet.java (nameKey): Change type to Symbol.
	* Procedure.java (setterKey): Likewise.
	* CharArrayInPort.java (make): New factory method.

2007-02-17  Per Bothner  <per@bothner.com>

	* Namespace.java (lookup): Return SimpleSymbol if appropriate.

2007-02-14  Per Bothner  <per@bothner.com>

	* SimpleSymbol.java: New class, extends Symbol.
	* Makefile.am: Update accordingly.

2007-01-19  Per Bothner  <per@bothner.com>

	* Namespace.java (get): Fix thinko.

2007-01-04  Per Bothner  <per@bothner.com>

	* CallContext.java (baseUri, baseUriDefault): Remove fields.
	(getBaseUriDefault, getBaseUriRaw, getBaseUri, setBaseUri): Remove
	methods.  Code now uses Path.currentPath instead.

2007-01-02  Per Bothner  <per@bothner.com>

	* InPort.java: Use Path object for "filename".
	(<init>, openFile): Update accordingly.
	* OutPort.java: Likewise.
	* TtyInPort.java: Likewise.
	* CharArrayInPort.java (stringPath): New Path constant.
	(<init>): Set "filename" to stringPath.
	* CharArrayOutPort.java: Likewise.

	* InPort.java (systemInPort): Use "/dev/stdin" instead of "<stdin>".
	* OutPort.java: Similarly use "/dev/stdout" and "/dev/stderr".

2006-12-29  Per Bothner  <per@bothner.com>

	* InPort.java (uriSchemeSpecified, uriSchemeLength): Methods moved
	to new gnu.text.Path class.

2006-12-12  Per Bothner  <per@bothner.com>

	* OutPort.java: Update for nwe WriterManager API.
	(index): Replaced by new unregisterRef field.

2006-11-22  Per Bothner  <per@bothner.com>

	* Values.java (countValues): New static method.

	* InPort.java: Rename Consumer methods append->write.
	* Values.java: Likewise.
	* OutPort.java: Likewise.
	(append): Remove method.

2006-11-20  Per Bothner  <per@bothner.com>

	* Printable.java: Moved to gnu.text.
	* Makefile.am: Update accordingly.
	* CharArrayOutPort.java (writeTo): New methods.
	* InPort.java (print): Update since parameter is now a Consumer.
	* Values.java (print): Likewise.
	* OutPort.java (print): Likewise.

2006-11-18  Per Bothner  <per@bothner.com>

	* OutPort.java (append): Change return type if JAVA5.

2006-11-17  Per Bothner  <per@bothner.com>

	* OutPort.java: Update writeChar -> append.

2006-11-16  Per Bothner  <per@bothner.com>

	* Symbol.java (print): Remove unused method.

2006-11-13  Per Bothner  <per@bothner.com>

	* UnboundLocationException.java: New constructor.

	* OutPort.java (writeWordEnd, writeWordStart): New methods.

2006-11-12  Per Bothner  <per@bothner.com>

	* Symbol.java (parse): Don't die if zero-length string.

2006-11-09  Per Bothner  <per@bothner.com>

	* OutPort.java: Update for Consumer changes.

2006-10-26  Per Bothner  <per@bothner.com>

	* Namespace.java (makeUnknownNamespace): New static method.
	* Symbol.java (parse, makeWithUnknownNamespace): New static methods.

2006-10-25  Per Bothner  <per@bothner.com>

	* Symbol.java  (equals): Check for one but not both arguments null.
	(matches, matches): Compare using equals, not identity.
	* KeyPair.java (matches, matches): Use Symbol.equals, not identity.
	* NamedLocation.java (matches, matches): Likewise.

2006-10-21  Per Bothner  <per@bothner.com>

	* OutPort.java (errInitial): Since retty-printing no longer by default
	automatically translates ' ' to fill we can revert 10-11 change.

	* Table2D.java: New class.
	* Makefile.am: Update accordingly.

2006-10-11  Per Bothner  <per@bothner.com>

	* OutPort.java (errInitial): Don't pretty-print error output.
	(errDefault): Fix typo - get errLocation, not outLocation.

2006-10-06  Per Bothner  <per@bothner.com>

	* SimpleEnvironment.java (queue): Remove unused static field.

2006-09-29  Per Bothner  <per@bothner.com>

	* OutPort.java (<init>): Optimize this constructor if Writer is an
	OutPort, as with two of the other constructors.
	(close): If we did above optimization, make sure to close the
	base class, rather than using super's close.  The latter also closes
	the PrettyWriter's buffer in the case of a CharArrayOutPort, which
	we don't want, so let overriding of close geta chance to work.

2006-09-13  Per Bothner  <per@bothner.com>

	* OutPort.java: Various changes to support XMLPrinter extending this.
	(<init>(Writer,PrettyPriter,boolean)): Make protected.
	(<init>(OutPort,boolean)): New protected constructor.
	(<init>(Writer,boolean)): New protected constructor.

2006-08-31  Per Bothner  <per@bothner.com>

	* CharArrayOutPort.java (length, setLength, reset. toSubString):
	New methods.

2006-08-23  Per Bothner  <per@bothner.com>

	* WrongType.java (getMessage): Fix off-by-one error.

2006-08-17  Per Bothner  <per@bothner.com>

	* WrongType.java (<init>(String,int,Object,String)): New constructor.

2006-06-28  Per Bothner  <per@bothner.com>

	* Namespace.java (prefix): New field.
	(getInstance): Name is interned.
	(make): New factory method.
	(<init>(String, int)): Remove constructor.
	(writeExternal, readExternal): Write/read prefix,  Intern name.
	(readResolve): Take prefix into account, if givem.
	* Symbol.java: Optionally extend javax.xml.namespace.QName.
	However, this is not fully working or recommended.
	A few methods to be compatible with QName, including getPrefix.
	(make, makeUninterned): New factory methods.
	(equals): New static method.
	(equals): Use new method.
	(toString): If available, emit prefix rather than uri.
	* ThreadLocation.java (<init>): Use new Symbol.makeUninterned.

2006-06-16  Per Bothner  <per@bothner.com>

	* HasNamedParts.java (isConstant): New method.
	* Namespace.java (isConstant): New method.

	* IndirectableLocation.java (getBaseForce): New method.

2006-06-10  Per Bothner  <per@bothner.com>

	* Namespace.java  (nsTable): Make protected.

	* HasNamedParts.java: New interface.
	* Makefile.am: Update accordingly.
	* Namespace.java: Implement HasNamedParts.
	(get): New method.

2006-06-09  Per Bothner  <per@bothner.com>

	* PropertySet.java: New class, implements Named.
	(properties, nameKey, getName, getSymbol, setSymbol, setName,
	getProperty, setProperty, removeProperty): Move fields and methods
	from Procedure to here.
	* Procedure.java: Change to extends PropertySet.  Remove moved methods.
	(name): Remove deprecated method.
	* Environment.java: Extend PropertySet, rather than NameMap
	and thence indirectly Procedure.
	(getChecked): New method, moved from NameMap.
	* NameMap.java: Remove no-longer-needed class.
	* Makefile.am: Update accordingly.

2006-05-20  Per Bothner  <per@bothner.com>

	* InheritingEnvironment.java (lookup): Explictly check isBound.
	(getLocation): Likewise.

2006-05-02  Per Bothner  <per@bothner.com>

	* UnboundLocationException.java (filename, line, column): New fields.
	(<init>): New constructor.
	(setLine): Nwe method.
	(getMessages): Show filename:line:column if available.
	(toString): New method - just call getMessage().

2006-02-21  Per Bothner  <per@bothner.com>

	* InPort.java (uriSchemeLength): Be more restrictive about syntax
	of the url scheme.

2006-02-10  Per Bothner  <per@bothner.com>

	* Procedure.java (sourceLocationKey): New constant.
	(setSourceLocation, getSourceLocation): New method.
	(toString): Try getSourceLocation() if getName() is null.

2006-02-09  Per Bothner  <per@bothner.com>

	* CallContext.java (evalFrames): New field.

2006-02-07  Per Bothner  <per@bothner.com>

	* Setter.java (getter): Make field protected for NamedPartSetter class.

2006-02-02  Per Bothner  <per@bothner.com>

	* ThreadLocation.java: Implement Named.
	(getName, getSymbol): New methods.
	(setName): New stub method - throws an exception.
	(<init>): New private constructor that takes a Symbol.
	(makePrivate): New overload that takes Symbol rather than String.

	* Namespace.java (make): New static method.
	(toString): Changed to display Scheme literal syntax.

2006-01-20  Per Bothner  <per@bothner.com>

	* MethodProc.java (matchFailAsException): Don't get argument
	is argument number is <= 0 (e.g. ARG_UNKNOWN).

2006-01-12  Per Bothner  <per@bothner.com>

	* Environment.java (remove): Fix a StackOverflowException.
	Make most variants final and implemented in terms on one core method.
	Have that method be implemented using unlink.
	Have most of the remove methods return the old value.
	* SimpleEnvironment.java (remove): Remove method.  Redundant now
	that we use unlink and undefine.

2006-01-04  Per Bothner  <per@bothner.com>

	* InPort.java (<<init>): Generalize name to Object - can be a URI.
	(openFile): Likewise.  Use new URI_utils.getInputStream.
	* OutPort.java (name): Generalize type - can be a URI.
	(openFile): Likewise.  Use new URI_utils.getOutputStream.

2005-12-31  Per Bothner  <per@bothner.com>

	* CallContext.java (setInstance): Belatedly update for non-JAVA2 case
	that the context field is now in RunnableClosure rather than Future.

2005-12-30  Per Bothner  <per@bothner.com>

	* InPort.java (uriSchemeSpecified): Only recognize MS-DOS drive
	letters if on MS-DOS and it actually is a letter.

2005-12-21  Per Bothner  <per@bothner.com>

	* OutPort.java (closeOnExit): New method.
	(<init>): Only register with WriterManager if closeOnExit().
	* CharArrayOutPort.java (closeOnExit): New method - returns false.
	This fixes a memory leak - CharArrayOutPort were not being collected.

2005-12-10  Per Bothner  <per@bothner.com>

	* InPort.java (uriSchemeLength): Moved from BaseUri.java.
	(uriSchemeSpecified): Moved hasScheme from BaseUri.java and renamed.
	(openFile): Open using URLConnection if uriSchemeSpecified.

2005-12-08  Per Bothner  <per@bothner.com>

	* WrongType.java: New constructors for use by CheckedTarget.
	(getMessage): Better handling of ARG_VARNAME.

2005-11-15  Per Bothner  <per@bothner.com>

	* CharArrayOutPort.java (close): New method - does nothing.

2005-11-03  Per Bothner  <per@bothner.com>

	* OutPort.java (beginAttribute, endAttribute): Call corresponding
	method 	of objectFormat if non-null.
	* OutPort.java (bout): Make protected, for ReplSession.java.

	* OutPort.java (prev): Remove never-read field.
	(WORD): Remove unused constant.
	(startWord): Remove needless method.
	(write(int), write(char[],int,int), write(String), print)char)):
	Remove now-pointless method overrides.

2005-10-19  Per Bothner  <per@bothner.com>

	* WrongArguments.java (checkArgCount): Check for a null procedure name.

2005-10-17  Per Bothner  <per@bothner.com>

	* TtyInPort.java (prompter, promtEmitted): Make protected, so
	gnu.kawa.servlet.OutBufferWriter (in ReplSession.java) can access them.

2005-09-27  Per Bothner  <per@bothner.com>

	* CallContext.java (getBaseUriDefault): Use File.toURI().toString(),
	if use:java.net.URI is set - i.e. for JDK 1.4 or higher.

	* Future.java (waitForResult): Specify throws Throwable
	so we don't have to wrap an exception.

	* RunnableClosure.java (getResult): New method.

2005-09-26  Per Bothner  <per@bothner.com>

	* Environment.java (remove, unlink): New methods.
	* Location.java (undefine): New method.
	* SimpleEnvironment.java (remove): Rename to unlink, which takes hash.
	Don't undefine location - do that in remove.
	* ThreadLocation.java (LocationRef.finalize): Just unlink - don't
	undefine the location.

2005-09-25  Per Bothner  <per@bothner.com>

	* Procedure.java (apply): Clean up old debugging left-over.

2005-08-15  thomas kirk  <tk@research.att.com>

	* RunnableClosure.java: New class implementing Runnable.
	Extracted from Future
	* Future.java: Most functionality moved to RunnableClosure.
	Future now just implements a Thread that encapsulates and
	executes a RunnableClosure.
	* Makefile.am: Add RunnableClosure.java.

2005-08-09  Per Bothner  <per@bothner.com>

	* SimpleEnvironment (define): Remove unused local variable prev.

2005-08-07  Per Bothner  <per@bothner.com>

	* NamedLocation.java (setRestore): If restored value is not a Location,
	then clear base.  This fixes a bug caused by sharing done in Future.

2005-08-03  Per Bothner  <per@bothner.com>

	* MethodProc.java (matchFailAsException): Fix thinko.

2005-07-28  Per Bothner  <per@bothner.com>

	* Symbol.java (id, counter): Remove unused fields.

2005-07-23  Per Bothner  <per@bothner.com>

	* Environment.java (INDIRECT_DEFINES): New flag.
	(setIndirectDefines): New method.
	(getGlobal): Add new overload, with abstract method taking hash code.\
	(make(String,Environment)): More precise return type.
	* SimpleEnvironment.java (getLocation):  Update accordingly.
	(addLocation): If INDIRECT_DEFINES, add to parent instead.
	* InheritingEnvironment.java (getLocation): Update accordingly.
	If INDIRECT_DEFINES, create in parent.
	If existing loc has INDIRECT_FLUIDS, copy that attribute.
	* InheritingEnvironment.java (getNumParents, getParent): New methods.

	* CallContext.java (pushedFluids, pushedFluidsCount): New fields.
	(pushFluid, popFluid): New methods.
	(getEnvironment): Set THREAD_SAFE flag on new environment.
	* Location.java (setWithSave, setRestore): Take extra CallContext
	parameter, so we can call pushFluid/popFluid.
	* SharedLocation.java (setWithSave, setRestore): Move to NamedLocation.
	* NamedLocation.java (setWithSave, setRestore): Update to pass
	or use CallContext parameter.
	* ThreadLocation.java (setWithSave, setRestore): Update accordingly.
	* ConstrainedLocation.java (setWithSave, setRestore): Likewise update.
	* PlainLocation.java (setWithSave, setRestore): Use inherited methods.
	* Future.java (<init>): Pass parent CallContext.  Use it import into
	child any pushed fluid bindings.
	Don't call makeShared, but force/assume that THREAD_SAFE is set.
	* SimpleEnvironment.java (addLocation): Only rereference ThreadLocation
	if it's the same property and thus a cycle is a risk.
	(makeShared): Remove no-longer-used method.

	* LocationProc.java (setWithSave, setRestore): Remove unused methods.

2005-06-04  Per Bothner  <per@bothner.com>

	* OutPort.java:  Update for AbstractFormat move to gnu.lists.

	* OutPort.java (objectFormat): Change type to AbstractFormat.

2005-05-17  Per Bothner  <per@bothner.com>

	* Location.java (make): Return a ThreadLocation.

2005-05-08  Per Bothner  <per@bothner.com>

	* InheritingEnvironment.java (lookupExtend): Remove method.
	(lookup, getLocation): Remove lookupExtend calls.
	* Future.java (environment): Make public, for GuiConsole.

	* ThreadLocation.java (<init>(String)): Create global local.  This
	provides a default shared local.

2005-05-06  Per Bothner  <per@bothner.com>

	* ThreadLocation.java (ANONYMOUS): New constant.
	(<init>): Take String rather than Symbol.
	(makePrivate): Likewise.
	* InPort.java (inLocation): Update ThreadLocation constructor call.
	* OutPort.java (outLocation, errLocation): Likewise.

	* InheritingEnvironment.java (<init>): Handle the case that parent
	is a plain Environment.
	* Environment.java (make): Don't need to cast parent any more.

2005-04-20  Per Bothner  <per@bothner.com>

	* OutPort.java (outInitial): Make non-private.
	* InPort.java (systemInPort): Use outInitial directly.

2005-04-18  Per Bothner  <per@bothner.com>

	* WrappedException.java (getReflectClass): Update PreProcess names.

2005-04-18  Per Bothner  <per@bothner.com>

	* ThreadLocation.java (threadMap): Make non-static.

2005-04-17  Per Bothner  <per@bothner.com>

	* WrappedException.java: Change JAVA5 dependencies on initCause to
	JAVA4, which is now the default.

2005-04-03  Per Bothner  <per@bothner.com>

	* Procedure.java: Fix javadoc comment.

2005-03-29  Per Bothner  <per@bothner.com>

	* CallContext.java (getEnvironmentRaw, setEnvironmentRaw): New methods.

	* SimpleEnvironment.java (redefinedError): Extend error message.

	* WrappedException.java (<init>): Use to-string to get default message;
	that sems to be more robust, since sometimes message is null.

2005-03-11  Per Bothner  <per@bothner.com>

	* Environment.java (toStringVerbose): New method, for debugging.
	* SimpleEnvironment.java (toStringVerbose, toStringBase): Ditto.
	* InheritingEnvironment.java (toStringBase): Ditto

2005-03-06  Per Bothner  <per@bothner.com>

	* UnboundLocationException.java (getMessage): If we have an
	explicit message, use that instead of creating one.

2005-03-03  Per Bothner  <per@bothner.com>

	* Future.java (initEnvironment): Removed field, for parent Environment.
	(environment): New field, for child environment.
	(run): Move allocation of child Environment from here ...
	(<init>): ... to here.  This avoids a race condition.

	* Environment.java (make(String,Environment)): Move incrementing
	timestamp from here to ...
	* InheritingEnvironment.java (<init>): ... here.
	Also set currentTimestamp, not just baseTimestamp.
	(getLocation): Maybe set timestamp of new indirect location.

2005-02-25  Per Bothner  <per@bothner.com>

	* ThreadLocation.java (makePrivate): New factory method.

2005-02-24  Per Bothner  <per@bothner.com>

	* InPort.java (inLocation): New static ThreadLocation.
	(inDefault, setInDefault): Use inLocation.
	* OutPort.java (outLocation, errLocation): New static ThreadLocations.
	(outDefault, setOutDefault): Use outLocation.
	(errDefault, setErrDefault): Use errLocation.
	* Future.java (in, out, err): This fields are now only used to
	initialize a Thread, not by inDefault/outDefault/errDefault.

	* OutPort.java (endGroup): Fix small thinko.

	* CallContext.java (getEnvironment): If no Environment, create a new
	Environment that inherits from global, rather than using it directly.

2005-02-23  Per Bothner  <per@bothner.com>

	* Symbol.java (hasEmptyNamespace): New method.

2005-02-20  Per Bothner  <per@bothner.com>

	* ConstrainedLocation.java: New class, extends Location.
	* ReadOnlyLocation.java: New class, extends ConstrainedLocation.
	* ConstantLocation.java: Removed unused class.
	* Makefile.am: Update accordingly.
	* LocationProc.java (makeNamed): New factory method.
	(converter): Remove field - use ConstrainedLocation instead.
	(pushConverter): New method.
	(<init>(Location.Procedure)): Use pushConverter.
	(set0): Simplify since we don't have a converter.
	* ProcLocation.java (setWithSave, setRemove): Remove no-longer
	needed methods, thanks to location.makeProcLocation$V optimization.

	* ThreadLocation.java (DYNAMIC): Can't use static property for all
	anonymous ThreadLocations, since it might not be unique.  So remove.
	(unlink): New field, to control if went should unlink when finalizing.
	(LocationRef.finalize): Use Locations's symbol and propertyt to unlink.

2005-02-19  Per Bothner  <per@bothner.com>

	* ThreadLocation.java (setGlobal): Allocate Location for global,
	if needed.

2005-02-18  Per Bothner  <per@bothner.com>

	* ThreadLocation.java: Improve garbage-collability.
	(DYNAMIC): New constant.
	(<init>):  Use DYNAMIC as property for "anonymous" fluids.
	(class LocationRef): New helper class, with finalize method.
	(getLocation): Use LocationRef for "anonymous" fluids.

2005-02-12  Per Bothner  <per@bothner.com>

	* IndirectableLocation.java (setAlias): New method.
	* Location.java (print):  Restore printing of location name.
	* LocationProc.java: Minor optimiation.
	* ProcLocation.java (setWithSave, setRestore): New methods.

	* LocationProc.java: New file, but class was extracted from
	kawa/standard/location.java.
	Add some extra "features" to support srfi-39 "parameter objects".
	* Makefile.am: Update accordingly.
	* ThreadLocation.java (setGlobal): New method.
	* Location.java (toString): Don't print property if it is this.

2005-02-11  Per Bothner  <per@bothner.com>

	* Environment.java (toString): New method.

	Fixes Savannah bug #11801.
	* Environment.java (DIRECT_INHERITED_ON_SET): New flag.
	(make(String, Environment)): Increment parent's currentTimestamp.
	* Future.java (run): Need to make child shared (THREAD_SAFE), and
	clear DIRECT_INHERITED_ON_SET bit.
	* InheritingEnvironment.java (getLocation): "Inline" addLocation.
	Only set DIRECT_ON_SET on new location if DIRECT_INHERITED_ON_SET.
	* SimpleEnvironment.java (newLocation): Don't need to increment
	timestamp, as long as it is done when a child is created by Future.run.
	(makeShared): Likewise.
	Set INDIRECT_FLUIDS on old PlainLocation so it properly redirects.

	* UnboundLocationException.java (getMessage): A Location may have
	a non-null getKeySymbol even if it isn't a NamedLocation.

	* ThreadLocation.java: New class, extends Location.
	* Makefile.am: Update accordingly.

2005-02-07  Thomas Krk  <tk@research.att.com>

	* Environment.java (make(String, Environment)): Set baseTimestamp.
	Partial fix for Savannah bug #11577.

2005-01-30  Per Bothner  <per@bothner.com>

	* WrappedException.java: Use JDK 1.4 "cause" mechanism ifdef JAVA5.
	(wrapIfNeeded): New static method.
	(message): Remove field.  Instead use getMessage() - and set
	message from cause at constructor time if needed.

2005-01-21  Per Bothner  <per@bothner.com>

	* SimpleEnvironment.java (addLocation): Defer isBound() invocation.

2005-01-16  Per Bothner  <per@bothner.com>

	* IndirectableLocation.java (INDIRECT_FLUIDS): New constant.
	* SimpleEnvironment.java (addLocation): Set value to INDIRECT_FLUIDS.
	* PlainLocation.java (setWithSave): Check for INDIRECT_FLUIDS.
	* SharedLocation.java (setWithSave): Likewise.
	Fixes Savannah bug #11578.

2005-01-07  Per Bothner  <per@bothner.com>

	* NamedLocation.java: Remove unneeded import.

2005-01-05  Per Bothner  <per@bothner.com>

	* Location.java (counter, id): Comment out, except for debugging.
	(toString): Update accordingly.
	* NamedLocation.java (toString): Remove - use inherited version.

2005-01-02  Per Bothner  <per@bothner.com>

	* CallContext.java, LocationEnumeration.java, NamedLocation.java,
	Namespace.java, SimpleEnvironment.java, Symbol.java:
	Change "select" (preprocessor) syntax.

2004-12-29  Per Bothner  <per@bothner.com>

	* IndirectableLocation.java: Changed to inherit directly from
	Location, rather than via NamedLocation.
	(getKeySymbol, getKeyProperty): New methods.
	(setBase): Simplify.
	* NamedLocation.java: Inherit from IndirectableLocation.
	* PlainLocation.java: Inherit from NamedLocation
	* SharedLocation.java: Likewise.
	* Location.java (getKeySymbol, getKeyProperty): New methods.
	(toString): New method.

	* InheritingEnvironment.java (lookupDirect): Moved to super class.
	* SimpleEnvironment.java (lookupDirect): New method.
	(put): Simplify using getLocation.
	(newEntry): New helper method.
	* Environment.java (addLocation): Change to a non-void return.
	* InheritingEnvironment.java (getLocation): Use new addLocation.

	* UnboundLocation.java: Removed class - just use a PlainLocation.
	* Makefile.am: Update accordingly.
	* IndirectableLocation.java (undefine): Handle UNBOUND ourself.
	* Location.java (make): No longer use UnboundLocation.
	* LocationEnumeration.java (nextLocation): Likewise.
	* NamedLocation.java (genEnvironment): Update likewise.
	* SimpleEnvironment.java (unbound): Rename field ...
	(sharedTail): and change type to namedLocation.
	(addUnboundLocation, define, addLocation): Major simplification,
	since we don't try to use an extra WeakReference.

2004-12-22  Per Bothner  <per@bothner.com>

	* Namespace.java: New protected constructor. Kludge used by SName.

2004-12-20  Per Bothner  <per@bothner.com>

	* Symbol.java (name): Make field protected, for the sake of Keyword.
	* Namespace.java (createInternal): Remove, moving most of body to ...
	(add): New public method.
	(lookup): Use add instead of createInternal.

2004-12-19  Per Bothner  <per@bothner.com>

	* InheritingEnvironment.java (hasMoreElements): Fix logic bug
	reported (with incomplete patch) by Christian Surlykke.

	* SimpleEnvironment.java (addLocation): Guard againts cycles.

2004-12-05  Per Bothner  <per@bothner.com>

	Rewrite of how symbols and environments are handled.
	Locations are now separate from stateless Symbols.
	* Symbol.java: Major rewrite.  Move some functionality to Location.
	(constraint): Remove field - we no longer make use of Constraints.
	* Namespace.java: New class.  Partially based on Environment.

	* Location.java: Major re-write. No longer base class for Symbol.
	* ConstantLocation.java: New class, replaces ConstantConstraint.
	* NamedLocation.java: New abstract class, extends Location.
	* IndirectableLocation.java: New abstract class.  Combines
	functionality of IndirectableConstraint, TrivalCOntraint, and Symbol.
	* PlainLocation.java: New class, extends IndirectableConstraint.
	* SharedLocation.java: Similar to PlainLocation, but synchronized.
	* UnboundLocation.java: New class, replaced UnboundConstraint.
	* ProcLocation.java: Small update.

	* PropertyLocation.java: New class, extends Location.

	* Constraint.java: Removed class; replaced by Location.
	* AliasConstraint.java: Likewise removed.
	* ConstantConstraint.java: Likewise.
	* IndirectConstraint.java: Likewise.
	* TrivialConstraint.java: Likewise.
	* UnboundConstraint.java: Likewise.
	* Makefile.am: Update accordingly.

	* EnvironmentKey.java: New interface for a (Symbol. property)-pair.
	* KeyPair.java: New concrete classs implementing EnvironmentKey.

	* Environment.java: Made abstract.   Changed to map EnvironmentKey
	to Location, instead of String to Symbol.
	* SimpleEnvironment.java: New class, extends Environment.
	* InheritingEnvironment.java: New class, extends SimpleEnvironment.
	* SymbolEnumeration.java: Removed class, replaced by ...
	* LocationEnumeration.java: New class.
	* NameMap.java: Changed to match new Environment.

	Re-implemented fluid bindings.
	* FluidBinding.java: Removed class.
	* FluidConstraint.java: Likewise.
	* CallContext.java (fluidBindings): Removed field.
	(setFluids, resetFluids): Removed methods.
	* Future.java (fluidBindings): Remove field.
	(setFluids, resetFluids, getFluids): Removed methods.
	(<init>, run): Redid creating of sub-Environment.

	* Named.java (getSymbol): New method.

	* UnboundSymbol.java: Removed RuntimeException class, replaced by ...
	* UnboundLocationException.java: New class extends RuntimeException.

2004-11-23  Per Bothner  <per@bothner.com>

	* Environment.java (make): Comment out one of the new methods.

2004-11-22  Per Bothner  <per@bothner.com>

	* Symbol.java (setConstraint, makeUninterned): New methods.
	* Environment.java (setLocked, make): New methods.

2004-10-23  Per Bothner  <per@bothner.com>

	* WrongType.java (ARG_CAST): New constant.
	(make*2): New methods take argValue parameter.
	(getMessage): Rework logic to work well for ARG_CAST.

2004-08-24  Per Bothner  <per@bothner.com>

	* OutPort.java (openFile): New static method.

2004-08-14  Per Bothner  <per@bothner.com>

	* CallFrame.java:  Remove unused class.

2004-08-06  Per Bothner  <per@bothner.com>

	* Procedure.java:  New API, especially for --full-tailcalls.
	(apply):  New static method.  Old apply calls new static.
	(match0, match1, match2, match3, match4, matchN):  New methods.
	(check0, check1, check2, check3, check4, checkN):  New methods.
	* MethodProc.java (match, applyV):  Remove methods.
	(apply(CallContext)):  Remove method - use the inherited method.
	(applyN):  Update to use checkN instead of removed match+applyV.
	* CallContext.java:  No longer implement Runnable.
	(run):  Remove method.
	(pc):  New field.
	(getRestArgsArray, getRestArgsList):  Take start parameter.
	(setArgs[5 methods], setArgsN):  Remove methods.
	(getArgs):  Reset next to 0.
	* CpsMethodContainer.java:  Remove interface.
	* CpsMethodProc.java:  Remove class.
	* Makefile.am:  Update accordingly.
	* CallFrame.java:  No longer implement CpsMethodContainer.

2004-08-06  Per Bothner  <per@bothner.com>

	* WrappedException.java (<init>):  Add default constructor.
	* WrongType.java (number):  Change to 1-origin.
	(typeExpected):  Renamed to expectedType and chaned to Object,
	(argValue):  New field.
	(<init>):  New constructors that also set argValue.
	(getMessage):  Add more information.

2004-08-03  Per Bothner  <per@bothner.com>

	* CpsMethodProc.java:  Remove no-longer-used class.
	* Makefile.am (java_sources): Remove CpsProcedure.java, CallFrame.java.
	* CpsMethodProc.java:  Extend MethodProc instead of CpsProcedure.
	* CallFrame.java:  Likewise.

	* MethodProc.java:  Merge functionality from CpsProcedure.
	* CpsProcedure.java:  Now just a stub, soon to be removed.

	* ApplyMethodContainer.java:  Remove no-longer-used interface.
	* ApplyMethodProc.java:  Remove no-longer-used class.
	* Makefile.am:  Update accordingly.

2004-07-20  Per Bothner  <per@bothner.com>

	* CallContext.java:  Remove unused import statements.
	* CharArrayInPort.java:  Likewise.
	* CharArrayOutPort.java:  Likewise.
	* CpsProcedure.java:  Likewise.
	* OutPort.java:  Likewise.
	* Printable.java:  Likewise.

2004-06-12  Per Bothner  <per@bothner.com>

	* InPort.java (readState, getReadState):
	Moved to gnu.text.LineBufferedReader.

2004-05-20  Per Bothner  <per@bothner.com>

	* OutPort.java (writeChars):  Remove redundant method.

2004-05-12  Per Bothner  <per@bothner.com>

	* MethodProc.java (mostSpecific):  Handle the case that two or more
	methods are equally specific, but a later method is more specific.

2004-03-08  Per Bothner  <per@bothner.com>

	* Symbol.java:  Implement Comparable, and Map.Entry, if JAVA2.
	(compareTo):   New method.

2004-01-09  Per Bothner  <per@bothner.com>

	* FluidConstraint.java (find):  Inline Future.getFluids.

	* TrivialConstraint.java (getInstance):  Minor fix,
	
	* CallContext.java (curEnvironment):  New field.
	(getEnvironment):  Rewrite to use curEnvironment.
	* Environment.java (getCurrent):  Use CallContext's getEnvironment.
	(setCurrent):  Set current CallContext's curEnvironment.
	(setGlobal):  New method.
	* Future.java (environmentr):  Renamed field to initEnvironment,
	(<init>):  Update accordingly.
	(run):  Set CallContext.curEnvironment from initEnvironment.
	
	* Environment.java (user, lookup_global, define_global, put_global):
	Call getCurrent directly.

	* Environment.java (getInstance, getSymbol, lookup, addSymbol, remove):
	Add synchronization as appropropriate.

2003-11-09  Per Bothner  <per@bothner.com>

	* CharArrayOutPort.java (toString):  New method.

2003-10-11  Per Bothner  <per@bothner.com>

	* ValueStack.java:  Extends Values instead of TreeList.

2003-10-09  Per Bothner  <per@bothner.com>

	* CallContext.java (setFluids, resetFluids):  Add synchronization, as
	syggested by jared@mercedsystems.com.	Fixes Savannah bug #5789.

	* ApplyMethodProc.java (module):  Make field public.
	* CpsMethodProc.java (module):  Make field public.

2003-10-07  Per Bothner  <per@bothner.com>

	* Procedure.java (getSymbol, setSymbol):  New methods.
	(getName):  Check for a Symbol as the name property.
	* ApplyMethodProc.java (<init>):  Name can be a Symbol or a String.
	* CpsMethodProc.java (<init):  Likewise.

	* Environment.java (setPrevious):  New method.

	* Values.java (equals):  Remove - for now use inherited method,
	which for a Value just compares identity.

2003-09-30  Per Bothner  <per@bothner.com>

	* CallContext.java (startFromContext, getFromContext,
	cleanupFromContext):  New methods. 

2003-09-11  Per Bothner  <per@bothner.com>

	* Values.java (nextValue):  Adjust curIndex by buffer gap size.

2003-09-04  Per Bothner  <per@bothner.com>

	* CallContext.java (getRestArgsArray, getRestArgsList):  New methods.

	* CpsMethodProc.java (getName):  New method.

2003-08-08  Daniel Bonniot  <Daniel.Bonniot@inria.fr>

	* ProecdureN.java (noArgs):  New static field.
	(apply0):  Use it (so we don't depend on Values).

2003-07-12  Per Bothner  <per@bothner.com>

	* Future.java (parent):  Remove unused field.
	(iniBindings):  New field.
	(<init>):  Combine construcors.
	Set initBindings using getFields().
	(run):  Set context's fluidBindings using initBindings.
	Fixes bug reported 7/11 by Chris.Dean@sokitomi.com.

2003-07-10  Per Bothner  <per@bothner.com>

	* CallContext.java (getArgAsObject):  Make non-public.
	(getArgs):  Use getNextArg instead of getArgAsObject.
	* Procedure.java (apply):  Likewise.

2003-05-30  Per Bothner  <per@bothner.com>

	* WrongType.java (getMessage):  Don't print causes's message if null.

2003-05-08  Per Bothner  <per@bothner.com>

	* WrappedException.java:  Add so-far-commented-out hooks
	to use JDK-1.4-style getCause/initCause.

2003-05-03  Per Bothner  <per@bothner.com>

	* CallContext.java.in:  Renamed back to ...
	* CallContext.java:  and changed to use new JAVA1/JAVA2 switching.
	* Makefile.am:  Update accordingly.

2003-04-08  Per Bothner  <per@bothner.com>

	* Symbol.java (defineValue):  Check for null env.
	Fixes bug reported 04-08 by Vladimir Tsichevski.

2003-04-06  Per Bothner  <per@bothner.com>

	* SFormat.java:  Removed.
	* Makefile.am (java_sources):  Update accordingly.

2003-04-05  Per Bothner  <per@bothner.com>

	* SFormat.java (print):  Remove formatting.  Instead just indircet
	to DisplayMethod's writeObject.
	(format):  Remove usused method.
	(printReadable): Inline into print and remove.
	* OutPort.java (writeSchemeObject):  Remove no-longer-used method.
	* Symbol.java (print):  Don't use SFormat.
	* Values.java (print):  Likewise.

2003-03-15  Per Bothner  <per@bothner.com>

	* Symbol.java:  Reduce set of inconsistent 'make' overloadings to one.
	Previous situation would cause problems when compiling XQuery QNames.
	(make(String, String)):  Generalize to make(Object, String) - allows
	first argument to be null, an Environment, or a namespace name.
	(make(String, Environment)):  Subsumed by above method, hence removed.
	(make(Object, String)):  Rename variant that creates an initialized
	uninterned symbol to makeUninterned to avoid confusion.
	(writeExternal, readExternal):  Match new 'make' argument order.

2003-03-03  Per Bothner  <per@bothner.com>

	* CallContext.java.in (baseUriDefault):  new static field.
	(getBaseUriDefault):  New static method.

2003-03-02  Per Bothner  <per@bothner.com>

	* CallContext.java.in (baseUri):  New protected field.
	(getBaseUriRaw, getBaseUri, setBaseUri):  New methods.

2003-02-19  Per Bothner  <per@bothner.com>

	* ValueStack.java (oindex, find):  Field and methods moved to
	TreeList.  Not much left in this class ...

2003-01-09  Per Bothner  <per@bothner.com>

	* Values.java:  Update for new gnu.lists APIs.

2002-12-11  Per Bothner  <per@bothner.com>

	* Symbol.java (toString):  Also display getNamespaceURI() if non-empty.

2002-11-15  Per Bothner  <per@bothner.com>

	* Environment.java: Implement Externalizable.
	(writeExternal, readExternal, readResolve):  New methods.

	* Environment.java (envTable. EmptyNamespace):  New static fields.
	(getInstance):  New method.
	(<init>):  New constructor.

	* Symbol.java (getNamespaceURI, getLocalName, make):  New methods.
	(<init>):  Set constraint for uninterned Symbol.
	(readExternal):  Set constraint even for uninterned Symbol.
	Intern name if non-null.

	* Procedure.java (setSetter):  New method.

2002-10-28  Per Bothner  <bothner@bothner.com>

	* Binding.java:  Renamed to Symbol.java.
	* BindingEnumerator.java:  Renamed to SymbolEnumerator.java.

2002-09-26  Per Bothner  <per@bothner.com>

	* Location.java (get(Object)):  New method.
	* AliasConstraint (get):  Can now simplify to use Location.get.

2002-09-21  Per Bothner  <per@bothner.com>

	* AliasConstraint.java (followAliases):  New static helper method.

	* MethodProc.java (match(Object[])):  Removed method.

2002-07-25  Per Bothner  <per@bothner.com>

	* WrongArguments.java (checkArgCount): Split into two overloaded
	methods, so we can use it for a LambdaExp.

2002-07-02  Per Bothner  <per@bothner.com>

	* Values.java (canonicalize):  New method.

2002-05-06  Per Bothner  <per@bothner.com>

	* ValueStack.java (find(Object), find (Object,Object)):  Make public.

	* ValueStack.java (find (Object,Object)):  Fix typo.

2002-03-22  Ola Rinta-Koski  <ola@cyberell.com>

	* ValueStack.java (clear):  New method.

2002-03-18  Per Bothner  <per@bothner.com>

	* Environment.java (getPrevious):  New method.

	* Procedure.java:  No longer implements Printable.
	(print):  Remove method.
	(toString):  New method.

2002-03-02  Per Bothner  <per@bothner.com>

	* Makefile.am (SED_REFERENCES_SUBS):  Moved to Make-rules.

2002-02-15  Per Bothner  <per@bothner.com>

	* Makefile.am (java_sources):  Leave out CallContext.java.
	(EXTRA_DIST):  Leave out $(java_sources), but add CallContext.java.in.

2002-02-14  Per Bothner  <per@bothner.com>

	* CallContext.java.in (getOnlyInstance, setInstance):  New methods.
	(getInstance):  Use getOnlyInstance and setInstance/

2002-02-13  Per Bothner  <per@bothner.com>

	* CallContext.java:  Removed to CallContext.java.in.
	* CallContext.java.in:  Conditionalize on --with{,out}-java-references.
	If with references, using ThreadLocal (Java2 only).  This allows
	various simplifications at the (acceptable) cost when *not* using
	ThreadLocal we use a threadMap that might prevent some non-Future
	threads from being gc'd.
	(getInstance(Thread), setInstance, mustRemoveMarker, <init>s,
	defaultContext, getDefaultContext):  Remove.
	* Makefile.am:  Add sed stuff to build CallContext.java.
	* CpsProcedure.java (applyN):  Simplify using CallContext.getInstance.
	* Future.java (setCallContext):  Remove - no longer needed.
	(run):  No longer call setCallContext.
	(getFluids):  Update to use correct CallContext.getInstance.

	* SFormat.java (print):  Must handle Char explicitly, since Char
	no longer implements Printable.

2002-02-12  Per Bothner  <per@bothner.com>

	* CallContext.java:  Allow fluid bindings for any thread,
	not just Future.  Map Thread->CallContext.
	(threadMap):  New static field.
	(currentThread):  New field.
	(<init>):  New constructors.
	(defaultContext):  New field.
	(setMainContext):  New method - sets .defaultContext.
	(getInstanceForCurrentThread):  Renamed to getInstance.
	(getInstance):  Use threadMap.
	(fluidBindings, setFluids, resetFluids):  Moved from Future.
	(resetMarker):  New static field.
	(resetFluids):  Check for resetMarker.
	* Future.java (setCallContext):  Also set context's currentThread.
	(fluidBindings):  Moved to CallContext.java.
	(setFluids, resetFluids):  Deprecated - just call CallContext methods.
	(defaultContext, getDefaultContext):  Removed - now go via CallContext.
	(getFluids):  Just get current CallContexts's fludiBindings.
	(getContext):  Removed - no longer used.
	* MethodProc.java (match, applyN):  Use CallContext.getInstance.

	* CallContext.java (getEnvironment):  New method.
	* Environment.java (global):  Make non-private, for new method.

	* MethodProc.java (mostSpecific):  Return null if no argcount overlap.

2002-01-23  Per Bothner  <per@bothner.com>

	* Values.java (make):  Change return type to Values.

	* OutPort.java:  New extends gnu.lists.PrintConsumer.
	(write Boolean, writeFloat, writeDouble, writeInt, writeLong,
	beginDocument, endDocument, writeObject, ignoring):  Removed -
	use inherited methods instead.

2002-01-19  Per Bothner  <per@bothner.com>

	* CallContext.java (threadMap):  New static Hashtable field.
	(getInstanceForCurrentThread, getInstance, setInstance):
	New static methods.
	* CpsProcedure.java (applyN):  Use (or create) CallContext associated
	with this thread.

	* Future.java (context):  New CallContext field.
	(getCallContext, setCallContext):  New methods.

2002-01-07  Per Bothner  <per@bothner.com>

	* OutPort.java (beginDocument, endDocument):  New methods.

2001-12-24  Per Bothner  <per@bothner.com>

	* Values.java (make):  Fix call to getNext.

	* CallContext.java (getNextIntArg):  Two new methods.

2001-11-23  Per Bothner  <per@bothner.com>

	* WrongArguments.java:  Use 'name' not `name' in error messages.
	* WrongType.java:  Likewise.

2001-11-18  Per Bothner  <per@bothner.com>

	* CallContext.java (runUntilValue):  Two new methods.
	* CpsProcedure.java (applyV):  Use runUntilValue.

	* CallFrame.java:  Now also implements CpsMethodContainer;
	(apply):  New method.
	
	* Procedure.java (apply):  Check count!=0 if where==0;.

	* Values.java (make(TreeList,int,int)):  Fix logic - check size of
	specified range, not entire TreeList.

2001-11-12  Per Bothner  <per@bothner.com>

	* Future.java (getFluids):  New method.
	* FluidConstraint.java (find):  Use Future's new getFluids methods.

	* MethodProc.java (argTypes):  New field.
	(resolveParameterTypes):  New method.
	(getParameterType):  Invoke resolveParameterTypes.
	* CpsMethodProc.java (<init>): New overload sets argTypes.

2001-11-05  Per Bothner  <per@bothner.com>

	* Values.java (writeValues):  New static method.
	* CallContext.java (writeValues):  Use Values' new writeValues method.

2001-10-25  Per Bothner  <per@bothner.com>

	* Values.java (nextIndex, nextValue):  New static helper method
	called by code using a SeriesTarget.

2001-10-19  Per Bothner  <per@bothner.com>

	* Constraint.java, AliasConstraint.java, ConstantConstraint.java,
	FluidConstraint.java, IndirectConstraint.java, TrivialConstraint.java,
	UnboundConstraint.java, Binding.java (get):   Now takes extra
	defaultValue argument.
	* NameMap.java (getChecked):  Make final, not abstract,
	(get(String,Object)):  New abstract method.
	* Environment.java (get):   New method takes defaultValue argument.
	(isBound):  Make final.
	(getChecked):  Moved to NameMap and made final

	* Procedure.java, Procedure0.java, Procedure0or1.java, Procedure1.java,
	Procedure1or2.java, Procedure2.java, Procedure3.java, Procedure4.java,
	ProcedureN.java, CpsProcedure.java, MethodProc.java, Setter.java,
	Setter0.java, Setter1.java (apply* methods, set* methods):
	Now specify throws Throwable.
	* Values.java (call_with):  Likewise.
	* Future.java, ProcLocation.java, TtyInPort.java:  Catch Throwable.
	* IndirectConstraint.java (get. set):  Catch and wrap Throwable.
	* CallContext.java (runUntilDone):  New method, throw Throwable.
	(run):  Use runUntilDone.  Catch Throwable.
	* CpsProcedure.java (applyV):  Use new CallContext.runUntilDone method.

2001-10-11  Per Bothner  <per@bothner.com>

	* CallContext.java:  Remove 'final' attribute.

	* WrappedException.java (exception field):  Change type to Throwable.
	(<init>, getException):  Change to take/return Throwable.
	(getCause):  New method, as in JDK1.4.
	* WrongType.java (getMessage):  Use new getCause, update type.

2001-10-05  Per Bothner  <per@bothner.com>

	* SFormat.java:  Update for CharSequence -> CharSeq renaming.

	* OutPort.java (print(Object)):  Print null as "null".

2001-09-21  Per Bothner  <per@bothner.com>

	* SysInPort.java:  Removed.  Seems to do more harm than good.
	Specifically, interferes with echoing on Windows platform.
	* Makefile.am (java_sources):  Removed.
	* InPort.java (systemInPort):  Use a TtyInPort instead of a SysInPort.

	* Procedure.java (toString):  If no name, use class name instead.

2001-09-13  Per Bothner  <per@bothner.com>

	* CpsMethodContainer.java (apply):  Change return type to void.
	* CpsMethodProc.java (applyError):  New helper method.

2001-08-15  Per Bothner  <per@bothner.com>

	* OutPort.java (print(String)):  Handle null string.

	* WrongArguments.java (checkArgCount):  If procedures's getName() is
	null, using procedure's class's name instead.

2001-07-16  Per Bothner  <per@bothner.com>

	* CallContext.java (next):  New field.
	(getNextArg, lastArg):  New methods.
	(setArgs, setArgsN):  Initialize next to 0.

	* OutPort.java (beginGroup, endGroup):  If objectFormat is non-null,
	re-direct to its methods.
	* OutPort (endAttribute):  Removed method (no longer in Consumer).
	(endAttribute):  New method (to implement Consumer).

	* Values.java: Now extends TreeList, used to store the Values.
	(equals):  Only succeed if other Obejct is instanceof Values.

2001-06-19  Per Bothner  <per@bothner.com>

	* Binding.java (isBound):  Remove debugging junk.

	* Binding.java (make):  Use name when creating new Binding.

2001-06-17  Per Bothner  <per@bothner.com>

	* Binding.java:  Implement Externalizeable.
	(readExternal, writeExternal, readResolve):  New methods.
	(getProcedure):  New kludge to Lisp2 bindings.
	(defineValue, defineConstant. getFunctionValue, hasFunctionValue,
	setFunctionValue, removeFunctionValue, getEnvironment):  New methods.
	(toString):  Return name - needed since Lisp symbol is a Binding.
	(make):  New method.
	(trivialConstraint):  Removed field.
	* Constraint.java (setFunctionValue):  New method.
	* Binding2.java:  Removed class.
	* Makefile.am (java_JAVA):  Updated.

	* Binding.java (equals):  Replace by identity.
	* ConstantConstraint.java:  New class; extends Constraint.
	* Environment.java  (constantConstraint):  New field.

	* Environment.java (locked):  New field
	(isLocked, setLocked):  New methods.
	(getBinding):  Don't add new binding if locked (but try parent).
	(remove):  Throw exception if locked.
	* TrivialConstraint.java (getInstance):  New static methods.
	* UnboundConstraint.java (getInstance):  New static methods.
        (set):  Throw exception if environment is locked.

	* Procedure.java (removeProperty):  New method.

2001-06-03  Per Bothner  <per@bothner.com>

	* CpsProcedure.java (applyN):  Use checkArgCount method.

	* OutPort.java:  Major changes.
	(class BufferedPort):  removed, replaced by gnu.text.PrettyWriter.
	(startLogicalBlock, endLogicalBlock, writeBreak, writeSpaceLinear,
	writeBreakLinear, writeSpaceFill, writeBreakFill, setIndentation):
	Wrappers for PrettyWriter's features.
	(class Break):  Removed.
	(objectFormat):  Change type to FormatToConsumer.
	(print(Object)):  Use objectFormat appropriately.

	* OutPort.java (freshLine):  New method.
	* TtyInPort.java (lineStart):  Call freshLine, and clearBuffer.

	* CharArrayOutPort.java:  Tweaks because of use of PrettyWriter.

2001-05-16  Per Bothner  <per@bothner.com>

	* CpsProcedure.java (applyN, match):  Use CallContext's setArgsN.

	* Values.java (make(TreeList,int,int)):  Change count variable
	to be one less, and fix some off-by-one errors.

	* Values.java (make(TreeList,int,int)):  Shift argument to getNext
	to convert index to ipos.

2001-05-08  Per Bothner  <per@bothner.com>

	Change full-tailcalls calling convention so result is Consumer.
	* Values.java (make(Sequence), make(TreeList)):  New static methods.
	* ValueStack.java:  New class, extends TreeList.
	* Makefile.am (java_sources):  Update accordingly.
	* CallContext.java (value):  Removed field.
	(vstack, consumer):  New fields.
	(writeValue):  New method.
	* Procedure.java (apply(CallContext):  Use new writeValue method.
	* CpsProcedure.java (applyN):  Use applyV method.
	(applyV):  Get result from context's vstack.

2001-04-07  Otto, Marcus <Otto_Marcus@ph-ludwigsburg.de>

	* CpsProcedure.java (applyN):  Check argument count.

2001-03-08  Per Bothner  <per@bothner.com>

	* OutPort.java: Implement gnu.lists.Consumer.

	* SFormat.java (printReadable):  New helper function.
	(print):  Compensate since gnu.lsist classes no longer
	implement Printable.

2001-02-27  Per Bothner  <per@bothner.com>

	* CpsMethodContainer.java:  New interface.
	* CpsMethodProc.java:    New class, extends CpsProcedure.
	* Makefile.am:  Update accordingly.

2000-12-09  Per Bothner  <per@bothner.com>

	* Binding.java (UNBOUND):  New static field - a special value.
	(getFunctionValue):  Just call Constraint's getFunctionValue.
	* Constraint.java (getFunctionValue):  New method.
	* AliasConstraint.java (getFunctionValue):  New method.

2000-10-12  Per Bothner  <per@bothner.com>

	* CallContext.java (args):  Removed field - use valueX instead.
	(getArgs):  New method.
	* CallFrame.java (apply):  Use values field of CallContext, not args.
	* CpsProcedure.java (match, applyN):  Likewise.

	Various fixes for SRFI-17 compatibility (which has rhs value as
	last value, not first value to setter procedure).
	* HasSetter.java:  Update comments to match new conventions.
	* Procedure.java (setterKey):  New static field.
	(getSetter):  Look for "setter" property.
	(set1):  Rename args to match new convention.
	* Setter1.java (apply2):  Likewise.
	* NameMap.java (set1):  Switch args to match new convention.
	* ProcLocation.java (set):  Switch to match new setter convention.

	* Procedure.java (apply(CallContext)):  Optimize - avoid applyN.


2000-08-17  Per Bothner  <per@bothner.com>

	* CallStack.java:  Renamed to ...
	* CallContext.java:  Renamed from CallStack.java.
	(value1, value2, value3, value4, values, ivalue1, ivalue2): New fields.
	(count, where):  New fields.
	(getArgAsObject, setArgs, setArgsN):  New methods.
	* Makefile.am, Procedure.java, CallFrame.java:  Update accordingly.
	* MethodProc.java (applyV):  Takes CallContext, not Object.
	(getVarBuffer):  Removed - calls replaced by 'new CallContext()'.
	(match):  Return an int return code, not RuntimeException.
	(NO_MATCH, NO_MATCH_TOO_FEW_ARGS, NO_MATCH_TOO_MANY_ARGS,
	NO_MATCH_AMBIGUOUS, NO_MATCH_BAD_TYPE):  New match return codes.
	(matchFailAsException):  Convert int return code to RuntimeException.
	* CpsProcedure.java:  Update to match MethodProc changes.
	(getVarBuffer):  Removed method.
	
	* OutPort.java (numberFormat, objectFormat):  New fields.
	(print(primitive-type)):  If numberFormat is non-null, use it.
	(print(Object)):  If objectFormat is non-null, use it.

2000-06-17  Per Bothner  <per@bothner.com>

	* MethodProc.java:  Moved from gnu.expr.
	* CpsProcedure.java:  Now extends MethodProc.
	(getVarBuffer, match, applyV):  New methods.
	* Makefile.am:  Update accordingly.

	* Procedure.java (setProperty):  Return void, not old value.
	(setProperty(Object[].Object,Object):  New static method.
	(nameKey):  Change to plain "name".

2000-06-09  Per Bothner  <per@bothner.com>

	* Environment.java (defineValue):  Replace constraint.

	* Procedure.java (properties):  New field.
	(getProperty, setProperty):  New methods.
	(sym_name):  Removed field.  Instead use a magic property.

	* Values.java (readResolve):  Change return type to Object.

2000-05-28  Per Bothner  <per@bothner.com>

	* CharArrayInPort.java:  Moved from gnu.text.
	* Makefile.am (java_JAVA):  Update accordingty.

	* Procedure.java:  Remove non-private methods.
	(noArgs)  Remove.
	(sym_name):  Make private.
	* ProcedureN.java (apply0):  Use Values.noArgs, not Procedure.noArgs.
	* ApplyMethodProc.java (apply0Default):  Likewise.
	* Environment.java (remove):  Use getName instead of sym_name. 

2000-05-09  Per Bothner  <per@bothner.com>

	* Environment.java (defineValue, getFunction, putFunction):  New.
	(define_global):  Use defineValue rather than define.

	* Values.java:  Make implement java.io.Externalizable.

2000-04-21  Per Bothner  <per@bothner.com>

	* UnboundConstraint.java (get):  Check parent environment.

2000-04-17  Per Bothner  <per@bothner.com>

	* Procedure.java (getSetter):  Tweak exception message.

2000-04-13  Per Bothner  <per@bothner.com>

	* Location.java (isBound):  New method.
	* AliasConstraint.java (define):  New method.
	(get, set):  Generalize to reference to arbitrary Location.
	(isBound):  New method.
	* IndirectConstraint.java (define):  New method.

	* Values.java (noArgs):  Make final.
	* Procedure.java (noArgs):  Make final.

2000-03-12  Per Bothner  <per@bothner.com>

	* BindingEnumeration.java:  New class, implements Enumerations.
	* Makefile.am, Makefile.in (java_JAVA):  Added BindingEnumeration.java.
	* Environment.java (table, log2Size):  Make non-private.
	(enumerateBindings, enumerateAllBindings):  New methods.

	* Binding.java (getProcedure):  Get final.
	* Binding2.java (getProcedure):  New method.

	* UnboundSymbol.java: New constructor.

2000-02-27  Per Bothner  <per@bothner.com>

	Various tweaks for better javadoc processing.
	* overview.html:  Renamed to package.html.

	* Named.java:  Changed from class to interface.
	* Procedure.java:  Now implements rather than extends Named.
	* Procedure2.java:  Use getName() rather than name().

2000-02-19  Per Bothner  <per@bothner.com>

	* SysInPort.java (fill):  Change parameters.
	* TtyInPort.java (fill):  Change parameters.

2000-02-11  Per Bothner  <per@bothner.com>

	* ApplyMethodContainer.java:  New interface.
	* ApplyMethodProc.java:  New class;  extends ProcedureN.

	* Binding.java (getFunctionValue):  Use AliasConstraint and Binding2.
	* Binding2.java:  New class; extends Binding.
	* AliasConstraint.java:  New class; extends Constraint.
	* Environment.java (defineFunction):  Two new static methods.
	* Makefile.am, Makefile.in (java_JAVA):  Add new classes.

	* Values.java (noArgs):  New static field.
	(empty):  Use noArgs.
	* Procedure.java (nArgs):  Make protected, instead of public.  (Thus
	it is not found by gnu.kawa.reflect.ClassMemberConstraint.defineAll.)

2000-02-01  Per Bothner  <per@bothner.com>

	* Binding.java (getConstraint, getFunctionValue):  New methods.

2000-01-23  Per Bothner  <per@bothner.com>

	* Binding.java (trivialConstraint):  New static field.
	(chain):  Removed field.
	(hashDELETED):  New static,
	(hashSearch, hashSearch, hashGet, hashSet, hashDelete,
	hashInsertAll):  New static utility methods.
	* Environment.java:  Change to manage hash index collisions using
	"double hashing" and "open addressing" rather than "chaining".
	(lookup):  Use Binding.hashSearch.
	(remove):  Use Binding.hashDelete.
	(addBinding(name, value)):  New method.
	* UnboundConstraint.java (set):  Handle null environment.

1999-12-24  Per Bothner  <per@bothner.com>

	* Environment.java (put):  If was unbound, returns old value as null.

1999-12-05  Per Bothner  <per@bothner.com>

	* OutPort.java (class BufferedPort):  Now extends Writer instead of
	FilterWriter.  (Walter C. Pelissero <wcp@lpds.sublink.org> reported
	that the old code crashed for some FilterWriter implementations.)

1999-11-03  Per Bothner  <per@bothner.com>

	* OutPort.java (flushLocal):  If out is null, expand buffer.
	(flush, close):  Don't flush if out == null.
	* CharArrayOutPort.java:  New class.
	* Makefile.am, Makefile.in (java_JAVA):  Add CharArrayOutPort.java.

1999-09-14  Per Bothner  <per@bothner.com>

	* Values.java (values):  Renamed to getValues.
	(values$V):  New method.

1999-09-08  Per Bothner  <per@bothner.com>

	* SysInPort.java (fill):  Fix logic error, whihc broke transcripts.

1999-08-27  Per Bothner  <per@bothner.com>

	* Environment.java (num_binding):  Make non-static.
	Reported by Tony White <twhite@texar.com>.

1999-08-26  Per Bothner  <per@bothner.com>

	* WrappedException.java:  New class; inherits from RuntimeException.
	* WrongType.java:  Change to inheirt from WrappedException.
	* Makefile.am, Makefile.in (java_JAVA):  Added WrappedException.java.

1999-08-18  Per Bothner  <per@bothner.com>

	* Named.java (name):  Always call getName().
	* Procedure.java (print):  Call getName() instead of deprecated name().

1999-08-06  Per Bothner  <per@bothner.com>

	* Constraint.java (isBound):  New method.
	(getValue, setValue, getConstraint, setConstraint):  New methods.
	* Binding.java (isBound):  Use Constraint.isBound.
	* Environment.java (unboundConstraint):  Generalize type to Contraint.
	* TrivialConstraint.java (isBound, getEnvironment):  New methods.
	* UnboundConstraint.java (isBound, getEnvironment):  New methods.

	* WrongType.java:  Major re-write for more informative messages.

1999-07-16  Per Bothner  <per@bothner.com>

	* Future.java (action):  Change from Procedure0 to Procedure.

1999-06-30  Per Bothner  <per@bothner.com>

	* Binding.java (time_stamp):  Remove no-longer needed field.
	* OutPort.java (BufferedPort):  New non-public FilterWriter class.
	(class OutPort):  Re-write to use BufferedPort.
	(Break):  New non-public class - not yet used. 

Wed Apr  7 17:40:40 1999  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* FluidBinding.java:  New class.
	* FluidConstraint.java:  new Constraint class.
	* Makefile.am (java_JAVA), Makefile.in:  Update for new classes.
	* Future.java (<init>):  Use parent Environment;  don't create new one.
	(setFluids, resetFluids, getContext):  New methods.
	* Binding.java (<init>):  New constructor.
	(make):  Use it.
	(hashCode):  Do not depend on the Binding's value.
	* Environment.java:  Rmeove time_stapt field and its uses.

Sat Mar 20 10:58:53 1999  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* Constraint.java:  New abstract class.
	* TrivialConstraint.java:  New Constraint sub-class.
	* UnboundConstraint.java:  New Constraint sub-class.
	* IndirectConstraint.java:  New Constraint sub-class.
	* Makefile.am, Makefile.in (java_JAVA):  Add new classes.
	* Binding.java (constraint):  New field. Re-write to use Constraints.
	Add methods to implement JDK1.2 java.util.Map.Entry interface.
	* Environment.java:  Misc changes for Constraint model.
	* NameMap.java (get):  Rename to getChecked.
	(get(Object)):  New, for compatibility with JDK1.2 collections.
	
Sun Mar  7 16:45:08 1999  Per Bothner  <bothner@Magnus.Cygnus.COM>

 	* CallStack.java:  New class.
	* CpsProcedure.java:  New class (extends ProcedureN).
	* CallFrame.java:  New class (extends CpsProcedure).
	* Makefile.am (java_JAVA), Makefile.in:  Add new source files.
	* Procedure.java (noArgs):  New static field.
	(apply(CallStack)):  New overloading method.
	* ProcedureN.java (apply0):  Use Procedure.noArgs.
	* Values.java (empty):  Change to use Procedure.noArgs.

Thu Nov 26 12:38:53 1998  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* Makefile.am (java_JAVA), Makefile.in:  Add NameMap.java.

Sun Nov 15 21:26:14 1998  Per Bothner  <bothner@cygnus.com>

	* NameMap.java:  New Procedure1 sub-class.
	* Environment.java:  Extend NameMap.
	* Environment.java:  Use System.identityHashCode, instead of
	String.hashCode - for faster hashing.

1998-08-28  Per Bothner  <bothner@Magnus.Cygnus.COM>

	* Binding.java (make):  New static method (called from compiled code).

Fri Jul 24 16:25:47 1998  Per Bothner  <bothner@cygnus.com>

	* ProcLocation.java:  New class.
	* Makefile.am (java_JAVA):  Added ProcLocation.java.

Fri Jul 24 16:08:22 1998  Lynn Quam <quam@ai.sri.com>

	* Environment.java (put_global):  New method.

Wed Jul 22 21:42:42 1998  Per Bothner  <bothner@cygnus.com>

	New directory.  Files mostly moved from ../../kawa/lang.

	* Location:  Now inherit from Procedure0.
	(get, set):  Make abstract, rather than final.
	(value):  Remove.  (Moved to Binding sub-class.)
	(apply0, set0):  New methods defined in terms of get, set.
	* Binding (value):  New field (moved from base class).
	(get, set):  New overriding methods.
