News
====

   The last full release of the MIT Scheme system was version 7.1.3 in
1991.  Since that time, there was a partial release of version 7.2 for
i386/i486 machines and some MIPS R3000 machines.  This section
summarizes the changes that have occurred since version 7.1.3.  The
changes are divided into two parts: those that were incorporated in the
7.2 partial release, and those that were subsequently incorporated.

Changes from Release 7.2 to 7.3
-------------------------------

   This is an abbreviated list of the changes that have been
incorporated in the 7.3 release since the (partial) 7.2 release.

   * Support for MS Windows (3.1 and NT).

   * Native compiled-code support for DEC Alpha.

   * Compiler can now generate C code.  This is used to support the Sun
     SPARC and IBM RS6000 architectures.

   * Support for dynamic loading of compiled C code on several operating
     systems, including HP-UX, OSF/1, SunOS 4, and AIX.

   * New data structures: red/black trees and weight-balanced trees.

   * Redesign of hash tables makes them much faster and somewhat more
     flexible.

   * Completely new random-number generator.  The interface to the
     random-number generator has been changed to be like that of Common
     Lisp.

   * Record abstraction now uses a special "record" type to represent
     records (previously it used vectors).  `define-structure' now
     creates records by default; these records are identical to those
     created with the record abstraction.

   * `call-with-current-continuation' is now properly tail-recursive.

   * New command-line switch `-no-suspend-file' prevents the generation
     of `scheme_suspend' files.

   * Uncompression of compiled-code debugging information is now
     memoized to save time when doing many accesses to the same
     information (a common occurrence).

   * Constant space now grows automatically when needed.

   * New procedures:

          call-with-values                ;replaces with-values
          current-load-pathname
          error-output-port
          fold-left
          fold-right
          interaction-i/o-port
          notification-output-port
          prompt-for-command-char
          prompt-for-command-expression
          prompt-for-confirmation
          prompt-for-evaluated-expression
          prompt-for-expression
          standard-unparser-method        ;replaces unparser/standard-method
          stream-first
          stream-rest
          symbol<?
          trace-output-port

   * `string-pad-left' now truncates from the left instead of the right.

   * Argument to `make-graphics-device' is now a symbol.

   * Each REPL now has its own working directory pathname and pathname
     defaults.  `set-working-directory-pathname!' changes only the value
     for the current REPL.

   * The definitions of the following procedures have been changed to
     implement more useful behavior:

          string-capitalized?
          string-lower-case?
          string-upper-case?
          substring-capitalized?
          substring-lower-case?
          substring-upper-case?

   * New Edwin features:

          `M-x dabbrev-expand'
          `M-x describe-syntax'
          `M-x rcs-ci-locked-files'
          `M-x rcs-diff'
          `M-x rcs-list-locked-files'
          `M-x rcs-log'
          `M-x recover-file'
          `M-x show-parameter-list'
          `M-x sort-lines and other sorting commands'
          `auto-mode-alist' variable (as in Emacs)
          Encryption/decryption of files in `Dired'
          Undo upgraded to match GNU Emacs 18.57
          Buffers grow/shrink with constant amortized time
          Emacs 19 tags support (multiple tags files, inclusion)

   * Edwin compression/uncompression commands changed to use `gzip'
     instead of `compress'.

   * Edwin now has text-properties mechanism that permits implementation
     of highlighted and mouse-sensitive regions.

Changes from Release 7.1 to 7.2
-------------------------------

   This is an abbreviated list of the changes that were incorporated in
the (partial) 7.2 release since the 7.1 release.

   * Support for MS DOS.

   * Native compiled-code support for the Intel i386 and i486
     architectures.

   * Fixes to MIPS compiled-code support MIPS R3000 with large
     cache-line sizes.

   * Complete redesign of the error system.

   * X11 graphics interface redesigned.  The new design is smarter about
     interaction with the window manager (for example, it implements the
     `WM_DELETE_WINDOW' protocol) and has some limited support for event
     handling.  Windows are now closed when they are reclaimed by the
     garbage collector.

   * Redesign of I/O ports.  New design supports ports that perform both
     input and output.

   * Ports now have better-defined control over blocking mode and
     terminal mode.  Flushing of output buffers is not done
     automatically, except for the console port.

   * New procedures:

          *default-pathname-defaults*
          ->namestring
          ->truename
          close-port
          directory-namestring
          directory-pathname
          directory-pathname-as-file
          enough-namestring
          enough-pathname
          file-access
          file-attributes-direct          ;same as file-attributes
          file-modification-time-direct
          file-modification-time-indirect ;same as file-modification-time
          file-namestring
          file-pathname
          file-readable?
          host-namestring
          i/o-port?
          make-generic-i/o-port
          make-i/o-port
          open-i/o-file
          pathname-simplify
          pathname-wild?
          pathname=?
          port/copy
          port/input-channel
          port/operation
          port/operation-names
          port/output-channel
          port/state
          port?
          record-copy
          record-modifier                 ;replaces record-updater
          set-port/state!

   * `with-input-from-file' and `with-output-to-file' no longer close
     the port when they are exited abnormally.

   * Redefined `#!optional' and `#!rest' to be something distinct from
     symbols.

   * Strings now accept `"\NNN'" octal character escapes, much like
     those in C.

   * Redesign of pathname abstraction.  New design is very similar to
     the Common Lisp pathname abstraction.

        * ->PATHNAME no longer accepts a symbol as an argument.  Only
          strings and pathnames are valid.

        * Procedures eliminated:

               canonicalize-input-filename
               canonicalize-input-pathname
               canonicalize-output-filename
               canonicalize-output-pathname
               canonicalize-overwrite-filename
               canonicalize-overwrite-pathname
               home-directory-pathname
               init-file-truename
               pathname->absolute-pathname
               pathname->input-truename
               pathname->output-truename
               pathname->overwrite-truename
               pathname->string
               pathname-components
               pathname-default-host
               pathname-directory-path
               pathname-directory-string
               pathname-name-path
               pathname-name-string
               pathname-new-host
               pathname-relative?
               string->pathname
               symbol->pathname

        * `pathname-default' no longer accepts a HOST argument.

        * Representation of pathname directories changed to match
          Common Lisp. Directory is now either `#f' or a list of
          symbols and strings with first element either `absolute' or
          `relative'.

        * Unix pathnames now set DEVICE and VERSION to `unspecific'. 
          `unspecific' now means that the field is not used by the
          operating system.

        * Parsing rules for unix filenames changed: the file type is
          the part of the name after the last dot, if any.  If the dot
          occurs at the beginning or end of the filename, then it
          doesn't count -- in that case there is no type.  Thus, names
          like `.' and `..' have no type.

   * New Edwin features:

          `M-x manual-entry'
          `M-x outline-mode'
          `M-x shell-resync-dirs'
          `M-x shell-command'
          `M-x shell-command-on-region'
          `M-x telnet'
          RMAIL summary
          RMAIL sort
          REPL mode and asynchronous evaluation
          Printing commands
          ``run light'' for evaluation commands
          Reading and writing of compressed files (`".Z"' suffix)
          Reading and writing of encrypted files (`".KY"' suffix)
          Compress/uncompress commands for `Dired'
          Support for X protocols: `WM_DELETE_WINDOW' and `WM_TAKE_FOCUS'
          Time, load, and mail notification in mode line