A. Release Notes
The previous full release of MIT Scheme was version 7.5.17. This
section describes changes that have occurred since that time. For
more detailed information, see the `ChangeLog' files in the
source code.
Note that MIT Scheme still conforms to the Revised^4 Report on the
Algorithmic Language Scheme, but not to the Revised^5 Report on
The Algorithmic Language Scheme.
A.1 Recent Changes
These are the changes since release 7.6.0:
-
Release 7.7.1 fixes several bugs in IMAIL; fixes a bug that
prevented the use of server sockets on Windows systems; and fixes a bug
that caused the debugger to generate errors in common circumstances.
-
Release 7.7.0 provides "hygienic" macro support, as defined in
R^4RS and R^5RS. This is a complete rewrite of the syntax
engine, so any program that uses macros should be rewritten to use the
new engine. A subset of the old macro-definition syntax is still
supported, but this will eventually be removed. Note that the new
syntax engine has no effect on the compiled-code format; most binaries
compiled by release 7.6.x should continue to work.
There are several user-visible consequences to this change:
-
These syntactic keywords have been eliminated:
define-macro
,
in-package
,
macro
,
make-environment
,
scode-quote
,
unassigned?
, and
using-syntax
.
-
The syntactic keyword
the-environment
has been restricted to use
in top-level environments. It is no longer allowed in the body of any
binding form (e.g. lambda
, let
).
-
Syntactic keywords are now stored in environments, rather than in a
separate syntax-table structure. The environment abstraction has been
enhanced to support this, as well as to make it more general. The
changes are documented in the reference manual.
-
The syntax-table abstraction has been eliminated, and most procedures
and arguments involving syntax tables have been removed. One exception
is the
load
procedure, which still accepts a syntax-table
argument, but ignores it.
Although the 7.6.1 release had a workaround for problems with certain
AMD Athlon processors, the workaround was ineffective on
machines running Windows operating systems (and possibly OS/2 systems as
well). This version fixes that problem.
The hash-table abstraction is now always loaded. It's not necessary to
call load-option
prior to use of hash tables. For upwards
compatibility, calling `(load-option 'hash-table)' is still
permitted but does nothing.
-
Release 7.6.1 provides a workaround for a bug on some AMD
Athlon processors (specifically, models 1, 3, and 4). This bug causes
those processors to incorrectly execute certain kinds of self-modifying
code, including that used by MIT Scheme.
Release 7.6.1 also fixes a problem that caused the *PARSER and XML
subsystems not to load correctly on Windows and OS/2 systems.
A.2 Older Changes
These are the changes that occurred between releases 7.6.0 and 7.5.17:
-
The variable-reference machinery has been completely redesigned. The
new design provides two new features: (1) a procedure
link-variables
that can link two variable bindings with
different names (previously environment-link-name
could only
link bindings with the same name); (2) a new procedure
unbind-variable
that can remove a variable binding. Both of
these operations work only on "top-level" environments; they don't
work on environments created by invoking compiled procedures.
This is an incompatible change to the compiled-code
representation. All programs must be recompiled.
-
The "packaging" subsystem has been redesigned to make it more
flexible. The new design takes advantage of the improved
variable-linking mechanism to allow packages to export bindings using
names different from their internal names. Also, each package now
maintains an in-memory data structure that should (in principal) allow
it to be uninstalled or reinstalled. This subsystem is still
evolving; expect further changes in the future.
This subsystem is now included in the released binaries; it can be
loaded by `(load-option 'cref)'.
-
Compiled-code debugging information is now keyed to prevent using the
wrong debugging info when examining compiled code. This means that
in-memory data structures have an identifying key that is matched
against a corresponding key in the debugging-info file. The debugging
info is used only when the keys match.
-
MIT Scheme now has a non-validating XML parser that is
mostly conformant (except that it doesn't support UTF-16).
-
There is very limited support for UTF-8. At present this is
only used by the XML parser.
-
All string and character procedures now operate on
ISO-8859-1 rather than US-ASCII as the base
character set. This isn't real internationalization support, but at
least it broadens the character support slightly. This involved
changing a number of procedures that were formerly written in C and
are now written in Scheme, which may have a performance impact on some
uses.
-
The procedure
length
now detects circularities in its argument
and signals an error.
-
A new
rexp
facility provides a more readable syntax for
specifying regular expressions. This syntax can be compiled into the
usual syntax.
-
There is a new parser buffer abstraction that supports the
building of parsers with backtracking. An associated high-level
parser description language allows parsers to be described in a
BNF-like language that is compiled into efficient Scheme
code.
-
A new procedure
flo:finite?
returns `#f' for infinite or
`NaN' flonums and `#t' for all others.
-
The signal-handling code for GNU/Linux systems has been changed to
take advantage of additional information identifying the types of
arithmetic exceptions. This allows more accurate error messages to
be generated.
-
The following procedure names were changed:
Old name |
New name
|
list-transform-positive |
keep-matching-items
|
list-transform-negative |
delete-matching-items
|
list-search-positive |
find-matching-item
|
and the following new procedures were implemented:
keep-matching-items!
and delete-matching-items!
.
-
IMAIL now supports commands to sort folders according to
various criteria. The design is similar to that of Rmail.
-
IMAIL has been re-engineered to improve performance on very
large folders. There is now a disk cache for each IMAP
folder, to eliminate unnecessary network delays. Also, the summary
buffer previously used a quadratic algorithm to associate lines in the
summary with messages in the folder; it now uses a linear algorithm.
-
A new IMAIL command
imail-file-message
appends the
text of a message to a file more or less as it appears in the buffer.
This is intended to allow collecting messages into a file in a
human-readable format.
-
IMAIL used to determine the type of file folders by their
file names; now it examines the file contents instead. When creating
a new file folder, it prompts for the type.
This document was generated
by Chris Hanson on June, 17 2002
using texi2html