diff options
Diffstat (limited to 'SCM/README')
-rw-r--r-- | SCM/README | 381 |
1 files changed, 0 insertions, 381 deletions
diff --git a/SCM/README b/SCM/README deleted file mode 100644 index e6d4e57..0000000 --- a/SCM/README +++ /dev/null @@ -1,381 +0,0 @@ -This directory contains the distribution of scm5e5. SCM conforms to -Revised^5 Report on the Algorithmic Language Scheme and the IEEE P1178 -specification. SCM runs under Amiga, Atari-ST, MacOS, MS-DOS, OS/2, -NOS/VE, Unicos, VMS, Unix and similar systems. SCM supports the SLIB -Scheme library; both SCM and SLIB are GNU packages. - - `http://swiss.csail.mit.edu/~jaffer/SCM' - -0.1 Manifest -============ - -`.gdbinit' provides commands for debugging SCM with GDB -`COPYING' GNU GENERAL PUBLIC LICENSE -`COPYING.LESSER' GNU LESSER GENERAL PUBLIC LICENSE -`ChangeLog' changes to SCM. -`Idiffer.scm' Linear-space O(PN) sequence comparison. -`Iedline.scm' Gnu readline input editing. -`Init.scm' Scheme initialization. -`Link.scm' Dynamic link/loading. -`Macro.scm' Supports Syntax-Rules Macros. -`Makefile' builds SCMLIT using the `make' program. -`QUICKREF' Quick Reference card for R4RS and IEEE Scheme. -`README' contains a MANIFEST, INSTALLATION INSTRUCTIONS, hints - for EDITING SCHEME CODE, and a TROUBLE SHOOTING GUIDE. -`Transcen.scm' inexact builtin procedures. -`bench.scm' computes and records performance statistics of pi.scm. -`build.bat' invokes build.scm for MS-DOS -`build.scm' database for compiling and linking new SCM programs. -`byte.c' strings as bytes. -`bytenumb.c' Byte-number conversions. -`compile.scm' Hobbit compilation to C. -`continue-ia64.S'replaces make_root_continuation(), make_continuation(), - and dynthrow() in continue.c -`continue.c' continuations. -`continue.h' continuations. -`crs.c' interactive terminal control. -`debug.c' debugging, printing code. -`differ.c' Linear-space O(PN) sequence comparison. -`dynl.c' dynamically load object files. -`ecrt0.c' discover the start of initialized data space - dynamically at runtime. -`edline.c' Gnu readline input editing (get - ftp.sys.toronto.edu:/pub/rc/editline.shar). -`eval.c' evaluator, apply, map, and foreach. -`example.scm' example from R4RS which uses inexact numbers. -`fdl.texi' GNU Free Documentation License. -`findexec.c' find the executable file function. -`get-contoffset-ia64.c'makes contoffset-ia64.S for inclusion by continue-ia64.S -`gmalloc.c' Gnu malloc(); used for unexec. -`gsubr.c' make_gsubr for arbitrary (< 11) arguments to C - functions. -`ioext.c' system calls in common between PC compilers and unix. -`lastfile.c' find the point in data space between data and libraries. -`macos-config.h' Included by unexmacosx.c and lastfile.c. -`mkimpcat.scm' build SCM-specific catalog for SLIB. -`patchlvl.h' patchlevel of this release. -`pi.c' computes digits of pi [cc -o pi pi.c;time pi 100 5]. -`pi.scm' computes digits of pi [type (pi 100 5)]. Test - performance against pi.c. -`posix.c' posix library interface. -`pre-crt0.c' loaded before crt0.o on machines which do not remap - part of the data space into text space in unexec. -`r4rstest.scm' tests conformance with Scheme specifications. -`ramap.c' array mapping -`record.c' proposed `Record' user definable datatypes. -`repl.c' error, read-eval-print loop, read, write and load. -`rgx.c' string regular expression match. -`rope.c' C interface functions. -`sc2.c' procedures from R2RS and R3RS not in R4RS. -`scl.c' inexact arithmetic -`scm.1' unix style man page. -`scm.c' initialization, interrupts, and non-IEEE utility - functions. -`scm.doc' man page generated from scm.1. -`scm.h' data type and external definitions of SCM. -`scm.texi' SCM installation and use. -`scmfig.h' contains system dependent definitions. -`scmmain.c' initialization, interrupts, and non-IEEE utility - functions. -`script.c' utilities for running as `#!' script. -`setjump.h' continuations, stacks, and memory allocation. -`setjump.mar' provides setjump and longjump which do not use $unwind - utility on VMS. -`setjump.s' provides setjump and longjump for the Cray YMP. -`socket.c' BSD socket interface. -`split.scm' example use of crs.c. Input, output, and diagnostic - output directed to separate windows. -`subr.c' the rest of IEEE functions. -`sys.c' call-with-current-continuation, opening and closing - files, storage allocation and garbage collection. -`time.c' functions dealing with time. -`ugsetjump.s' provides setjump and longjump which work on Ultrix VAX. -`unexalpha.c' Convert a running program into an Alpha executable file. -`unexec.c' Convert a running program into an executable file. -`unexelf.c' Convert a running ELF program into an executable file. -`unexhp9k800.c' Convert a running HP-UX program into an executable file. -`unexmacosx.c' Convert a running program into an executable file under - MacOS X. -`unexsgi.c' Convert a running program into an IRIX executable file. -`unexsunos4.c' Convert a running program into an executable file. -`unif.c' uniform vectors. -`unix.c' non-posix system calls on unix systems. - - - -File: scm.info, Node: SLIB, Next: Building SCM, Prev: Making SCM, Up: Installing SCM - -2.2 SLIB -======== - -[SLIB] is a portable Scheme library meant to provide compatibility and -utility functions for all standard Scheme implementations. Although -SLIB is not _neccessary_ to run SCM, I strongly suggest you obtain and -install it. Bug reports about running SCM without SLIB have very low -priority. SLIB is available from the same sites as SCM: - - * swiss.csail.mit.edu:/pub/scm/slib-3b1.tar.gz - - * ftp.gnu.org:/pub/gnu/jacal/slib-3b1.tar.gz - -Unpack SLIB (`tar xzf slib-3b1.tar.gz' or `unzip -ao slib-3b1.zip') in -an appropriate directory for your system; both `tar' and `unzip' will -create the directory `slib'. - -Then create a file `require.scm' in the SCM "implementation-vicinity" -(this is the same directory as where the file `Init5e5.scm' is -installed). `require.scm' should have the contents: - - (define (library-vicinity) "/usr/local/lib/slib/") - -where the pathname string `/usr/local/lib/slib/' is to be replaced by -the pathname into which you installed SLIB. Absolute pathnames are -recommended here; if you use a relative pathname, SLIB can get confused -when the working directory is changed (*note chmod: I/O-Extensions.). -The way to specify a relative pathname is to append it to the -implementation-vicinity, which is absolute: - - (define library-vicinity - (let ((lv (string-append (implementation-vicinity) "../slib/"))) - (lambda () lv))) - -Alternatively, you can set the (shell) environment variable -`SCHEME_LIBRARY_PATH' to the pathname of the SLIB directory (*note -SCHEME_LIBRARY_PATH: SCM Variables.). If set, the environment variable -overrides `require.scm'. Again, absolute pathnames are recommended. - - - -File: scm.info, Node: Making SCM, Next: SLIB, Prev: Installing SCM, Up: Installing SCM - -2.1 Making SCM -============== - -The SCM distribution has "Makefile" which contains rules for making -"scmlit", a "bare-bones" version of SCM sufficient for running `build'. -`build' is used to compile (or create scripts to compile) full -featured versions (*note Building SCM::). - -Makefiles are not portable to the majority of platforms. If `Makefile' -works for you, good; If not, I don't want to hear about it. If you -need to compile SCM without build, there are several ways to proceed: - - * Use the build (http://swiss.csail.mit.edu/~jaffer/buildscm.html) - web page to create custom batch scripts for compiling SCM. - - * Use SCM on a different platform to run `build' to create a script - to build SCM; - - * Use another implementation of Scheme to run `build' to create a - script to build SCM; - - * Create your own script or `Makefile'. - - - -File: scm.info, Node: Editing Scheme Code, Next: Debugging Scheme Code, Prev: SCM Session, Up: Operational Features - -3.7 Editing Scheme Code -======================= - - -- Function: ed arg1 ... - The value of the environment variable `EDITOR' (or just `ed' if it - isn't defined) is invoked as a command with arguments ARG1 .... - - -- Function: ed filename - If SCM is compiled under VMS `ed' will invoke the editor with a - single the single argument FILENAME. - -Gnu Emacs: - Editing of Scheme code is supported by emacs. Buffers holding - files ending in .scm are automatically put into scheme-mode. - - If your Emacs can run a process in a buffer you can use the Emacs - command `M-x run-scheme' with SCM. Otherwise, use the emacs - command `M-x suspend-emacs'; or see "other systems" below. - -Epsilon (MS-DOS): - There is lisp (and scheme) mode available by use of the package - `LISP.E'. It offers several different indentation formats. With - this package, buffers holding files ending in `.L', `.LSP', `.S', - and `.SCM' (my modification) are automatically put into lisp-mode. - - It is possible to run a process in a buffer under Epsilon. With - Epsilon 5.0 the command line options `-e512 -m0' are neccessary to - manage RAM properly. It has been reported that when compiling SCM - with Turbo C, you need to `#define NOSETBUF' for proper operation - in a process buffer with Epsilon 5.0. - - One can also call out to an editor from SCM if RAM is at a - premium; See "under other systems" below. - -other systems: - Define the environment variable `EDITOR' to be the name of the - editing program you use. The SCM procedure `(ed arg1 ...)' will - invoke your editor and return to SCM when you exit the editor. The - following definition is convenient: - - (define (e) (ed "work.scm") (load "work.scm")) - - Typing `(e)' will invoke the editor with the file of interest. - After editing, the modified file will be loaded. - - - -File: scm.info, Node: Problems Compiling, Next: Problems Linking, Prev: Automatic C Preprocessor Definitions, Up: Installing SCM - -2.8 Problems Compiling -====================== - -FILE PROBLEM / MESSAGE HOW TO FIX -*.c include file not found. Correct the status of - STDC_HEADERS in scmfig.h. - fix #include statement or add - #define for system type to - scmfig.h. -*.c Function should return a value. Ignore. - Parameter is never used. - Condition is always false. - Unreachable code in function. -scm.c assignment between incompatible Change SIGRETTYPE in scm.c. - types. -time.c CLK_TCK redefined. incompatablility between - <stdlib.h> and <sys/types.h>. - Remove STDC_HEADERS in scmfig.h. - Edit <sys/types.h> to remove - incompatability. -subr.c Possibly incorrect assignment Ignore. - in function lgcd. -sys.c statement not reached. Ignore. - constant in conditional - expression. -sys.c undeclared, outside of #undef STDC_HEADERS in scmfig.h. - functions. -scl.c syntax error. #define SYSTNAME to your system - type in scl.c (softtype). - - - -File: scm.info, Node: Problems Linking, Next: Problems Running, Prev: Problems Compiling, Up: Installing SCM - -2.9 Problems Linking -==================== - -PROBLEM HOW TO FIX -_sin etc. missing. Uncomment LIBS in makefile. - - - -File: scm.info, Node: Problems Running, Next: Testing, Prev: Problems Linking, Up: Installing SCM - -2.10 Problems Running -===================== - -PROBLEM HOW TO FIX -Opening message and then machine Change memory model option to C -crashes. compiler (or makefile). - Make sure sizet definition is - correct in scmfig.h. - Reduce the size of HEAP_SEG_SIZE in - setjump.h. -Input hangs. #define NOSETBUF -ERROR: heap: need larger initial. Increase initial heap allocation - using -a<kb> or INIT_HEAP_SIZE. -ERROR: Could not allocate. Check sizet definition. - Use 32 bit compiler mode. - Don't try to run as subproccess. -remove <FLAG> in scmfig.h and Do so and recompile files. -recompile scm. -add <FLAG> in scmfig.h and -recompile scm. -ERROR: Init5e5.scm not found. Assign correct IMPLINIT in makefile - or scmfig.h. - Define environment variable - SCM_INIT_PATH to be the full - pathname of Init5e5.scm. -WARNING: require.scm not found. Define environment variable - SCHEME_LIBRARY_PATH to be the full - pathname of the scheme library - [SLIB]. - Change library-vicinity in - Init5e5.scm to point to library or - remove. - Make sure the value of - (library-vicinity) has a trailing - file separator (like / or \). - - - -File: scm.info, Node: Testing, Next: Reporting Problems, Prev: Problems Running, Up: Installing SCM - -2.11 Testing -============ - -Loading `r4rstest.scm' in the distribution will run an [R4RS] -conformance test on `scm'. - - > (load "r4rstest.scm") - -| - ;loading "r4rstest.scm" - SECTION(2 1) - SECTION(3 4) - #<primitive-procedure boolean?> - #<primitive-procedure char?> - #<primitive-procedure null?> - #<primitive-procedure number?> - ... - -Loading `pi.scm' in the distribution will enable you to compute digits -of pi. - - > (load "pi") - ;loading "pi" - ;done loading "pi.scm" - ;Evaluation took 20 ms (0 in gc) 767 cells work, 233.B other - #<unspecified> - > (pi 100 5) - 00003 14159 26535 89793 23846 26433 83279 50288 41971 69399 - 37510 58209 74944 59230 78164 06286 20899 86280 34825 34211 - 70679 - ;Evaluation took 550 ms (60 in gc) 36976 cells work, 1548.B other - #<unspecified> - -Loading `bench.scm' will compute and display performance statistics of -SCM running `pi.scm'. `make bench' or `make benchlit' appends the -performance report to the file `BenchLog', facilitating tracking -effects of changes to SCM on performance. - -PROBLEM HOW TO FIX -Runs some and then machine crashes. See above under machine crashes. -Runs some and then ERROR: ... Remove optimization option to C -(after a GC has happened). compiler and recompile. - #define SHORT_ALIGN in `scmfig.h'. -Some symbol names print incorrectly. Change memory model option to C - compiler (or makefile). - Check that HEAP_SEG_SIZE fits - within sizet. - Increase size of HEAP_SEG_SIZE (or - INIT_HEAP_SIZE if it is smaller - than HEAP_SEG_SIZE). -ERROR: Rogue pointer in Heap. See above under machine crashes. -Newlines don't appear correctly in Check file mode (define OPEN_... in -output files. `Init5e5.scm'). -Spaces or control characters appear Check character defines in -in symbol names. `scmfig.h'. -Negative numbers turn positive. Check SRS in `scmfig.h'. -;ERROR: bignum: numerical overflow Increase NUMDIGS_MAX in `scmfig.h' - and recompile. -VMS: Couldn't unwind stack. #define CHEAP_CONTINUATIONS in - `scmfig.h'. -VAX: botched longjmp. - -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 _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 `continue.c'. - |