-*- Mode: Indented-text; -*-

Recent changes to Scheme 48.

2/24/99  (version 0.53)
	 Additions:
	  DEFINE-FINITE-TYPE and DEFINE-ENUMERATED-TYPE (in structure
	   FINITE-TYPES; documented in doc/utilities.ps and
	   doc/html/utilities.html.
          Added CHAR-SOURCE->INPUT-PORT, CHAR-SINK->OUTPUT-PORT,
 	   MAKE-STRING-OUTPUT-PORT, STRING-OUTPUT-SOURCE-OUTPUT to
	   the extended-ports structure.
	  The structure BYTE-VECTORS is the same as CODE-VECTORS with `byte'
	   replacing `code' in all the names.  The underlying datatype is the
	   same for both, and uses `byte' when printing.
	  There is a new and much improved interface to C code, thanks to
           Mike Sperber.  It is documented in in doc/external.ps and
	   doc/html/external.html.
         Bug fixes:
	  Session-data and user-context records are no longer in the fluid env.
	  Lexical environments can now be nested up to 65k deep.
	  ,expand no longer prints `definition in expression context' warnings.
	  Added ARRAY? and SEARCH-TREE? to the array and search tree structures.
	  Flat environments work again.
	  Templates of the form `var ... ...' now work in syntax rules.
	  Reinstated caching of SCHEMIFY results to greatly reduce the space
           used by debugging info.
	  Added argument checking to STRING->NUMBER and NUMBER->STRING.
	  Fixed space blow-up in LOAD.
	  Unused ports are closed more reliably.
	 Changes:
	  The heap, gc, and image code is now in three separate modules.
          The symbol table is now held in a VM register.
	  Inlined SHOWING-FOCUS-VALUES into the main command loop and moved
	   the sentinal call to reduce the noise at the base of ,preview output.
	  The tables returned by MAKE-TABLE now use EQV? for comparison (instead
	   of EQ?).  This makes these tables about 50% slower when numbers are
           used as keys, but significantly more accurate.
	  Floating-point numbers are no longer double boxed.
	  The channels structure has been split into channels and low-channels.

7/22/98  (version 0.52)
         Bug fixes:
	  Fixed problems with unbound variables in SET! and the inliner.
	  Made macro expansion a bit less eager; this should reduce the amount
           of heap space needed for compilation.

6/29/98  (version 0.51)
	 Incompatible changes:
          BIG-SCHEME no longer exports its version of DEFINE-RECORD-TYPE (but
	   it is available from the structure DEFRECORD).  I am slowly removing
           all uses of this version of DEFINE-RECORD-TYPE from the sources.
	  The version of DEFINE-RECORD-TYPE exported by DEFINE-RECORD-TYPES
	   checks that every constructor argument corresponds to a field.
	  Uses of LAP must list their free variables (see env/assem.scm).
	 Changes:
	  The functions exported by BIG-SCHEME that were not available elsewhere
	   are now exported by BIG-UTIL as well.
          MAKE-RANDOM now checks its argument (but is still a fairly poor
           source of pseudo-randomness).
	  SIGPIPE no longer kills the S48 process (this was done earlier but
	   not listed here).
	  The macro/module/compiler code has been reorganized.  Hopefully
	   the only noticable difference is in the babble written when loading
           files and packages.
	  Added CODE-QUOTE (in its own structure of the same name) for use
           in writing hygienic macro-generating macros.  CODE-QUOTE is the
           same as QUOTE except that it does not strip off any of the macro
	   system's name annotations.
	  The FLOATNUMS package now exports FLOATNUM?.
	 Bug fixes:
	  Fixed phony stack-overflow bug.
	  Fixed a bug in thread time-debit mechanism.
	  Made floating point numbers always print as inexact.
	  Got rid of bogus type-error warnings when using floatnums.
	  Fixed declaration of call_startup_procedure in c/main.c.

2/11/98  (version 0.50)
         Fixed bug in closed-compiled version of READ-CHAR.
	 Fixed negative-key bug in integer tables.

11/18/97 (version 0.49)
	 Removed some non-portable Kali code that had been accidentally
	  included in c/extension.c.

10/29/97 (version 0.48)
         The VM's calling convention now has the caller doing protocol checking,
	  instead of the callee.  The *NARGS* register no longer exists.
	 Scheme's variable-arity procedures (APPLY, MAKE-VECTOR, +, -, etc.)
	  are usually handled without raising an exception.  Calls with an
	  `atypical' number of arguments are now much faster.
	 Opcodes were added for >, <=, and >=.
	 Procedures can take up to about 8k arguments.  The limit is determined
	  by the value of AVAILABLE-STACK-SPACE in scheme/vm/arch.scm.
         Compiler detects wrong number of arguments in ((lambda ...) ...).
	 Removed the dynamic point from the dynamic environment to make
          DYNAMIC-WIND behave reasonably with threads.
	 KILL-THREAD! should work more reliably.
	 The I/O primitives now pass OS error messages to the exception handlers.
	 I/O errors when flushing buffers no longer crash the system.
	 The Pre-Scheme compiler's hack for shadowing global variables with
	  local copies is no longer used.
	 Incompatible changes:
	  The internal thread interface was simplified.
	  There are some architecture changes; .image files will have to
	   be rebuilt.
          ACCESS-SCHEME-48 and scheme/misc/slib-init.scm have been removed
	   (thanks to Mike Sperber's updating of slib).

1/27/97	 (version 0.47)
	 Fixed ,exit and added ,exit-when-done.
	 CASE now uses EQV? exclusively.

11/5/96	 (version 0.46)
	 Fixed a few minor thread problems.
         opt/analyze.scm now writes to current-noise-port.
         DELQ and DELETE now delete every instance, as the documentation claims.
	 There should be no more spurious heap-overflow interrupts.
	 Fixed bugs that caused the system to die if stdout blocked.
	 Template offsets have been increased to two bytes.
	 Disassembly of flat-lambda now works (fix from Michael Sperber).

8/23/96	 (version 0.45)
	 Fixed various problems with thread termination and nested schedulers.
	 Changed thread-internal interface to make schedulers easier to write.
	 BITWISE-{AND,IOR,XOR} now take an arbitrary number of arguments.
	 Output ports have their buffers flushed when Scheme 48 terminates.
	 In keeping with RnRS, CLOSE-{IN,OUT}PUT-PORT are now idempotent.
	 MODULO now handles negative arguments properly.

6/20/96  (version 0.44)
	 The VM's byte-code interpreter and storage management code are
	  now compiled to separate C files.
	 The socket code works again.

5/10/96  (version 0.42-0.43)
	 Various fixes to the thread and I/O systems.
	 The Unix interface code is more portable.
         EOF (control-D) now resumes running all non-broken threads on
	  resumed command level.  Thus EOF after a keyboard interrupt
	  (control-C) resumes running the interrupted thread.
	 
11/30/95 (version 0.41)
         The distribution has been reorganized to reduce the number of files
	  in the top-level directory.
	 The threads implementation has been replaced with one based on engines
	  to allow for nested schedulers.
         Threads are now included in the initial image.
         The I/O system has been fixed and automatic periodic output buffer
	  flushing has been reinstalled.
	 Command levels have been integrated with the threads system to ensure
          that at most one REPL is active at any time.
	 CONDVAR has been changed to PLACEHOLDER (condition variables being
	  something quite different).
	 ,profile no longer works, it will be fixed in a later version.
         MIN and MAX now do inexact contagion.

4/13/95  (version 0.40)
	 Renamed error-output-port to current-error-port.
	 Reinstated ".gdbinit"...
	 segment->template now takes parent templates debug data as an
	   argument.
	 Automatic periodic output buffer flushing has been
	   temporarily disabled.  A future version of the I/O system
	   will fix it.
	 Fixed expansion of named LET.
	 The bummed-define-record-types structure is now gone; use
	   define-record-types instead.
	 There is somewhat better syntax checking now.

8/12/94  (versions 0.38-0.39)
         ,profile <command> prints out profiling information
         An interrupt is raised after ever GC; the default handler checks
           to see if some reasonable amount of storage was reclaimed.
         Some of the standard Scheme procedures, including LENGTH, FOR-EACH,
           VECTOR, and ASSQ, are now significantly faster.
	 Making, accessing, and setting records is faster.
         tar file now includes the top-level directory
         The "scheme-level-2-internal" structure has been renamed to
           "usual-resumer".
         ` ( . ' is now illegal (as required by the R4RS grammar).
	 Made DELAY and FORCE comply with R4RS.
         The EXPAND optimizer does a topological sort on definitions.
         (optimize flat-environments) causes the compiler to produce
           flat (instead of nested) lexical environments.
         The I/O system has been rewritten to do its own buffering.  There
           are significant changes to unix.c to support this.  See doc/io.txt.
         (ERROR-OUTPUT) is now available from the structure i/o.
	 jar-defrecord has been replaced with a modified bummed-jar-defrecord
         Files load about 25% faster, for a number of reasons.
	 Removed the copy of vm/arch.scm from the rts directory.
	 Threads and sockets work together; SOCKET-ACCEPT no longer blocks.
         The compiler no longer prints out .'s as it compiles definitions.

7/5/94   (version 0.37)
         I/O opcodes now raise an interrupt instead of blocking (they still
           block if no corresponding interrupt handler has been installed).
         The threads code has been rewritten; threads that block on I/O
           do not busy wait and THREAD-READ-CHAR and THREAD-PEEK-CHAR have
           been removed.
         Attempting to obtain a lock twice or to release an unowned lock
           now signal errors.
	 READ-CHAR-WITH-TIMEOUT returns #F if the timeout occurs.
         The socket structure is back in more-packages.scm.
         Renamed .gdbinit to gdbinit
	 tar file now contains a top-level directory

3/22/94  (version 0.36)
         Removed doc/lsc.ps for copyright reasons.
         Fixed (* 47123 46039) multiply bug.
         Modified vm/README to make it easier to run the VM.

3/16/94  (version 0.35)
	 Fixed (exact->inexact 0.1) -> 0..1. bug.
         Fixed VM bug that permitted the creation of stored objects with
	   negative sizes.

3/8/94   (version 0.34)
	 "make check" target tests out various features.
	 Fixes for SGI IRIX 4.0.5 and MIPS RISC/OS 4.51, courtesy
	   Bryan O'Sullivan.
	 debug/run.scm and the "medium system" work again now.
	 misc/static.scm should work on the 68000.
	 Command processor no longer fluid-binds (interaction-environment)
	   on recursive entry.

2/24/94  (version 0.33)
	 Fixed bug in VM's interrupt system.
	 Made non-local srcdir work in Makefile.
	 Added (load-package 'bigbit) to vm/README.

2/23/94  (version 0.32)
	 Some incompatible changes to the VM; .image files will have
	   to be rebuilt.
	 Improvements to configuration script and to unix.c to support
	   a wider variety of Unixes.  The system should now work
	   under any Posix-compliant Unix (except maybe for
	   char-ready?; see comments in unix.c).
	 Upped the default heap size from 4 meg (2 per semispace) to 6
	   meg (3 per semispace).
	 New command line argument -s <size> for specifying size of
	   stack buffer.  Default is 2500 (words).
         $@ -> "$@" in script (thanks to Paul Stodghill for this fix).
	 Obscure interrupt/exception VM bug fixed.
	 It is now possible to put an initial heap image into static
	   memory (effectively allocated by OS process creation).
	   Immutable initial objects go into static read-only memory,
	   and mutable initial objects go into static read-write
	   memory.  Initial objects not copied by the GC.  There is no
	   documentation yet, but look at the rules for little and
	   debug/little.o in the Makefile if you're interested.

2/13/94  (version 0.31)
	 Incompatible changes:
	   In interfaces, all exported syntactic keywords must be
	     given type :syntax.  For example,
	       (define-interface my-macros
	         (export (my-macro :syntax) ...))
	   Image entry procedures for the ,build command are now
	     passed a list of strings, not just a single string, for
	     the command line arguments following -a.
	   The names of the macros defined in scheme48.h
	     (pairp, car, string_length, etc.) are now all upper case.
	 New "configure" script generates Makefile from Makefile.in
	   and sysdep.h from sysdep.h.in (thanks to Gnu autoconf).
	   See INSTALL and doc/install.txt.
	 Bug fixes:
           Can now make vectors (strings, etc.) as big as the amount
             of heap space available (but you're still screwed if you
             try to make one bigger than 2^23-1 bytes - don't do it).
	   Non-ANSI-ness fixed in scheme48vm.c (jump out of, then
	     back into, a block expected block-local variables to be
	     unchanged).
	   Fixed big/external.scm (had VECTOR-POSQ instead of ENUM).
	   In (define-syntax foo bar) you got an error if bar was a
	     variable reference.
	   Plugged a storage leak (file-environments table in
	     env/debug.scm).  Images made with ,build were too large.
	   Flushed extraneous delay from make-reflective-tower.
	 Renamed variables in Makefile to resemble Gnu standards.
	 Fixed definition of LINKER_RUNNABLE in Makefile.
	 Added doc/call-back.txt.
	 Fixed define-enumerated documentation (doc/big-scheme.txt).
	 Environment maps no longer retained for things in initial.image
	   and scheme48.image.  This makes scheme48.image about 170K
	   smaller.

2/3/94   (version 0.30)
	 Faster EXPT.
	 FLOATNUMS improvement: (inexact->exact <float>) should now
	   work, e.g. 
           (inexact->exact (/ 1. 3.)) => 6004799503160661/18014398509481984
         Reinstated ACCESS-SCHEME-48 for the benefit of PSD (portable
           scheme debugger) and a certain other software package that
           shall remain nameless.  It only knows about a small number of
           procedures, including things like ERROR and FORCE-OUTPUT.
         Various changes to support the Pre-Scheme compiler, notably
	   SET-REFLECTIVE-TOWER-MAKER!.
	 Incompatible change to the ENUMERATED structure: the names
	   foo/bar no longer become defined.  Write (enum foo bar)
	   instead.  This will macro expand into the correct small
	   integer.

1/30/94  (version 0.29)
	 Fixed ps_run_time() to call sysconf() to find out how many
	   ticks there are per second.  It used to assume 60.  This
	   affects the output of the ,time command, so don't try
	   comparing numbers from this version with numbers from older
	   versions.
	 ,time command will now accept a command, e.g.
	   ,time ,load foo.scm.
	 It appears that if multiple arguments follow -a on the
	   argument line, they are concatenated together with spaces
	   separating them and passed to the startup procedure.  I
	   don't know how long this has worked.  This will change in
	   the future so that the startup procedure gets a list of
	   strings.
	 Installed what used to be called the GENERAL-TABLES structure
	   as the TABLES structure used by the system.  This allows
	   the use of other comparison predicates besides EQ?, and
	   eliminates some code that had a restrictive copyright
	   notice.
         ENUM, NAME->ENUMERAND, and ENUMERAND->NAME are all macros.
         Enumerated types themselves are now macros as well.

1/23/94  Fixed bad multiplication bug in VM: (* 214760876 10) was
	   returning 125112.
	 Moved RECORD-TYPE? and RECORD-TYPE-FIELD-NAMES from the
	   RECORDS-INTERNAL interface to the RECORDS interface, for
	   a somewhat closer approximation to MIT Scheme.
         Various type system improvements.
	 Still no documentation for the ,exec package, but see
	   link/load-linker.exec for an example.
	 New generic function feature, exported by the METHODS
	   interface (see interfaces.scm), almost like in a certain
	   dynamic object-oriented language.

1/11/94  (version 0.27)
	 Change:
	   The isomorphism used by CHAR->INTEGER and INTEGER->CHAR is
	     no longer ASCII.  This change was introduced in order to
	     assist the development of portable programs.  If you need
	     ASCII encoding, you should open the ASCII structure and
	     use the procedures CHAR->ASCII and ASCII->CHAR.
         Features:
	   The help system is somewhat improved.
	   New form DEFINE-STRUCTURE defines a single structure.
	 Incompatible changes to package system:
	   Renamed DEFINE-PACKAGE to DEFINE-STRUCTURES
	   Renamed DEFINE-STRUCTURE to DEFINE
	   Renamed all the base types from FOO to :FOO.  E.g.
	     :SYNTAX, :VALUE, :PAIR, etc.
         Other:
	   Removed socket support due to restrictive copyright on some
	     of the C code that was in extension.c.

12/21/93 ,take has been flushed in favor of ,exec ,load.  Commands are
	   now accessed via a distinguished package instead of a table.
	   Documentation pending.
         Postscript (.ps) files now included in doc/ subdirectory.  (I
           thought they had been there all along, but apparently I was
           wrong.)
         Enhanced, but still kludgey, floating point support.  Use
	   ,open floatnum.

12/12/93 (version 0.26)
	 NetBSD port.
	 Hacked write-level and write-depth for inspecting circular
	   structure.
	 Recursive FORCEs signal errors, e.g.
	   (force (letrec ((loser (delay (force loser)))) loser))

12/7/93 (version 0.25)
         Bug fix:
	   filenames.make can now be remade using initial.image.  This
	     means that you can snarf a distribution and then edit
	     USUAL-FEATURES before making scheme48.image.


12/6/93  Incompatible changes:
	   Change of terminology: "signature" --> "interface".
	     This means that DEFINE-SIGNATURE is now called
	     DEFINE-INTERFACE, etc.
           Some structures have been renamed:
	     condition -> conditions
	     continuation -> continuations
	     exception -> exceptions
	     queue -> queues
	     port -> ports
	     record -> records, record-internal -> records-internal
	     table -> tables
	     template -> templates
	   The ,load-into command has been removed.  Use ,in ... ,load
	     instead (see below), e.g.
	       ,in mumble ,load myfile.scm
           The heap size for -h is specified in words, not bytes.  As
	     before, the size must account for both semispaces; -h 2n
	     means n words per semispace.  This change was actually
	     made a while ago, but I was confused as to what it meant.
         Bug fixes:
	   #e1.7 reads as 17/10, (exact? 1+1.0i) => #f, and 1.0+i prints.
         Features:
	   Things like ((structure-ref scheme if) 1 2 3) work.
	   The following commands now take arbitrary commands to execute
	     in the specified package, not just forms:
	       ,config   ,user   ,for-syntax   ,in <package>
             For example, you can say
	       ,in mumble ,trace foo
             This subsumes the functionality of the ,load-into and
	     ,load-config commands.
           Dynamic loading of shared libraries for System V systems
	     (untested).
         Documentation:
	   Somewhat improved.  user-guide.txt now lists most of the
	   interesting built-in packages.  lsc.ps is a draft of "A
	   Tractable Scheme Implementation," a paper submitted to Lisp
	   and Symbolic Computation.  See also doc/big-scheme.txt,
	   doc/thread.txt, and doc/external.txt.


10/30/93 LET-SYNTAX and LETREC-SYNTAX.
	 Arrays (see big/array.scm).
	 Lots of internal changes.

7/20/93  Features:
	   Type system.  See doc/types.txt.

7/4/93   Features:
           New define-package clause (for-syntax <clause>*).
	     E.g. (define-package ((my-package ...))
		    (open ...)
		    (for-syntax (open scheme my-utilities)
			        (files more-crud-for-syntax))
                    ...)
           A file name to package map is now used by the emacs
	     interface.  Whenever you load a file, or zap from a file that
	     hasn't been previously loaded or zapped, the package in
	     which forms are being evaluated is remembered in a table.
	     The next time you zap some forms from the same file, they
	     will be evaluated in that package.
	     Sometimes you may get an association you don't want.  In that
	     situation, you can use the ,forget command to delete an
	     entry in the table.
           A new ,push command goes to a deeper command level.
	   Experimental "command preferred" command processor mode: if
	     you give the command ",form-preferred off", commands will
	     be "preferred" to forms, meaning that you don't need to
	     type a comma before giving a command.  To see the value
	     of a variable FOO you have to say (begin foo).
           Experimental "no levels" command processor mode: if you
	     give the command ",levels off", then an error will not
	     push a new command level.  If you want to ignore an
	     error, you don't need to take any action - further
	     evaluations will happen at top level.  If you want to
	     enter the inspector or get a preview, you can issue these
	     commands or a ,push command immediately after the error
	     occurs (more precisely, any time until the focus object
	     is set by some other command).
	   All of the mode-control commands (batch, bench,
	     break-on-warnings, form-preferred, and levels) take
	     an optional argument.  When no argument is given, they
	     will toggle the corresponding mode.  With an argument of
	     ON or OFF, they turn the mode on or off.
           The ,flush and ,keep commands have been made more flexible
	     and verbose.


6/18/93  Incompatible changes:
	   The access-scheme48 procedure has gone away.  Use ,open
	     or the module system instead.
           The user, configuration, and for-syntax packages no longer
	     have variables bound to them in the configuration package.
	     Where previously you said:       Now you should say:
	      ,in user <form>                  ,user <form>
	      ,in config <form>                ,config <form>
	      ,in for-syntax <form>            ,for-syntax <form>
	      ,load-into config <file>         ,load-config <file>
	      ,load-into for-syntax <file>     ,for-syntax (load "file")

	 Features:
           There is an ,expand <form> command for debugging macros.
	   The ,open  command takes any number of structure names, and opens
	     them all (like ,new-package).
	   New procedure DEFINE-INDENTATION exported by the PP structure.
	     E.g. (define-indentation 'let-fluid 1) is like Gnu emacs's
	     (put 'let-fluid 'scheme-indent-hook 1).
           The inspector simplifies generated names in continuation
	     source code display.  E.g. when formerly it said
	       "Waiting for (#{Generated lambda} () (x->node (car exps)))"
	     now it says 
	       "Waiting for (lambda () (x->node (car exps)))"
           Macros can signal syntax errors by returning input expression
	     unchanged.  (Comparison uses EQ?.)

         Documentation:
	   The doc/ directory contains a draft of a "Scheme 48
	     Progress Report."

         Cleanup:
	   Procedure NULL-TERMINATE added to structure EXTERNALS's
	     signature.
	   "Vulgar Scheme" renamed to "Big Scheme".
	   Two new subdirectories, env/ (for programming environment)
	     and big/ (for Big Scheme), now contain most of what was
	     in the misc/ directory.
           Several source files that were in the top level and link/
	     directories have moved to the env/ and alt/ directories.


5/6/93   Bug fixes:
	   Fixed -h command line switch.  The size was being improperly
	     divided by 4, so if you asked for an N megabyte heap, you'd
	     actually only get an N/4 megabyte heap.
	   Nested backquotes were broken for a while; should be fixed
	     now.

         Features:
	   Quoted structure is read-only: e.g. (set-car! '(a b) 3) will
	     produce an exception.
	   ,config [<form>] and ,user [<form>] are like ,in <struct> <form>.
	   Unix socket support; see misc/socket.scm.
	   Now using gzip instead of compress for distributions.
	   ,open command offers to load packages.
	   A .gdbinit file sets a breakpoint at CM's exception raising
	     code, and defines a handy "preview" command.

1/18/93  Feature:
           Scheme 48 distributions now have version numbers.  The
	     version number is printed in the image startup message.
	     Please include it in bug reports.
         The module system is now documented.  See doc/module.tex.

12/17/92 Bug fixes:
           Macro templates of the form (x ... y) are supported.
	   Macro templates are now less fussy about meta-variable
	     rank: you can do "(x y) ..." even when the rank of either
	     x or y (but not both) is too low; the low-ranking text
	     will be copied as many times as necessary.  (A
	     meta-variable's "rank" is the number of ...'s it sits
	     under in the left-hand side of the rewrite rule.)
	   SYNTAX-RULES is now itself hygienic.  This means you can
	     have a meta-variable named CAR, for instance.

         New development environment features:
	   Commands now start with comma (",") instead of colon
	     (":").  (Easier to type since it's not shifted.)
	   values, call-with-values, dynamic-wind, eval,
	     interaction-environment, and scheme-report-environment
	     added per upcoming Revised^5 Scheme report.  See
	     doc/meeting.tex.
	   Modifications to quoted structure will now be detected and
	     reported as errors.
	   An interrupt will occur if an insufficient amount of memory
	     is reclaimed by a garbage collection.
	   Inspector now accepts arbitrary command processor commands
	     (with or without leading comma)
           ,keep command controls retention of debugging information.

	 Features removed:
	   #\page and #\tab.  These aren't in the Scheme report.
	     Their absence in Scheme 48 will encourage portability.
	   access-scheme48 works with fewer names than before.  Use the
	     package system instead.
           Complex numbers not in the system, by default.  Get them
	     back by changing usual-features in more-packages.scm.

	 Features changed:
	   Many changes to package system.  See doc/module.tex.
           The :identify-image command is gone.  Instead, supply a
	     second argument (optional) to the ,dump command.
	   The inspector's TEM command has been shortened to T.

         Internal changes and features:
	   Stored objects types are now part of the virtual machine
	     architecture, i.e. known to the byte-code compiler.
	   Run-time system is split up into many little modules.
	   File names are retained in debug database.  (But not used for
	     anything yet...)
	   Tweaks to table package reduce standard image size by 50K
	     and increase compiler speed by 7%.
	   Immutability bit in object headers.
	   Weak pointers.

7/18/92  Features removed:
	   Table package's default hash function no longer supports
	     string, pairs, or vectors.

7/9/92   Bug fixes:
	   (- 0 -536870912)
	   Inspector now uses command i/o ports instead of current ones
	   Inexact integers print as N. instead of #iN
	   Throwing back into a call-with-....put-port now produces a
	     warning instead of an error

	 Feature fixes:
	   In DEFINE-PACKAGE, OPEN no longer implies ACCESS.
	   misc/receive.scm renamed to rts/values.scm, made to conform
	     with Revised^5 Report, and installed internally.

	 Features:
	   New :load-package command.  Uses file names in (file ...) clause
	     of a define-package.  These are interpreted relative to the
	     directory in which the file containing the define-package
	     was found.
	   #\tab and #\page now print this way.


6/17/92  Bug fixes:
	   Fixed bug in modulo.
	   Flushed LAST-PAIR (which disappeared between R^3 and R^4).
	   DEFINE-SYNTAX and SYNTAX-RULES now exist.
	   CEILING, FLOOR, and ROUND now exist.
	   GCD and LCM are now n-ary.
	   STRING-CI=? and STRING-COPY fixed.
	   STRING->SYMBOL now copies its argument before handing it to
	     INTERN.
	   =, <, etc. now work with more than two arguments.
	   CHAR-READY? exists.
	   Calls via APPLY are now tail-recursive.
	   DISPLAY of vectors and lists works (ugh).

	 Development environment improvements:
	   Type ? at inspector to get list of inspector commands.
	   Inspector D command goes to next continuation.
	   Inspector M command shows more of a long menu.
	   Inspector TEM command goes to a continuation's or closure's
	     template.
	   For closures and continuations, inspector displays local
	     variables with their names. 
	   For continuations, inspector displays source code for
	     expression into which control will return.
	   Multiple command loop levels.  EOF (control-D) now only pops
	     out a single level.  :reset pops all the way out.  :level n
	     goes out to level n.
	   Can disable benchmark mode.
	   Procedures made with (let ((f (lambda ...))) ...) now print
	     with names.

	 Features:
	   Package system: special forms define-package and package-ref;
	     command processor commands :set-package, :load-into,
	     :clear-package, :new-package, :export, :open-package, etc.
	   In misc directory: threads, queues, extended ports, format, etc.

	 Changes to system environment:
	   user-initial-environment -> user-package
	   record-updator -> record-modifier
	   primitive-throw superseded by with-continuation
	   ash -> arithmetic-shift
	   New bootstrap regime.
	   Support for threads: alarm clock interrupt, etc.

	 Etc.:
	   Liberal COPYRIGHT file, and a little notice in each source file.
	   INSTALL and NEWS split off from README.
	   doc.txt renamed to user-guide.txt.
	   The Makefile now provides two ways to make "s48" for
	     installation.  One depends on the exec #! script execution
	     feature and the other doesn't.
	   "make" targets for testsys.image and little.image.
	   Runs Jaffer's test suite and library.
	   Flushed s48.el.  Use cmuscheme instead.


9/5/90   Command processor argument parser revamped.
	 :load, :trace, and :untrace commands take arbitrary number
	   of arguments.  Argument to :proceed is optional.
	 New (but undocumented) :identify-image command.
	 Better error messages: wrong number of arguments, undefined
	   variable.
	 +, *, min, max, apply are now n-ary; -, /, make-string,
	   make-vector, read-char, peek-char, write-char have
	   appropriate argument optionality.
	 Better internal support for macros; not yet ready for release.
	 Added STRING as per R^3.99RS.
	 More testing of Scheme version of bytecode interpreter.
	 Better scoping of ##; files can't see command processor context.
	 OR and CASE don't cons closures.
	 VM checks for non-existent heap image file, gives error
	   message instead of "bus error".
	 Numerous internal changes in compiler and exception system.
	 Fixed char<?.
	 Fixed -.5 bug in string->number.

8/26/90  Tested (link-system) inside of T; seems to work.
	 Benchmark mode available via :BENCH command.
	 System is 15K bigger due to new fatter global environment
	   representations.
	 Inspector abbreviation improved.
	 Disassembler now works on continuations, sort of.

7/26/90  ((lambda ...) ...) no longer makes a closure
	 Features now in default system:
	    :inspect
	    :dis[assemble]
	    Generic arithmetic: bignums, rationals, complexes
	    rationalize
	    :time command is more verbose
	 MOREFILES variable in Makefile for loading extra stuff
	 Default heap size increased to 2 megabytes per semispace
