@iftex
@finalout
@end iftex
-@comment $Id: user.texinfo,v 1.24 1995/02/23 13:58:12 adams Exp $
+@comment $Id: user.texinfo,v 1.25 1995/04/28 13:47:22 adams Exp $
@comment %**start of header (This is for running Texinfo on a region.)
@setfilename user.info
@settitle MIT Scheme User's Manual
* Debugging::
* Loading Files::
* World Images::
+* Garbage Collection::
* Compiling Files::
* GNU Emacs Interface::
* Edwin::
* PC Operating Systems::
@end menu
-@node Unix, PC Operating Systems, , Installation
+@node Unix, PC Operating Systems, Installation, Installation
@section Unix
We will use as an example the installation for HP 9000 series 400
* HP-PA Installation::
@end menu
-@node HP-PA Installation, , , Unix
+@node HP-PA Installation, , Unix, Unix
@subsection HP-PA Installation
* PC Installation:: Installation
@end menu
-@node System Requirements, Manifest, , PC Operating Systems
+@node System Requirements, Manifest, PC Operating Systems, PC Operating Systems
@subsection System Requirements
MIT Scheme requires at least a 386SX with 8Mb RAM.
* PC Release Notes::
@end menu
-@node News, C Back-End Release Notes, , Release Notes
+@node News, C Back-End Release Notes, Release Notes, Release Notes
@section News
The last full release of the MIT Scheme system was version 7.1.3 in
* 7.2 News:: Changes from Release 7.1 to 7.2
@end menu
-@node 7.3 News, 7.2 News, , News
+@node 7.3 News, 7.2 News, News, News
@subsection Changes from Release 7.2 to 7.3
This is an abbreviated list of the changes that have been incorporated
* Problems with the C Back-End::
@end menu
-@node Notes on C Back-End, Problems with the C Back-End, , C Back-End Release Notes
+@node Notes on C Back-End, Problems with the C Back-End, C Back-End Release Notes, C Back-End Release Notes
@subsection General Notes
This section describes the general design of C back-end systems.
* Known Problems::
@end menu
-@node Known Problems, , , PC Release Notes
+@node Known Problems, , PC Release Notes, PC Release Notes
@subsection Known Problems in this Beta Release
@itemize @bullet
* Leaving Scheme::
@end menu
-@node Basics of Starting Scheme, Customizing Scheme, , Running Scheme
+@node Basics of Starting Scheme, Customizing Scheme, Running Scheme, Running Scheme
@section Basics of Starting Scheme
Usually, MIT Scheme is invoked by typing
* Edwin Environment Variables::
@end menu
-@node Microcode Environment Variables, Bchscheme Environment Variables, , Environment Variables
+@node Microcode Environment Variables, Bchscheme Environment Variables, Environment Variables, Environment Variables
@subsection Environment Variables Affecting the Microcode
These environment variables are referred to by the microcode (the
* The Current REPL Environment::
@end menu
-@node The Prompt and Level Number, Interrupting, , REPL
+@node The Prompt and Level Number, Interrupting, REPL, REPL
@section The Prompt and Level Number
@cindex prompt, REPL
* Advising Procedures::
@end menu
-@node Subproblems and Reductions, Debugger, , Debugging
+@node Subproblems and Reductions, Debugger, Debugging, Debugging
@section Subproblems and Reductions
@cindex subproblem
when Scheme first starts; see the @code{-load} command line option for
details.
-@node World Images, Compiling Files, Loading Files, Top
+@node World Images, Garbage Collection, Loading Files, Top
@chapter World Images
@cindex world image
Note that @code{dump-world} is unlikely to work with this release as MIT
Scheme now uses shared libraries.
-@node Compiling Files, GNU Emacs Interface, World Images, Top
+@node Garbage Collection, Compiling Files, World Images, Top
+@chapter Garbage Collection
+
+This section describes procedures that control garbage collection. See
+@pxref{Customizing Scheme} for a discussion of how MIT Scheme uses
+memory.
+
+@deffn {procedure+} gc-flip [safety-margin]
+Forces a garbage collection to occur. Returns the number of words of
+available storage after collection.
+
+@var{Safety-margin} determines the number of words of storage available
+for system tasks in-between detecting the need for a garbage collection
+and entering the garbage collector proper. An example of such a system
+task is changing the run-light to show `gc' when scheme is running under
+Emacs.
+@end deffn
+
+@deffn {procedure+} set-gc-notification! on?
+Controls whether the user is notified of garbage collections. If
+@var{on?} is @code{#F}, the user is not notified, otherwise the user is
+notified. The default is no notification.
+
+The notification appears as a single line like the following, showing
+how many garbage collections have occured, the time taken to perform the
+garbage collection and the free storage remaining (in words) after
+collection.
+
+@example
+GC 5: took: 0.50 (8%) CPU time, 0.70 (2%) real time; free: 364346
+@end example
+
+To operate comfortably, the amount of free storage after garbage
+collection should be a substantial proportion of the heap size. If the
+percentage CPU time is consistently high (over 20%), you should consider
+running with a larger heap. A rough rule of thumb to halve the GC
+overhead is to take the amount of free storage, divide by 1000, and add
+this figure to the current value used for the @samp{-heap} command line
+option. Unfortunately there is no way to adjust the heap size without
+restarting Scheme.
+@end deffn
+
+@deffn purify item [pure-space? [queue?]]
+@deffnx flush-purification-queue!
+** We should say something about these **
+@end deffn
+
+
+@node Compiling Files, GNU Emacs Interface, Garbage Collection, Top
@chapter Compiling Files
Note: the procedures described in this section are only available in the
* Declarations::
@end menu
-@node Compilation Procedures, Declarations, , Compiling Files
+@node Compilation Procedures, Declarations, Compiling Files, Compiling Files
@section Compilation Procedures
@deffn {procedure+} cf filename [destination]
* Reduction of Operators::
@end menu
-@node Standard Names, In-line Coding, , Declarations
+@node Standard Names, In-line Coding, Declarations, Declarations
@subsection Standard Names
Normally, all files have a line
* Comparison of Edwin 3.82 to Emacs 18.57::
@end menu
-@node Starting Edwin, Leaving Edwin, , Edwin
+@node Starting Edwin, Leaving Edwin, Edwin, Edwin
@section Starting Edwin
To use Edwin, start Scheme with a world image containing Edwin (for
* Edwin Bugs::
@end menu
-@node Incompatibilities of Edwin, Deficiencies of Edwin, , Comparison of Edwin 3.82 to Emacs 18.57
+@node Incompatibilities of Edwin, Deficiencies of Edwin, Comparison of Edwin 3.82 to Emacs 18.57, Comparison of Edwin 3.82 to Emacs 18.57
@subsection Incompatibilities
These are differences in design, unlikely to be `fixed'.