1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
This message announces the availability of Scheme release scm5c3.
New in scm5c3:
* patchlvl.h (SCMVERSION): Bumped from 5c2 to 5c3.
* gmalloc.c: Imported gmalloc.c from emacs 20.2.1.
(check_block): (check_frag_blocks): Debugging functions added.
* sys.c (scm_protect_temp): Added, is currently, and probably will
remain, a noop to force allocation of a SCM temporary on the
stack.
* scl.c (big2str): Added call to scm_protect_temp.
* eval.c (map): (for_each): Added calls to scm_protect_temp.
* rgx.c (lregcomp): Added call to scm_protect_temp.
* scl.c (big2str): Take address of SCM temporary as gc protection.
* dynl.c (l_dyn_link):
conditionalized message on verbose. Cleaned up message.
* Link.scm (link:link):
prepend ./ to non-absolute sun-dl library paths.
* scm.texi, scm.doc, scm.1, r4rstest.scm, README, Init5c2.scm, ANNOUNCE:
...-swiss => swissnet
* scm.h (verbose): read only macro for scm_verbose.
* repl.c (scm_verbose): renamed from verbose.
* scmfig.h (VERIFY_INTS): Added macro to print warnings if
interrupts are improperly allowed and CAREFUL_INTS is #defined.
(VOLATILE): Expands to `volatile' keyword if __STDC__ is #defined.
* sys.c (sys_errp): Interrupt safe system output port added.
(scm_estk_reset): (must_malloc): (must_realloc): (scm_make_cont):
Now should be run with ints deferred, no longer ever allow ints.
scm-estk_reset builds a new stack if scm_estk is BOOL_F.
* scm.c (process_signals): Modified to print deferred output to
sys_errp.
* eval.c (SCM_ENV_SAVE): (SCM_ENV_RESTORE): now ENV_SAVE,
ENV_RESTORE, local to eval.c
(apply): (ceval_1): Ints deferred before call to scm_make_cont,
which no longer allows ints.
(closure): Now takes the number of required closure arguments as a
second argument.
(m_lambda): Computes and memoizes the number of required arguments.
* repl.c (iprlist): Uses GCCDR so that fatal error messages during
gc may print better.
(handle_it): Call to scm_egc made conditional on NO_ENV_CACHE.
(growth_mon): (gc_start): (gc_end): (heap_report): Now use
sys_errp.
(ints_warn): Added for interrupt warnings using VERIFY_INTS.
(scm_stack_trace): Now completely prints stacks up to 20 deep,
rather than 10.
(def_err_response): Prints errobj if error is fatal.
(lroom): Made subr_1o for easier calling from C.
* Init5c2.scm (array-shape): No longer signals an error when
passed a non-array -- now returns whatever ARRAY-DIMENSIONS
returned (currently #f).
* scm.c (scm_proftimer): Also conditional on SIGALRM.
* sys.c (init_storage): Fixed initialization of tmp_errp so that
it is always correctly aligned.
* scm.c (process_signals): Fixed braino in code to search for
deferred signals.
(scmable_signal): Added POSIX signal unblocking call, conditional
on SIG_UNBLOCK, so Scheme signal handlers may be interrupted
before they exit.
* scm.c (scmable_signal): (err_signal): (init_signals):
(ignore_signals):
(unignore_signals): (restore_signals): Abstracted signal handling.
(fpe_signal): (bus_signal): (segv_signal): (alrm_signal):
(prof_signal): Removed.
* repl.c (process_signals): Moved to scm.c
* sys.c (must_realloc_cell): Now returns void.
* scm.c (prof_signal): (scm_proftimer): (ignore_signals):
(unignore_signals): Added handler for SIGPROF, raised via call to
setitimer (Scheme function PROFILE-TIMER).
* repl.c (handle_it): No longer saves scm_env, scm_env_tmp to
estk, they are protected by doing ecache gc.
(process_signals): Handles SIGPROF.
* sys.c (scm_fill_freelist): No longer always does gc.
(gc_mark): No longer bashes cdr of `free' cells, handle_it now
bashes more selectively.
(scm_egc): DEFER/ALLOW_INTS moved to minimize debugging ints_viol
messages -- some will still occur.
(scm_egc): No longer saves scm_env and scm_env_ptr to estk, they
are protected separately. To improve interrupt safety.
* unif.c (resizuve): eliminated unused variable `ptr'.
* sys.c (freeprint): Now prints cdr of new cell.
* repl.c (input_waiting): Now checks return value of select and
restarts if interrupted. This was causing CHAR-READY? to return
#T when no input was actually readable.
* sys.c (scm_egc): (scm_egc_copy_roots): Eliminated extra root
argument, made safe because EGC_ROOT is always called with ints
deferred.
(gc_mark): Check for ecache broken heart during mark -- fatal error.
(gc_sweep): Now uses HUGE_LENGTH instead of LENGTH for string
termination check.
(must_malloc_cell): (must_realloc_cell): Added.
(gc_for_alloc): Static function abstracts gc calls for malloc/realloc.
* unif.c (make_uve): Removed call to makestr in order to support
huge strings.
(resizuve): Now uses must_realloc_cell.
* subr.c (make_vector): (mkbig): (adjbig): Now use
must_malloc_cell, must_realloc_cell.
* socket.c (maksknm): Now uses must_malloc_cell.
* scm.h (ISYMNUM): Use only 8 bits for number, freeing some bits
for other uses.
* scl.c (makdbl): Now uses must_malloc_cell.
* rgx.c (lrgecomp): Now uses must_malloc_cell.
* repl.c (handle_it): Keep pointers to discarded new cells.
* record.c (rec_constr1): (init_record): Now use must_malloc_cell.
* posix.c (scm_getgroups): Now uses must_malloc_cell.
* dynl.c (l_dyn_link): (l_dyn_call): Moved NEWCELL out of deferred
ints sections. For dlopen versions, print more error messages.
* eval.c (macroexp1): now prints name of unbound variable.
(s_unbnd s_wtap): abstracted error message strings.
* eval.c (ceval_1): No longer make extra environment frame for
LETREC, since internal DEFINE is now rewritten.
* sys.c (scm_fill_freelist): added. Assures that at least
MIN_GC_YIELD cells are in freelis. This is used before returning
from interrupts.
* repl.c (handle_it): Discard 2 cells (because of CDR in NEWCELL).
Call scm_fill_freelist();
* Init5c2.scm: removed DEFINED? conditionals for old SCMs.
* sys.c (scm_estk_grow): Now pushes estk ptr, with ints deferred.
* eval.c (ENV_PUSH): (ENV_POP): Now done with DEFER_INTS_EGC to
prevent problems with interrupt handlers that run Scheme code.
* sys.c (scm_estk_grow): Protected critical section with
DEFER/ALLOW_INTS
(must_malloc): (must_realloc): Protected igc call with
DEFER/ALLOW_INTS.
(scm_egc): Added DEFER/ALLOW_INTS around call to igc -- prevents
interrupts violation message in debug mode.
(igc): Now SCM_ENV_SAVE before any gc marking to fix gc bug
tickled by running Scheme code from interrupts.
(scm_egc): (scm_egc_copy_roots): Now take a single argument, a gc
root. Simplifies handling of the case where scm_egc calls igc,
and possibly itself.
* repl.c (growth_mon): Now prints "shrank" instead of "grew" if
the relevant limit decreased.
(handle_it): Do env cache gc before applying interrupt
handler, to protect data on the estk, which might move.
-=-=-
Scm conforms to Revised^5 Report on the Algorithmic Language Scheme
and the IEEE P1178 specification. Scm is written in C and runs under
Amiga, Atari-ST, MacOS, MS-DOS, OS/2, NOS/VE, Unicos, VMS, Unix and
similar systems. ASCII and EBCDIC are supported.
Documentation is included explaining the many Scheme Language
extensions in scm, the internal representations, and how to extend or
include SCM in other programs. Documentation is online at:
http://swissnet.ai.mit.edu/~jaffer/SCM.html
SCM can be obtained via FTP (detailed instructions follow) from:
swissnet.ai.mit.edu:pub/scm/scm5c3.tar.gz
prep.ai.mit.edu:pub/gnu/jacal/scm5c3.tar.gz
SLIB is a portable Scheme library which SCM uses:
swissnet.ai.mit.edu:pub/scm/slib2c3.tar.gz
prep.ai.mit.edu:pub/gnu/jacal/slib2c3.tar.gz
JACAL is a symbolic math system written in Scheme:
swissnet.ai.mit.edu:pub/scm/jacal1a7.tar.gz
prep.ai.mit.edu:pub/gnu/jacal/jacal1a7.tar.gz
HOBBIT is a compiler for SCM code:
swissnet.ai.mit.edu:pub/scm/hobbit4d.tar.gz
SLIB-PSD is a portable debugger for Scheme (requires emacs editor):
swissnet.ai.mit.edu:pub/scm/slib-psd1-3.tar.gz
prep.ai.mit.edu:pub/gnu/jacal/slib-psd1-3.tar.gz
SMG-SCM is an SMG interface package which works with SCM on VMS.
swissnet.ai.mit.edu:pub/scm/smg-scm2a1.zip
prep.ai.mit.edu:pub/gnu/jacal/smg-scm2a1.zip
A VMS version of Unzip is available by anonymous FTP from
ftp.spc.edu:[ANONYMOUS.MACRO32]UNZIP.EXE.
TURTLSCM is a turtle graphics package which works with SCM on MS-DOS
or X11 machines:
swissnet.ai.mit.edu:pub/scm/turtlegr.tar.gz
prep.ai.mit.edu:pub/gnu/jacal/turtlegr.tar.gz
XSCM is a X windows interface package which works with SCM:
swissnet.ai.mit.edu:pub/scm/xscm-2.01.tar.gz
prep.ai.mit.edu:pub/gnu/jacal/xscm-2.01.tar.gz
MacSCM is a Macintosh applications building package which works with
SCM (similar to XSCM).
swissnet.ai.mit.edu:pub/scm/macscm.tar.Z
WB is a disk based, sorted associative array (B-tree) library for SCM.
Using WB, large databases can be created and managed from SCM.
swissnet.ai.mit.edu:pub/scm/wb1a2.tar.gz
SIMSYNCH is a digital logic simulation system written in SCM.
swissnet.ai.mit.edu:pub/scm/synch1a2.tar.gz
prep.ai.mit.edu:pub/gnu/jacal/synch1a3.tar.gz
DLD is a C library package allowing SCM to dynamically load object
files on VAX (Ultrix), Sun 3 (SunOS 3.4 and 4.0), SPARCstation
(SunOS 4.0), Sequent Symmetry (Dynix), Atari ST, and a.out Linux
systems.
prep.ai.mit.edu:pub/gnu/dld-3.3.tar.gz
#! implements "#!" (POSIX) shell-scripts for MS-DOS batch files.
swissnet.ai.mit.edu:pub/scm/#!.zip
-=-=-
ftp swissnet.ai.mit.edu (anonymous)
bin
cd pub/scm
get scm5c3.tar.gz
get slib2c3.tar.gz
or
ftp prep.ai.mit.edu (anonymous)
bin
cd pub/gnu/jacal
get scm5c3.tar.gz
get slib2c3.tar.gz
`scm5c3.tar.gz' is a gzipped tar file of the C code distribution.
`slib2c3.tar.gz' is a gzipped tar file of a Scheme Library.
Files in these directories with the ".gz" suffix are compressed with
patent-free gzip (no relation to zip). The program to uncompress them
is available from
prep.ai.mit.edu:pub/gnu/gzip-1.2.4.tar
prep.ai.mit.edu:pub/gnu/gzip-1.2.4.shar
prep.ai.mit.edu:pub/gnu/gzip-1.2.4.msdos.exe
Remember to use binary mode when transferring the files.
Be sure to get and read the GNU General Public License (COPYING).
It is included in scm5c3.tar.gz.
I sell IBM PC floppy disk sets with the source files, documentation,
and MS-DOS and i386 MS-DOS executables for $99.00. To order, send
e-mail to jaffer @ rice-chex.ai.mit.edu.
|