Mon Sep 16 11:04:28 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* configure.in (VERSION):  Set to 1.0.  (Yeah!)
	* Makefile.{am,in}:  Add rule to make kawa.html and include it in dist.
	* Makefile.{am,in} (EXTRA_DIST):  Add license.terms and scm2java.html.
	* scm2java.html:  Warn that it is not current, and fix some typos.

	* kawa/standard/{floor,ceiling,truncate,round}.java:  Handle IntNum.
	* kawa/standard/{lcm,max,min,modulo,quotient,remainder}.java:  New.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}}:  Update.

Sun Sep 15 11:07:48 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* **/Makefile.{am,in}: (javadir):  Use $(subdir)
	{DEP_,}DISTFILES):  Do not include DATA (i.e. *.class).
	Replace generated EXTRA_DIST with ditto SOURCES.
	* kawa/Shell.java:  Less verbose error messages.
	* kawa/standard/{gcd,string2number,call_with_output_string}.java:  New.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}}:  Update.
	* CompileFile.java (read):  Take Environment, not Interpreter.
	Add overloaded method that uses an InPort.
	* kawa/lang/Environment.java (getInterpreter):  New method.
	* kawa/lang/InPort.java (throws clauses): ReadError -> SyntaxError.
	* kawa/lang/InPort (readNumber -> readSchemeNumber): Make more general.
	* kawa/lang/LambdaExp.java (fileFunctionName):  New static field.
	* kawa/lang/Named.java:  Don't implement no-longer-existing Nameable.
	* kawa/lang/ReadError.java:  Change so getMessage gets raw message,
	* kawa/lang/SetExp.java (compile):  Do maybe_compile_checkcast.
	* kawa/lang/SyntaxError.java:  Removed.
	* kawa/lang/UnboundSymbol.java: Call super so getMessage works.
	
Fri Sep 13 14:27:31 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* configure{.in,}:  Update to version 0.5.
	* kawac.java (main):  Allow infile to follow switches.
	* kawa.texi:  Use VERSION macro.
	* mdate-sh, version.texi:  New files, needed for VERSION macro.

	* kawa/standard/{ceiling,exact2inexact,floor,inexact2exact,
	round,truncate}.java:  More standard Scheme functions.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}}:  Update.
	* kawa/lang/Continuation.java:  Improve error message.
	* kawa/lang/Interpreter.java (read):  Removed.
	* {,kawa/{,lang/,math/,standard/,lib/}}Makefile.{am,in}: Fix
	javac classpath so both build and source directories are searched.
	Do not change directory (which confuses make and is not needed).
	
Fri Sep 13 08:21:33 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/standard/call_with_input_string.javaL  New class.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}}:  Update.
	* kawac.java, kawa/Shell.java:  Don't use old GenericError.message.

	* kawa.java:  Re-write to do options processing.
	* kawa/Shell.java:  Remove constructor.  Make run method static.
	(runString, runFile):  New static methods.
	* kawa.texi:  New documentation file.
	* texinfo.tex:  New support file, needed for kawa.texi.
	* Makefile.{am,in}:  Update for kawa.texi.

Thu Sep 12 16:22:47 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Literal.java:  Make flags public.
	(emit):  Do flags|=ALLOCATED|INITIALIZED when done, so
	class-specific code does not have to.
	* kawa/lang/{AnyPat,Char,EqualPat,ListRepeatPat,Literal,Pair,PairPat,
	Symbol,SyntaxRule,SyntaxRules,Vector}.java: Remove now-redundant
	setting of Literal.flags.
	* kawa/lang/InPort.java (readNumber):  Only recognize float if decimal.
	Return new kawa.math.IntNum and kawa.math.DFloNum object.
	* kawa/lang/Environment.java (frames, lookup):  Removed - unsued.
	* kawa/lang/Interpreter.java:  Remove unused eval functions.
	Define quote and lambda in StandardInterpreter, not here.
	* kawa/lang/Procedure1or2.java:  Add default constructor.
	* kawa/{,lang,standard,lib}/Makefile.{am,in}:  Add EXTRA_DIST rule.
	Use $*.java instead of possibly-less-portable $(<F).
	* kawa/Makefile.{am,in} (SUBDIRS):  Add math sub-directory.
	* kawa/configure{.in,} (AC_OUTPUT):  Add kawa/math/Makefile.

	* kawa/standard/*.java:  Update to use new Numeric classes.
	* kawa/standard/{acos,asin,atan,cos,denominator,even_p,exact_p,
	exp,expt,inexact_p,log,number2string,odd_p,rational_p,sin,sqrt,
	tan}.java:   New classes for number functions.
	* kawa/standard/Makefile.{am,in} (OBJ):  Add new classes.

Sun Sep  8 21:23:33 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* configure.in (VERSION):  Set to 0.4.
	* {,kawa/,kawa/lang/,kawa/standard/}Makefile.{am,in} (JAVA):
	Fix -classpath argument.
	* kawa/lang/GenericError.java:  Fix to pass message to super.
	* kawa/lang/InPort.java (skipWhitespaceAndComments, readList):
	Handle unexpected EOF.
	* kawa/lang/LambdaExp.java (eval):  Mangle class name.
	* kawa/lang/Compilation.java (mangleClassName):  New function.
	(generateClassName):  Use it.
	* kawa/lang/Makefile.{am,in}:  Add Promise.class.
	* kawa/lang/Promise.java:  New class for Scheme promise objects.
	* kawa/lang/SyntaxRule.java (translate_template):  Don't
	rename identifiers inside quote or quasiquote.
	* kawa/lang/SyntaxRules.java (init):  Mark linenumber info.
	* kawa/standard/cond.java:  Removed.  (Replaced by ../lib/cond.scm.)
	* kawa/standard/Makefile.{am,in}:  Add new classes.  Remove cond.
	* kawa/standard/StandardInterpreter.java:
	Use macro version of cond and let from ../lib.
	Add new functions and macros.
	* kawa/standard/cxr.java:  Fix bugs that trashed fields.
	* kawa/standard/{force,make_promise}.java:  New Procedure1 classes.
	* kawa/standard/syntax_error.java:  New syntax.

Sat Sep  7 12:11:18 1996  Per Bothner  <bothner@deneb.cygnus.com>

	Mostly fixes to improve stack traces.
	* kawa/lang/Compilation.java (source_filename):  New field.
	(constructors):  Set source_filename from LambdaExp filename.
	(addClass):  Set ClassType sourcefile from source_filename.
	* kawa/lang/CompileFile.java (read):  Set filename of LambdaExp.
	* kawa/lang/{Expression,PairWithPosition}.java:  Make methods public.
	* kawa/lang/Expression.java (compile_with_linenumber):  New method.
	* kawa/lang/{BeginExp,IfExp,LetExp,compilefunc}.java (compile):
	Use compile_with_linenumber to emit line numbers where appropriate.
	* kawa/lang/LambdaExp.java (eval):  Set classname from function name.
	Set function name using named.setName.
	* kawa/lang/Literal.java (constructor):  Set default type to Object.
	(compile):  Do a cast if needed.
	* kawa/lang/compilefunc.java (compile):  Do not set name
	(apply2):  Remove.  No longer extend Procedure2.
	* kawa/standard/define.java (rewrite):  Set line number info.
	* kawa/Shell.java (run):  Do printStackTrace on exception.
	
	* kawa/lang/LambdaExp:  Always compile.  Remove doCompile field.
	* kawa/lang/LambdaProcedure.java:  Remove.  Never used.
	* kawa/lang/Makefile.{am,in}:  Remove LambdaProcedure.class.

	Implement quasi-quoatation (backquote):
	* kawa/standard/vector_append.java:  New ProcedureN.
	* kawa/standard/{append,cons,vector}.java:  Allocate a new Procedure
	of this type.  This is so quasiquote can access these standard
	functions by value (not name).  Also implement Compilable.
	* kawa/standard/quasiquote.java:  New primitive syntax.
	* kawa/standard/StandardInterpreter.java:  Add quasiquote,
	vector-append.  Change cons, append, vector to use static procs.
	Remove non-working compile-func.
	* kawa/standard/Makefile.{am,in}:  Add quasiquote, vector_append.

Thu Sep  5 00:00:13 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/standard/{abs,append,apply,char_ci_greater_equal_p,
	char_ci_greater_p,char_ci_less_equal_p,char_ci_less_p,char_equal_p,
	char_greater_equal_p,char_greater_p,char_less_equal_p,char_less_p,
	char_ready_p,define,equal_oper,greater_oper,greaterequal_oper,
	less_oper,lessequal_oper,list_ref,list_tail,load,make_string,
	make_vector,minus_oper,multiply_oper,negative_p,newline,not,
	plus_oper,positive_p,read,reverse,setcar_b,setcdr_b,string,
	string2symbol,string_length,string_ref,string_set_b,symbol2string,
	vector_length,writechar,zero_p}.java:  Update to use Named.name().

	* kawa/standard/{car,cdr}.java:  Named.name is now a method.
	* kawa/standard/cxr.java:  New class.  Generalization of c[ad]*r.
	* kawa/standard/caaaar,caaadr,caaar,caadar,caaddr,caadr,caar,cadaar,
	cadadr,cadar,caddar,cadddr,caddr,cadr,cdaaar,cdaadr,cdaar,cdadar,
	cdaddr,cdadr,cdar,cddaar,cddadr,cddar,cdddar,cddddr,cdddr,cddr}.java:
	Removed - superseded by cxr.java.
	* kawa/standard/{StandardInterpreter,Makefile.{am,in}}:  Update.

Wed Sep  4 13:43:32 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/CompileFile.java (compile_to_files):  New function,
	to compile to one or more source files.

	* kawa/lang/SchemeLoader.java:  Zip archive support moved
	to codegen/ZipArchive.java.
	* kawa/lang/compilefunc.java:  Maybe compile to ModuleBody.

	* kawa/lang/{SyntaxRuleSyntaxRules}.java:  New classes, to support
	define-syntax/syntax-rules (R5RS hygienic top-level macros).

	* kawa/lang/AutoloadProcedure.java (name):  Replace by super.name().
	(load) Support autoloading an entire module.
	* kawa/lang/AutoloadSyntax.java:  New class, to autoload macros.

	* kawa/lang/{Nameable,Named}.java:  Store a symbol, not a String.
	(name):  Change from String field to Symbol-returning method.
	* kawa/lang/{Procedure,Procedure0,Procedure1,Procedure2,Procedure3,
	Procedure4,Procedure0or1,Procedure1or2,Interpreter,LambdaProcedure,
	Syntax,compilefunc}.java:  Update to use Named.name().
	* kawa/lang/Compilation.java (nameField):  Update name and Type.
	* kawa/lang/ProcedureN.java:  Add Symbol-taking constructor.
	* kawa/lang/LambdaExp.java (name):  Change from String to Symbol.
	* kawa/lang/LambdaProcedure.java (constructor):  Name is now Symbol.
	* kawa/lang/compilefunc.java (compile):  Name is now a Symbol.

	* kawa/lang/Syntax.java (print):  New method to implement Printable.
	* kawa/lang/UnboundSymbol.java:  Store a Symbol rather than a String.
	* kawa/lang/ReferenceExp.java (eval):  Update for UnboundSymbol fix.
	* kawa/lang/LambdaExp.java (is_module_body):  New field,
	(isModuleBody,setModuleBody):  New methods.

	* kawa/lang/Procedure.java:  No longer implement Executable.
	(execute):  Remove obsolete interface.

	* kawa/lang/Interpreter.java (quasiquote,unquote, unquotesplicing):
	Remove unused fields.
	* kawa/lang/Interpreter.java (resolve):  Add extra argument
	so caller can do current_decls.get and test for renamed global.

	* kawa/lang/ReadError.java:  Include line number info in error message.
	* kawa/lang/Interpreter.java (rewrite_car, rewrite_pair_with_position,
	rewrite_pair):  New functions to rewrite with line numbers.
	(syntaxError):  Report filename and line/column position.
	* kawa/lang/Expression.java (filename, position):  New fields.
	(setFile, setLine, getFile, setFule, getColumn):  New methods.

	* kawa/lang/Pattern.java (match):  New abstract calling interface.
	(varCount):  New abstract method.
	* kawa/lang/{EqualPat,ListPat,VarListPat}.java (match):
	Change to match new interface.  Implement varCount.
	* kawa/lang/EqualPat.java (makeLiteral, emit):  Implement Compilable.
	* kawa/lang/{AnyPat,ListRepeatPat,PairPat).java:  New Pattern classes.

	* kawa/lang/ModuleBody.java:  New sub-class of Procedure0.
	* kawa/lang/ErrorExp.java (compile):  Fix reversed test.

	* kawa/lang/InPort.java:  Keep track of line and column position.
	Supports marks and reset.
	(readQuote):  Generalize with extra argument.
	(readQuasiQuote):  Superseded by generalized readQuote.

	* kawa/lang/Literal.java (emitArray):  New method.
	(emit):  Support (Object[]), (Symbol[]), (String) type literals.
	(check_cycle):  New method.
	* kawa/lang/{WrongArguments,WrongType}.java:  Add Symbol-taking init.
	* kawa/lang/IfExp.java (eval,compile): Missing else returns voidObject.
	* kawa/lang/print.java (print):  Handle (int[]).

	* kawa/lang/Compilation (emitLiteral):  New method.
	(scmPatternType,symbolArrayType,scmNamedType,nameField):  New statics.
	(findLiteral):  Handle Object[] values.
	(findNamedClass, generateClassName, constructor):  New methods.
	* kawa/lang/LambdaExp.java (compile):  Use new generateClassName.
	(eval):  Use more natural class names.
	* kawa/lang/Vector.java (findLiteral):
	Simplify by using new support for emitting Object[] values.
	* kawa/lang/{Pair,Vector}.java (emit):  Use new emitLiteral method.
	* kawa/lang/PairWithPosition.java:  New class extends Pair.
	
	* kawa/lang/{Executable,Syntaxable,QuasiQuote,Unquote,
	UnquoteSplicing}.java:  Remove obsolete classes.
	* kawa/lang/Makefile.{am,in}:  Update for new and removed classes.

	* kawa/standard/{begin,cond,define,ifp,let,letrec,letstar,set_b}.java:
	Remove print method.  No longer needed.
	* kawa/standard/{apply,boolean_p,procedure_p}.java:
	Remove non-default constructor.  Name binding handled by autoload.
	* kawa/standard/{ass,mem,readchar,write}.java: Use new Named.name().
	* kawa/standard/define.java (rewrite):  Call setName with Symbol.
	* kawa/standard/define_syntax.java:  New class - hygienic macros.

	* kawa/standard/StandardInterpreter.java (define_syntax): New function.
	(constructor):  Add new macros.  Some cleanup here and there.
	* kawa/standard/load.java (loadClassFile):  New function.
	(apply1):  Also support loading from a .class file.
	* kawa/standard/{unless,when}.java:  Replaced by lib.when_unless.
	* kawa/standard/Makefile.{am,in}:  Update.  Fix SUFFIXES.

	* kawa/lib:  New directory.
	* kawa/Makefile.{am,in}:  Add lib to SUBDIRS.

	* configure{.in,} (AC_OUTPUT):  Add kawa/lib/Makefile.
	* kawac.java:  New application class.
	* Makefile.{am,in}:  Build kawac.class.  Fix SUFFIXES.

Tue Aug 20 13:59:36 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Values.java:  New class.
	* kawa/standard/{values,call_with_values}.java:  New functions.
	* kawa/standard/StandardInterpreter.java:  Define new functions.
	* kawa/{lang,standard}/Makefile.{am,in}:  Add new classes.

	* kawa/standard/and_or.java:  Do setSimple on temp if top-level.


Sat Jul 20 11:25:05 1996  Per Bothner  <bothner@deneb.cygnus.com>

	Make kawa-0.3 release.

	* configure.in, configure (AC_INIT):  Look for kawa.java now.
	* kawa/Shell.java:  Re-structure.

	* kawa/standard/{and,or}.java:  Remove old-style implementations.
	* kawa/standard/{and_or,with_output_to_file}.java:  New classes.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}:  Update.
	
	* kawa/standard/{let,letstar,letrec,set_b}.java (rewrite):
	Call Declaration.noteValue.
	* kawa/standard/minus_oper.java (applyN):  Fix sign/logic error.
	
	* kawa/lang/Interpreter.java (apply):  Remove obsolete method.
	(lookup_global):  Fix typeo.

	Implement tail-recursion-elimination (and fix more bugs).
	* kawa/lang/Expression.java (compile):  Changed to take flag mask
	instead of boolean. Added IGNORED and LAST.
	* kawa/lang/{ApplyExp,BeginExp,ErrorExp,IfExp,LambdaExp,LetExp,
	QuoteExp,ReferenceExp,SetExp}.java:  Update definitions and
	uses of compile methods accordingly.
	* kawa/lang/IfExp.java (compile): Only goto end_label if reachableHere.
	* kawa/lang/ApplyExp.java (compile):  Check for and optimize
	tail-recursion.
	* kawa/lang/LambdaExp.java (argsArray): New, replaces local array_args.
	* kawa/lang/LambdaExp.java:  Call noteValue appropriately,
	* kawa/lang/LambdaExp.java (getArgs):  New method.
	* kawa/lang/LetExp.java (print):  Deal with artificial Variables.
	* kawa/lang/QuoteExp.java (undefined_exp):  New static field.

	* kawa/lang/Declaration.java (value):  New field.
	(noteValue):  New method.

	* kawa/lang/compilefunc.java (compile):  Set start_label.
	
	* kawa/lang/Compilation.java:  Make int1Args a field, not a local.

	* kawa/standard/exit.java:  Take optional status.  Call System.exit.
	* kawa/lang/Exit.java:  Removed.  No longer needed.
	* kawa/lang/{Makefile.am,Makefile.in}  Remove Exit.class.
	
	* kawa/lang/ScopeExp.java (assign_space):  If outside any lambda,
	make all variables non-simple (and allocate a heapFrame).
	
	* kawa/lang/Named.java:  Don't make pointless copy of name.
	* kawa/lang/Procedure.java:  Deafult is name is now null.
	* kawa/lang/Procedure0or1.java:  Add default constructor.
	* kawa/lang/AutoloadProcedure.java (load):  If we have a name but
	the loaded Procedure has none, use the former for the latter.
	* kawa/standard/{plus_oper,minus_oper,multiply_oper,divide_oper).java:
	Remove constructor.  Naming is handled by autoloader.

Sat Jul 20 17:40:46 1996  Anthony Green  <green@csk3.cygnus.com>

	* */Makefile.am, */Makefile.in: srcdir is no longer 
	forced to be at the same level as build dir.

Fri Jul 19 14:55:52 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/standard/{call_with_input_file,call_with_output_file,
	char_ready_p,current_input_port,current_output_port,
	with_input_from_file}.java:  New functions.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}:  Update.

Thu Jul 18 15:04:46 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Literal.java (emit):  Fix StringBuffer init invocation.
	* kawa/lang/Vector.java:  Add makeLiteral, print; implement Compilable.

	* kawa/standard/string{,_ci}_{greater,less}thanequal_p.java:
	Rename to avoid the redundant "than".
	* kawa/standard/{string_fill_b,vector_fill_b,vector_set_b}.java:
	Return Interpreter.voidObject.
	* kawa/standard/string_append.java:  Allow 0 arguments.

	* kawa/standard/{setcar_b,setcar_b).java:  Return voidObject.
	* kawa/standard/{car,car).java:  Fix exception message.
	* kawa/standard/list_ref.java:  Fix typo.
	
	* kawa/{char2integer,char_alphabetic_p,char_downcase,
	char_lower_case_p,char_numeric_p,char_upcase,char_upper_case_p,
	char_whitespace_p,integer2char}.java:  Add remaining char functions.
	* kawa/standard/reverse.java:  Add last missing list function.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}:  Update.

	* kawa/lang/InPort.java:  Fix mis-reading of ,@ (unquote-splicing).
	(readUnquoteSplicing,readUnquote):  Inline single calls, and remove.

	* kawa/lang/Symbol.java (print):  Slashify if printReadable.
	* kawa/lang/Char.java:  Add makeLiteral, print;  implement Compilable.
	* kawa/lang/CompileFile.jave:  Don't add redundant .zip extension.

Wed Jul 17 20:34:37 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/Shell.java:  Don't exit if eval returns #<eof>.

	* kawa/lang/{InPort,OutPort}:  Add name field.
	Add print methods and implement Printable.

	* kawa/lang/Compilable.java (makeLiteral):  New method.
	* kawa/lang/{Pair,Symbol}.java:  Implement makeLiteral.
	* kawa/lang/Compilation.java:  Use makeLiteral if value is Compilable.
	* kawa/lang/Interpreter.java (eofObject):  Change print-name.

Wed Jul 17 19:34:00 1996  R. Alexander Milowski <sgml@winternet.com>

	* kawa/standard/{char_ci_equal_p,char_ci_less_p,char_ci_less_equal_p,
	char_ci_greater_p,char_ci_greater_equal_p,
	input_port_p,output_port_p,open_input_file,open_output_file,
	close_input_file,close_output_file}.java:  New Scheme procedures.
	* kawa/standard/{StandardInterpreter.java,Makefile.{am,in}:  Update.

Tue Jul 16 23:23:16 1996  Per Bothner  <bothner@deneb.cygnus.com>

	Lots of fixes and improvements, mostly compiler-related.
	* kawa/lang/Compilable.java:  New interface.
	* kawa/lang/Pair.java:  Implement emit method; Compilable interface.
	* kawa/lang/Symbol.java:  Likewise.
	* LetExp.java (eval):  Update for space_needed->frameSize; heapFrame.
	(compile):  Don't do redundant add_var's.
	* SchemeLoader.java:  Support loading classes form a ZipArchive.
	* kawa/lang/Interpreter.java (lookup_global, define_global):
	Now take Symbol rather than String.
	(resolve):  Do decl.setSimple(false) also for top-level lexical defs.
	* kawa/lang/LambdaExp.java:  Move heapFrame and heapSize to ...
	* kawa/lang/ScopeExp.java:  ... here.  Rename heapSize -> frameSize.
	(assign_space):  Fix for non-function lexical scope.
	(space_needed):  Removed, subsumed by frameSize.
	* kawa/lang/LambdaExp.java (compile_setLiterals):  New method.
	* kawa/lang Compilation.java:  New constructor interface.
	Many new pre-defined ClassTypes, Methods, Fields.
	(findLiteral):  New recursive function.
	* CompileFile.java:  New class - read and compile an entire file.
	* kawa/lang/Declaration.java (getValue, getFrame):  Handle heapFrame.
	* kawa/lang/Literal.java:  Now generates code to initialize literals
	when compiling to a file.  Handles circular data.
	* kawa/lang/ReferenceExp.java (compile, compile_load):  Various fixes.
	* kawa/lang/SetExp.java (compile):  Push symbol rather than string.
	* kawa/lang/compilefunc.java:  Lots of re-arranging and fixes
	for file compilation, lexical outer-function scopes, etc.
	Move setLiterals-related code to LambdaExp.compile_setLiterals.
	* kawa/standard/load.java:  Can now load from compiled .zip file
	as well as from a .scm source file.
	* kawa/lang/{Makefile.am,Makefile.in}:  Add new classes.

Tue Jul 16 19:09:36 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/AutoloadProcedure.java:  New class, for autoloading.
	* kawa/standard/StandardInterpreter.java (define_proc):  New method.
	(<init>):  Use new autoloading define_proc extensively.
	* Makefile.{am,in}:  Add {newline,map,callcc}.class.

	* kawa/lang/{Continuation,CalledContinuation}>java:  New classes.
	* kawa/standard/callcc.java: Implement limited call/cc.

	* kawa/lang/List.java (toVector):  New method.
	* kawa/lang/InPort.java (readSchemeObject):  Handle vector syntax.
	* kawa/standard/list2vector.java (apply1):  Use List.toVector.
	* kawa/standard/list_tail.java (listTail):  New method.
	* kawa/standard/{list_tail,list_ref}:  Use list_tail.listTail.
	
	* kawa/standard/{minus_oper,multiply_oper,divide_oper,equal_oper,
	greater_oper,greaterequal_oper,less_oper,lessequal_oper}.java:
	Re-write to extend ProcedureN, rather than Named.
	* kawa/standard/map.java:  New class, implements map and for-each.
	* kawa/standard/newline.java:  New class, implements newline function.
	* kawa/lang/print.java (print):  Handle Object[].
	* kawa/lang/Expression.java (compile):  Make abstract.
	* kawa/lang/ErrorExp.java (compile):  Added.

Tue Jul 16 19:05:50 1996  R. Alexander Milowski <sgml@winternet.com>

	* kawa/lang/InPort.java (readCharacter):  Recognize letters, e.g. #\A.
	
Thu Jul 11 15:10:14 1996  Per Bothner  <bothner@deneb.cygnus.com>

	Major re-write.  All functions are now byte-compiled,
	using the codegen package.

	* kawa/lang/{Compilation,CompiledProc,Literal,SchemeLoader,
	compilefunc,loadcompiled}.java:  New classes - compilation-related.
	* Makefile.{am,in} (OBJ):  Add new classes.

	* kawa/lang/{Expression,ApplyExp,BeginExp,IfExp,LambdaExp,LetExp,
	QuoteExp,ReferenceExp,SetExp}.java: Add compile method.
	* kawa/lang/Declaration.java (getFrame, getValue, setValue):  New.
	* kawa/lang/Interpreter.java(lookup_global,define_global,resolve): New.
	* kawa/lang/LambdaExp/(staticLink, heapFrame):  New variables.
	(eval):  Actually compile to get new bytecode.
	* kawa/lang/List.java:  New makeList methods.
	* kawa/lang/Procedure{,0,2,3,4}.java:  Add default initializer.
	* kawa/lang/ReferenceExp.java (compile_load):  New method.
	* kawa/lang/ScopeExp.java:  A ScopeExp now contains Scope, which
	includes all the Variables/Declarations as a linked list.
	(num_decls, decls)  Removed.
 	(firstVar, currentLambda):  New methods.
	* kawa/lang/SetExp.java (isDefining, setDefining, compile_store):  New.

	* kawa/standard/Makefile.{am,in}: Fix typos (bogus 'eq' in string ops).
	* kawa/standard/let.java:  Remove pointless pattern.match.
	* kawa/standard/{let,letstar}.java:  Don't allocate array of
	Declarations (since we now use links).
	* kawa/standard/define.java:  Set DEFINING_FLAG on result.
	* kawa/standard/letrec.java:  Re-wriiten to use extend Syntax.
	* kawa/standard/StandardInterpreter.java: Upadet for new letrec.
	* kawa/standard/load.java:  Close on port on eof.
	* kawa/standard/string2list.java:  Use Char.make rather than new Char.

Tue Jul  2 11:34:24 1996  Anthony Green  <green@csk3.cygnus.com>

	* Makefile.am, Makefile.in, configure.in: Added the codegen
 	directory to the build procedure.

	* */Makefile.am */Makefile.in: Added "make clean" support.

Fri Jun 28 17:47:12 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/standard/cond.java:  Re-write to use recursion.

Fri Jun 28 15:02:21 1996  R. Alexander Milowski <sgml@winternet.com>

	* kawa/standard/{list2string,list2vector,string2list,string_append,
	string_ci_equal_p,string_ci_greaterthan_p,string_ci_greaterthanequal_p,
	string_ci_lessthan_p,string_ci_lessthanequal_p,string_copy,
	string_equal_p,string_fill_b,string_greaterthan_p,
	string_greaterthanequal_p,string_lessthan_p,string_lessthanequal_p,
	substring,vector2list,vector_fill_b}.java:  New classes.
	* kawa/standard/cond.java:  Implement cond syntax.
	* kawa/standard/StandardInterpreter.java:  Update accordingly.
	* kawa/standard/Makefile{am,in}:  Add new files.

Tue Jun 25 20:40:57 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Char.java:  New class, for representing Scheme characters,
	* kawa/lang/{SyntaxError,ReadError,EofReadError}.java:  New Exceptions.
	* kawa/lang/{EOFInComment,EOFInString,InvalidCharacterName,
	InvalidPoundConstruct,MalformedList,NotImplemented,NumberTooLong,
	UnexpectedCloseParen}.java:  Replaced by SyntaxError sub-classes.

	* kawa/lang/{InPort,OutPort}.java:  New classes, replace iport & oport.
	* kawa/lang/{iport,oport}.java:  Removed.
	
	* kawa/lang/Procedure0or1.java:  New Procedure sub-class.

	* kawa/lang/{Procedure,Expression}.java: Implement Printable interface.
	* kawa/lang/LambdaExp.java:  Add optional name field, setName method.
	* kawa/lang/LambdaProcedure.java:  Use and print LamdaExp.name.

	* kawa/lang/ErrorExp.java:  New Expression sub-class.
	* kawa/lang/Interpreter.java:  Move read-related functions to InPort.
	* kawa/lang/Interpreter.java:  Update iport->InPort, oport->OutPort.
	* kawa/lang/SetExp.java (eval):  Return voidObject.
	* kawa/lang/Symbol.java:  New makeUninterned, generate methods.
	Add make as a (preferred) synonym for intern.
	* kawa/lang/print.java:  Print obj.toString() as the default.
	Print Scheme strings with quoting if OutPort.printReadable.
	
	* kawa/{lang,standard}/Makefile.{am,in}:  Updated accordingly.

	* kawa.java, kawa/Shell.java:  Update iport->InPort, oport->OutPort.
	* kawa/Shell.java: Use eofObject.  No longer catch removed Exceptions.
	
	* kawa/standard/StandardInterpreter.java (define_proc):  new method.
	Use it to add new primitives.
	* kawa/standard/{char_equal_p,char_greater_equal_p,char_greater_p,
	char_less_equal_p,char_less_p,char_p,make_string,string,string_ref,
	string_set_b}.java:  Stylistic changes.  
	Update java.lang.Character->Char.
	* kawa/standard/{eof_object_p,load,read,readchar,write,writechar}.java:
	New classes to implement I/O primitives.
	* kawa/standard/eqv_p.java:  Chars are now equal? iff eq?.
	* kawa/standard/ifp,set_b}.java:  Use new Interpreter.syntaxError.
	* kawa/standard/define.java:  Likewise.  Also do LambdaExp.setname.

	* license.term:  New license Based on Tcl copyright.
	* COPYING:  Removed.

Fri Jun 21 00:03:34 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Declaration (context):  New field.
	(Declaration):  Initialize index to -1.
	* kawa/lang/ScopeExp.java (assign_space, add_decl):  New methods.
	(shared, num_decls, space_needed):  New fields.
	* kawa/lang/LambdaProcedure.java (applyN):  Always allocate
	new frame using LambdaExp.space_needed field.
	* kawa/lang/LetExp.java (eval):  Use Declaration.index when setting.
	* kawa/lang/ReferenceExp.java (eval):  Search up lexical scope chain.
	* kawa/lang/SetExp.java (eval):  Likewise.
	* kawa/lang/LambdaExp.java (LambdaExp):  Use new ScopeExp.add_decl.
	* kawa/standard/{let,letstar}.java (rewrite):  Likewise.
	* kawa/lang/ApplyExp.java (print):  Fix thinko.
	* kawa/lang/BeginExp.java (eval):  Fix typo.

Wed Jun 19 17:00:03 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Sequence.java:  New abstract class.
	* kawa/lang/List.java:  Now inherits from Sequence.
	* kawa/lang/Makefile.am:  Update accordingly.
	* kawa/lang/Pair.java (equalds, length, elementAt):  New methods.
	* kawa/lang/vector.java -> Vector.java:  Renamed and re-implemented.
	* kawa/standard/equal_p.java:  Re-implement to use equals method.
	* kawa/standard/{make_vector,vector,vector_length,vector_p}.java,
	kawa/standard/{vector_ref,vector_set_b}.java:  Use new Vector class.
	
Wed Jun 19 10:16:59 1996  Per Bothner  <bothner@deneb.cygnus.com>
	
	* kawa/lang/symbol.java -> Symbol.java:  Renamed class.
	* kawa/lang/List.java:  New class.
	* kawa/lang/pair.java -> Pair.java:  Renamed;  made sub-class of List.
	* kawa/lang/snull.java:  Removed.  Use static List.Empty instead.
	* kawa/lang/Procedure1or2.java:  New sub-class of Procedure.
	* kawa/lang/{*.java,Makefile.am,Makefile.in}:  Update accordingly.

	* kawa/standard{*.java,Makefile.am,Makefile.in}:  Update accordingly.
	* kawa/standard/{append,apply.make_vector,string,vector}.java:
	Re-write as Procedure sub-class.
	* kawa/standard/{ass,mem}.java:  Minor cleanups and optimizations.
	* kawa/standard/list_p.java:  Use List.list_length.

Tue Jun 18 12:19:46 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Expression.java:  New abstract class.
	* kawa/lang/{ApplyExp,BeginExp,IfExp,LambdaExp,LetExp,QuoteExp,
	ReferenceExp,ScopeExp,SetExp}.java:  New sub-classes of Expression.
	* kawa/lang/Pattern.java:  New abstract class (for pattern matching).
	* kawa/lang/{ListPat,VarListPat}.java:  New sub-classes of Pattern.
	* kawa/lang/{Declaration,Environment}.java:  New classes.
	* kawa/lang/Procedure.java:  New abstract class.
	* kawa/lang/Procedure{0,1,2,3,4}.java:  Re-written to extend Procedure.
	* kawa/lang/ProcedureN.java:  New sub-class of Procedure.
	* kawa/lang/LambdaProcedure.java:  Re-written to extend Procedure.

	* kawa/lang/Syntax.java:  New abstract class.
	* kawa/lang/Syntax{0,1,2,3,4}.java:  Removed.  No longer used.
	* kawa/lang/{Lambda,Quote}.java:  Re-written to extend Syntax.
	* kawa/lang/print.java:  Handle null Object.
	* kawa/lang/symbol.java:  Re-write to intern in hashTable,
	and removed public constructor.
	* kawa/lang/Interpreter.java:  New methods: rewrite and rewrite_body.
	Removed some no-longer used stuff, and added some minor stuff.

	* kawa/Shell.java:  Re-write raw expression before eval.
	Print message if null returned.  Re-indent.

	* kawa/standard/{begin,define,ifp,let,set_b}.java:
	Re-write as sub-class of Syntax.
	* kawa/standard/letstar.java:  Syntax sub-class for "let*".
	* kawa/standard/length.java:  Add static int-returning "work" function.
	* kawa/standard/{equal_p,eqv_p}.java:  Add similar boolean function.
	* kawa/standard/{list,plus_oper}.java: Re-written to extend ProcedureN.
	* kawa/standard/string2symbol.java:  Should not fold case.
	* kawa/standard/StandardInterpreter.java:  Update accordingly.

Wed Jun 12 22:06:58 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/print.java:  New class, with just a print method (for now).
	* kawa/lang/pair.java (print):  Just call printNoParen.
	(printNoParen):  Use loop (not recursion), and kawa.lang.print.print.
	* kawa/lang/vector.java (print):  Use kawa.lang.print.print.
	* kawa/Shell.java (run):  Use kawa.lang.print.print.
	* Makefile (JAVAC):  Search ".:, not ".." for classpath.
	* kawa/lang/Makefile (OBJ):  Add print.class.

Wed Jun 12 19:34:35 1996  Per Bothner  <bothner@deneb.cygnus.com>

	* kawa/lang/Interpreter.java (trueObject, falseObject,
	nullObject, undefinedObject):  Make static.
	* kawa/lang/Procedure[01234].java:  Rename execute[0-4] -> apply[0-4].
	Remove Interpreter and frame arguments.
	* kawa/standards/*.java:  Change most execute methods to new apply
	methods.  Use static references to get trueObject etc.

	* Check in Kawa 0.2.

=============================================================================

Changes since 0.1:
==================

Kawa 0.2 (6-10-96)

Created an Executable and Syntaxable interface for procedures and syntaxes.

Changed class names to get rid of name conflicts that were causing
problems due to java compiler bugs.

Changed string to be java.lang.StringBuffer

Added Procedure0, Procedure1, Procedure2, Procedure3, Procedure4 classes
for simplifying procedure parameter checking.

Added Syntax0, Syntax1, Syntax2, Syntax3, Syntax4 classes for simplifying
syntax parameter checking.

Fixed lambda to clone the current execution frames.  Thus, the following now
works:
   (define x 5)
   (define foo (lambda () x))

   (let ((x 10)) (foo)) => 5

   -and-

   (define bar (let ((x 1)) (lambda () x)))
   (bar) => 1

Created the kawa.lang.iport and kawa.lang.oport classes for input and output
ports, respectively.

Finished the kawa.Shell class.

Create in, out, err members on the kawa.lang.Interpreter class for the stdin,
stdout, stderr respectively (as iport or oport).
