@iftex
@finalout
@end iftex
-@comment $Id: user.texinfo,v 1.92 2002/02/12 14:54:42 cph Exp $
+@comment $Id: user.texinfo,v 1.93 2002/03/13 05:56:36 cph Exp $
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename user.info
@settitle MIT Scheme User's Manual
@title{MIT Scheme User's Manual}
@subtitle Edition 1.88
@subtitle for Scheme Release 7.7.0
-@subtitle 12 February 2002
+@subtitle 13 March 2002
@author by Stephen Adams
@author Chris Hanson
@author and the MIT Scheme Team
@node Installation, Running Scheme, Introduction, Top
@chapter Installation
-This chapter describes how to install MIT Scheme release 7.6. The
+This chapter describes how to install MIT Scheme release 7.7. The
release is supported under several different operating systems: unix,
OS/2, and Windows. Read the section detailing the installation for the
operating system that you are using.
cd /usr/local
rm -f bin/scheme bin/bchscheme
rm -rf lib/mit-scheme
-gzip -cd scheme-7.6.0-ix86-gnu-linux.tar.gz | tar xvf -
+gzip -cd scheme-7.7.0-ix86-gnu-linux.tar.gz | tar xvf -
@end group
@end example
@example
mkdir temp
cd temp
-gzip -cd scheme-7.6.0-ix86-gnu-linux.tar.gz | tar xvf -
+gzip -cd scheme-7.7.0-ix86-gnu-linux.tar.gz | tar xvf -
@end example
@item
name of the folder in which the shortcuts are to be placed.
To uninstall the software, open up the @samp{Control Panel}, run
-@samp{Add/Remove Programs}, and double-click on @samp{MIT Scheme 7.6}.
+@samp{Add/Remove Programs}, and double-click on @samp{MIT Scheme 7.7}.
@node OS/2 Installation, Optional Configuration, Windows Installation, Installation
@section OS/2 Installation
@example
@group
-Scheme saved on Monday November 26, 2001 at 2:38:09 PM
- Release 7.6.0
- Microcode 14.5
- Runtime 14.192
+Scheme saved on Tuesday March 12, 2002 at 3:34:25 PM
+ Release 7.7.0
+ Microcode 14.8
+ Runtime 15.0
@end group
@end example
@table @asis
@item Traversing subproblems
-@cindex Debugger command: u
-@cindex Debugger command: d
-@cindex Debugger command: g
-@cindex Debugger command: h
+@cindex Debugger command u
+@cindex Debugger command d
+@cindex Debugger command g
+@cindex Debugger command h
The debugger has several commands for traversing the structure of the
continuation. It is useful to think of the continuation as a
two-dimensional structure: a backbone consisting of subproblems, and
command will show you a brief summary of all of the subproblems.
@item Traversing reductions
-@cindex Debugger command: r
-@cindex Debugger command: b
-@cindex Debugger command: f
+@cindex Debugger command r
+@cindex Debugger command b
+@cindex Debugger command f
If the subproblem description says that @samp{The execution history for
this subproblem contains @var{N} reductions}, then there is a ``rib'' of
reductions for this subproblem. You can see a summary of the reductions
@kbd{f}, you'll move to the next newer subproblem.
@item Examining subproblems and reductions
-@cindex Debugger command: t
-@cindex Debugger command: l
+@cindex Debugger command t
+@cindex Debugger command l
The following commands will show you additional information about the
currently selected subproblem or reduction. The @kbd{t} command will
reprint the standard description (in case it has scrolled off the
variables, as bound by @code{lambda} or @code{let}. These frames
collectively represent the block structure of a given environment.
-@cindex Debugger command: p
-@cindex Debugger command: s
+@cindex Debugger command p
+@cindex Debugger command s
Once an environment frame is selected by the debugger, it is possible to
select the parent frame of that frame (in other words, the enclosing
block) using the @kbd{p} command. You can subsequently return to the
selected frame.
@item Examining environments
-@cindex Debugger command: a
-@cindex Debugger command: c
-@cindex Debugger command: e
-@cindex Debugger command: o
-@cindex Debugger command: v
-@cindex Debugger command: w
+@cindex Debugger command a
+@cindex Debugger command c
+@cindex Debugger command e
+@cindex Debugger command o
+@cindex Debugger command v
+@cindex Debugger command w
The following commands allow you to examine the contents of the selected
frame. The @kbd{c} command prints the bindings of the current frame.
The @kbd{a} command prints the bindings of the current frame and each
selected environment frame.
@item Continuing the computation
-@cindex Debugger command: k
+@cindex Debugger command k
There are three commands that can be used to restart the computation
that you are examining. The first is the @kbd{k} command, which shows
the currently active restarts, prompts you to select one, and passes
with that value as its sole argument. The two commands differ only in
which internal continuation is to be invoked.
-@cindex Debugger command: j
+@cindex Debugger command j
The @kbd{j} command invokes the continuation associated with
the selected subproblem. What this means is as follows: when the
description of a subproblem is printed, it consists of two parts, and
being executed'' will evaluate to, and bypassing further execution of
that code.
-@cindex Debugger command: z
+@cindex Debugger command z
The @kbd{z} command is slightly different. It instead invokes the
continuation that is waiting for the outer ``expression'' to finish. In
other words, it is the same as invoking the @kbd{j} command in the next
command followed by the @kbd{j} command.
@item Wizard commands
-@cindex Debugger command: m
-@cindex Debugger command: x
-@cindex Debugger command: y
+@cindex Debugger command m
+@cindex Debugger command x
+@cindex Debugger command y
The @kbd{m}, @kbd{x}, and @kbd{y} commands are for Scheme wizards. They
are used to debug the MIT Scheme implementation. If you want to find
out what they do, read the source code.
@item Miscellaneous commands
-@cindex Debugger command: i
-@cindex Debugger command: q
-@cindex Debugger command: ?
+@cindex Debugger command i
+@cindex Debugger command q
+@cindex Debugger command ?
The @kbd{i} command will reprint the error message for the error that
was in effect immediately before the debugger started. The @kbd{q}
command quits the debugger, returning to the caller. And the @kbd{?}
Algorithmic Language Scheme}, but not to the @cite{Revised^5 Report on
The Algorithmic Language Scheme}.
+@menu
+* Recent Changes::
+* Older Changes::
+@end menu
+
+@node Recent Changes, Older Changes, Release Notes, Release Notes
+@appendixsec Recent Changes
+
+These are the changes since release 7.6.0:
+
+@itemize @bullet
+@item
+Release 7.7.0 provides ``hygienic'' macro support, as defined in
+@cite{R^4RS} and @cite{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:
+
+@itemize @bullet
+@item
+These syntactic keywords have been eliminated:
+@code{define-macro},
+@code{in-package},
+@code{macro},
+@code{make-environment},
+@code{scode-quote},
+@code{unassigned?}, and
+@code{using-syntax}.
+
+@item
+The syntactic keyword @code{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.@: @code{lambda}, @code{let}).
+
+@item
+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.
+
+@item
+The syntax-table abstraction has been eliminated, and most procedures
+and arguments involving syntax tables have been removed. One exception
+is the @code{load} procedure, which still accepts a syntax-table
+argument, but ignores it.
+@end itemize
+
+Although the 7.6.1 release had a workaround for problems with certain
+@acronym{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 @code{load-option} prior to use of hash tables. For upwards
+compatibility, calling @samp{(load-option 'hash-table)} is still
+permitted but does nothing.
+
+@item
+Release 7.6.1 provides a workaround for a bug on some @acronym{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.
+@end itemize
+
+@node Older Changes, , Recent Changes, Release Notes
+@appendixsec Older Changes
+
+These are the changes that occurred between releases 7.6.0 and 7.5.17:
+
@itemize @bullet
@item
The variable-reference machinery has been completely redesigned. The