From 302e3218b7d487539ec305bf23881a6ee7d5be99 Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:29 -0800 Subject: Import Upstream version 5e1 --- scm.texi | 434 ++++++++++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 319 insertions(+), 115 deletions(-) (limited to 'scm.texi') diff --git a/scm.texi b/scm.texi index 2f87364..698bb6b 100644 --- a/scm.texi +++ b/scm.texi @@ -55,7 +55,7 @@ This manual documents the SCM Scheme implementation. SCM version @value{SCMVERSION} was released @value{SCMDATE}. The most recent information about SCM can be found on SCM's @dfn{WWW} home page: -@center @url{http://swissnet.ai.mit.edu/~jaffer/SCM} +@center @url{http://swiss.csail.mit.edu/~jaffer/SCM} Copyright (C) 1990-1999 Free Software Foundation @@ -105,9 +105,9 @@ The most recent information about SCM can be found on SCM's @dfn{WWW} home page: @ifset html - + @end ifset -@center @url{http://swissnet.ai.mit.edu/~jaffer/SCM} +@center @url{http://swiss.csail.mit.edu/~jaffer/SCM} @ifset html @end ifset @@ -205,6 +205,58 @@ Authors have assigned their SCM copyrights to: @center Free Software Foundation, Inc. @center 59 Temple Place, Suite 330, Boston, MA 02111, USA +@menu +* The SCM License:: +* SIOD copyright:: +@end menu + +@node The SCM License, SIOD copyright, Copying, Copying +@subsection The SCM License + +The license of SCM consists of the GNU GPL plus a special statement +giving blanket permission to link with non-free software. This is the +license statement as found in any individual file that it applies to: + +@quotation +This program is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by the +Free Software Foundation; either version 2, or (at your option) any +later version. + +This program is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this software; see the file COPYING. If not, write to the Free +Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA + +As a special exception, the Free Software Foundation gives permission +for additional uses of the text contained in its release of SCM. + +The exception is that, if you link the SCM library with other files to +produce an executable, this does not by itself cause the resulting +executable to be covered by the GNU General Public License. Your use of +that executable is in no way restricted on account of linking the SCM +library code into it. + +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. + +This exception applies only to the code released by the Free Software +Foundation under the name SCM. If you copy code from other Free +Software Foundation releases into a copy of SCM, as the General Public +License permits, the exception does not apply to the code that you add +in this way. To avoid misleading anyone as to the status of such +modified files, you must delete this exception notice from them. + +If you write modifications of your own for SCM, it is your choice +whether to permit this exception to apply to your modifications. If you +do not wish that, delete this exception notice. +@end quotation + @noindent Permission to use, copy, modify, distribute, and sell this software and its documentation for any purpose is hereby granted without fee, @@ -237,7 +289,8 @@ THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. -@heading SIOD copyright +@node SIOD copyright, , The SCM License, Copying +@subsection SIOD copyright @sp 1 @center COPYRIGHT (c) 1989 BY @@ -451,7 +504,7 @@ proceed: @itemize @bullet @item -Use the @uref{http://swissnet.ai.mit.edu/~jaffer/buildscm.html, build} +Use the @uref{http://swiss.csail.mit.edu/~jaffer/buildscm.html, build} web page to create custom batch scripts for compiling SCM. @item @@ -480,34 +533,34 @@ low priority. SLIB is available from the same sites as SCM: @ifclear html @itemize @bullet @item -swissnet.ai.mit.edu:/pub/scm/slib3a1.tar.gz +swiss.csail.mit.edu:/pub/scm/slib3a2.tar.gz @item -ftp.gnu.org:/pub/gnu/jacal/slib3a1.tar.gz +ftp.gnu.org:/pub/gnu/jacal/slib3a2.tar.gz @item -ftp.cs.indiana.edu:/pub/scheme-repository/imp/slib3a1.tar.gz +ftp.cs.indiana.edu:/pub/scheme-repository/imp/slib3a2.tar.gz @end itemize @end ifclear @ifset html @itemize @bullet @item - -http://swissnet.ai.mit.edu/ftpdir/scm/slib3a1.zip + +http://swiss.csail.mit.edu/ftpdir/scm/slib3a2.zip @item - -ftp.gnu.org:/pub/gnu/jacal/slib3a1.tar.gz + +ftp.gnu.org:/pub/gnu/jacal/slib3a2.tar.gz @item - -ftp.cs.indiana.edu:/pub/scheme-repository/code/lib/slib3a1.tar.gz + +ftp.cs.indiana.edu:/pub/scheme-repository/code/lib/slib3a2.tar.gz @end itemize @end ifset @noindent -Unpack SLIB (@samp{tar xzf slib3a1.tar.gz} or @samp{unzip -ao -slib3a1.zip}) in an appropriate directory for your system; both +Unpack SLIB (@samp{tar xzf slib3a2.tar.gz} or @samp{unzip -ao +slib3a2.zip}) in an appropriate directory for your system; both @code{tar} and @code{unzip} will create the directory @file{slib}. @noindent @@ -635,7 +688,7 @@ the SCM command line options. @deffn {Build Option} -p @var{platform-name} @deffnx {Build Option} ---platform=@var{platform-name} specifies that the compilation should be for a computer/operating-system -combination called @var{platform-name}. @emph{Note:} The case of +combination called @var{platform-name}. @emph{Note@:} The case of @var{platform-name} is distinguised. The current @var{platform-name}s are all lower-case. @@ -663,9 +716,9 @@ Options for libscm.a. @item pg.opt Options for pgscm, which instruments C functions. @item udscm4.opt -Options for targets udscm4 and myscm4 (scm). +Options for targets udscm4 and dscm4 (scm). @item udscm5.opt -Options for targets udscm5 and myscm5 (scm). +Options for targets udscm5 and dscm5 (scm). @end table The Makefile creates options files it depends on only if they do not @@ -1036,6 +1089,7 @@ __MSDOS__ Turbo C, Borland C, and DJGPP __NetBSD__ NetBSD nosve Control Data NOS/VE SVR2 System V Revision 2. +sun SunOS __SVR4 SunOS THINK_C developement environment for the Macintosh ultrix VAX with ULTRIX operating system. @@ -1248,13 +1302,14 @@ tracking effects of changes to SCM on performance. @table @asis @item Sparc(SUN-4) heap is growing out of control -You are experiencing a GC problem peculiar to the Sparc. The problem is -that SCM doesn't know how to clear register windows. Every location -which is not reused still gets marked at GC time. This causes lots of -stuff which should be collected to not be. This will be a problem with -any @emph{conservative} GC until we find what instruction will clear the -register windows. This problem is exacerbated by using lots of -call-with-current-continuations. +You are experiencing a GC problem peculiar to the Sparc. The problem +is that SCM doesn't know how to clear register windows. Every +location which is not reused still gets marked at GC time. This +causes lots of stuff which should be collected to not be. This will +be a problem with any @emph{conservative} GC until we find what +instruction will clear the register windows. This problem is +exacerbated by using lots of call-with-current-continuations. +A possible fix for dynthrow() is commented out in @file{continue.c}. @end table @node Reporting Problems, , Testing, Installing SCM @@ -1295,6 +1350,7 @@ vendor is recommended. * SCM Session:: * Editing Scheme Code:: * Debugging Scheme Code:: +* Debugging Continuations:: * Errors:: * Memoized Expressions:: * Internal State:: @@ -1658,7 +1714,7 @@ After editing, the modified file will be loaded. @end table -@node Debugging Scheme Code, Errors, Editing Scheme Code, Operational Features +@node Debugging Scheme Code, Debugging Continuations, Editing Scheme Code, Operational Features @section Debugging Scheme Code @noindent @@ -1716,19 +1772,40 @@ a list of these formerly traced identifiers. The routines I use most frequently for debugging are: -@deffn Procedure print arg1 @dots{} +@defun print arg1 @dots{} @code{Print} writes all its arguments, separated by spaces. @code{Print} outputs a @code{newline} at the end and returns the value of the last argument. -One can just insert @samp{(print '} and @samp{)} around an -expression in order to see its value as a program operates. +One can just insert @samp{(print '