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
|
This message announces the availability of Scheme release scm5d2.
New in scm5d2:
* Makefile (install): Make sure $(libscmdir)require.scm exists.
(libscmdir): Use instead of IMPLPATH.
* repl.c (scm_top_level): Corrected error test on exit in case 0
is not success.
(repl): Return MAKINUM(EXIT_SUCCESS) when exiting an interactive
session on EOF, this should not be an error.
* build.scm (define-compile-commands): Added.
(defcommand): Added.
(platform): formatted; simplified names.
* Makefile (features.txi): Added.
* scm.texi (Build Options): take feature documentation from
"features.txi".
* build (make-features-txi): Creates documentation of build
features from 'features table.
* build.scm (build:define-feature): Added. Feature definitions
moved to top level.
* Init5d1.scm (comment): Added.
(read:sharp): Added `#;' comment syntax, *feature* SHARP:SEMI.
* sys.c (scm_env_v2lst): Made tolerant to argc of zero,
since ecache_evalx may call it thus for DO loops binding
no values.
* eval.c (debug_env_save): Function for use in ENV_SAVE when the
CAREFUL_INTS paranoid debugging flag is #defined.
(ecache_eval_args): Now calls ecache_evalx(), which
evaluates a list of expressions and returns a list allocated on
the ecache in scm_env_tmp.
(m_do): (m_letrec1): (ceval_1): LET, LETREC, and DO now call
ecache_evalx instead of using inline loops, this seems to improve
speed by 5% - 10% for jacal and for simsynch simulation. C stack
usage will increase somewhat for large env frames.
(lookupcar): Added support for constant bindings, to be created by
LET, LETREC, LET*.
* scl.c (dbl_prec): Use dbl_mant_dig in preference of potentially
undefined DBL_MANT_DIG.
* gmalloc.c: include "getpagesize.h" conditionalized on __svr4__.
* build.scm (batch:chop-to-fit-system): Removed. Use new
batch:try-chopped-command instead.
(mysql): Added to features.
(build:build): Added comments describing stages and errors.
* Makefile: Added platform.txi dependency where dependent on
scm.texi.
* Makefile (scm.info require.scm): "cp -p" more portable than "cp -a"?
* sys.c (mode_bits): Fix for null output string case.
* unif.c (make_sh_array): Reduced consing by using scm_cvapply
instead of apply.
*sys.c (mode_bits): Now takes an optional buffer which, on exit,
will hold a mode string suitable to pass to fopen(), without any
SCM extension characters.
* r4rstest.scm (float-print-test): stop after first error.
* sys.c (try_open_file): Insure that only 'r', 'w', 'b', or '+'
may be included in mode strings passed to fopen.
* repl.c (scm_freshline): Added FRESHLINE.
* sys.c (init_storage): Make def_outp tracked, so freshline will
work with it.
* ramap.c (cind): Now takes C vector of indices, which may be
allocated on the C stack, rather than a uve.
(ramapc): (ramap): (ramap_cxr): (array_imap): (array_for_each): (rafe):
Use scm_cvapply instead of apply, allocate index and argument vectors
on the C stack for array ranks < 5.
* record.c (makrectyp): (recprin1): Use scm_cvapply instead of
apply.
(rec_prinset): Checks arity of argument procedure.
* sys.c (sfputc): (sfwrite): (sfgetc): Use scm_cvapply instead of
apply.
(mksfpt): Checks arities of soft port procedures when the port is made.
* eval.c (scm_cvapply): (scm_arity_check): Exported.
(makacro): (makmacro): (makmmacro): Call scm_cvapply rather than
consing up argument lists. Check arity of macro transformers
once, when syntax is defined.
* subr.c (make_vector): Fixed broken length argument test.
* sys.c (scm_env_v2lst): Now takes list tail in scm_env_tmp, so
tail can be allocated on ecache.
* repl.c (scm_top_level): Print out supplied program arguments for
failure exits to simplify debugging scripts.
* eval.c (varcheck): Fixed for RECKLESS case.
* eval.c (scm_arity_check): (macroexp1): Argument number checking
in macroexp1 abstracted as scm_arity_check, for use in map,
for-each ...
(scm_cvapply): Apply a function to a C vector of arguments, used by
map and for-each.
(scm_v2lst): Added for use in scm_cvapply.
(map): (for_each): Speed considerably improved: No longer allocate
Scheme vector temporaries for up to 5 list arguments. No longer
allocate unnecessary argument lists, allocate on ecache if
possible.
* repl.c (iprin1): Print out first elt of cclo environment --
makes record procedures more identifiable.
* sys.c (scm_env_v2lst): Now takes last cdr of list as argument.
* sys.c (scm_port_entry): Make 16-bit safe.
* Tscript.scm: File added to implement transcript-on,
transcript-off without burdening normal i/o.
* Init5d1.scm (transcript-on): (transcript-off): Now autoloads
from SCM/Tscript.scm
(_TRACKED): Added.
* socket.c (l_socket): (l_connect): (l_listen): Modified to use
port table.
(l_shutdown): (l_getpeername): (l_getsockname): Test for OPFPORTP, not
just OPPORTP.
* posix.c (l_pipe): Modified to use port table.
(prinpipe): Removed.
* ioext.c (reopen_file): (l_dup): (l_dup2): Modified to use port
table.
* crs.c (prinwindow): Removed.
(mkwindow): Uses scm_port_entry.
* repl.c (iprin1): Uses "name" field for printing ports.
(input_waiting): (wait_for_input):
(trans_on): (trans_off): Removed in favor of soft-port implementation.
(lputc): (lgetc): (lputs): (lfwrite): (lungetc): Removed check for
transcript, added line and column number support. Unread char now
kept in port table rather than CAR.
(lreadpr): (line_num): Removed line counting for load port, now done
using general line and column counting.
(scm_port_line): (scm_port_column): (scm_port_filename): Added.
(err_head): Now prints out multiple filenames for nested loads.
Tries to recover from recursive errors if current-error-port is a
soft-port.
* unif.c (uve_read): Removed ungetc call, if there is an unread
character, just call lgetc repeatedly for the first elt.
* sys.c (must_malloc): (must_realloc): Now check whether the heap
is initialized or not, so may be called earlier.
(scm_init_gra): (scm_grow_gra): Use above feature.
(scm_port_entry): Added, allocates entry in a port table used to store
unread characters, file names, line & column numbers, &c.
(mark_port_table): (sweep_port_table): Gc support for port table.
ptobfuns now has a "name" element, used for printing.
(prinfport): (prinstpt): (prinsfpt): Removed.
From David Yeh:
* scl.c (makdbl): Mods to compile using MSVC.
* scmfig.h: Don't #define SINGLES for MSC.
-=-=-
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, Windows,
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 source is available from:
http://swissnet.ai.mit.edu/ftpdir/scm/scm5d2.zip
ftp.gnu.org:pub/gnu/jacal/scm5d2.zip (FTP instructions follow)
SLIB is a portable Scheme library which SCM uses:
http://swissnet.ai.mit.edu/ftpdir/scm/slib2c7.zip
ftp.gnu.org:pub/gnu/jacal/slib2c7.zip
JACAL is a symbolic math system written in Scheme:
http://swissnet.ai.mit.edu/ftpdir/scm/jacal1b0.zip
ftp.gnu.org:pub/gnu/jacal/jacal1b0.zip
HOBBIT is a compiler for SCM code:
http://swissnet.ai.mit.edu/ftpdir/scm/hobbit5x.tar.gz
ftp.gnu.org:pub/gnu/jacal/hobbit5x.tar.gz
SLIB-PSD is a portable debugger for Scheme (requires emacs editor):
http://swissnet.ai.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz
ftp.gnu.org:pub/gnu/jacal/slib-psd1-3.tar.gz
SMG-SCM is an SMG interface package which works with SCM on VMS.
http://swissnet.ai.mit.edu/ftpdir/scm/smg-scm2a1.zip
ftp.gnu.org: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:
http://swissnet.ai.mit.edu/ftpdir/scm/turtlegr.tar.gz
ftp.gnu.org:pub/gnu/jacal/turtlegr.tar.gz
XSCM is a X windows interface package which works with SCM:
http://swissnet.ai.mit.edu/ftpdir/scm/xscm-2.01.tar.gz
ftp.gnu.org:pub/gnu/jacal/xscm-2.01.tar.gz
MacSCM is a Macintosh applications building package which works with
SCM (similar to XSCM).
http://swissnet.ai.mit.edu/ftpdir/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.
http://swissnet.ai.mit.edu/ftpdir/scm/wb1a2.tar.gz
SIMSYNCH is a digital logic simulation system written in SCM.
http://swissnet.ai.mit.edu/ftpdir/scm/synch1b0.zip
ftp.gnu.org:pub/gnu/jacal/synch1b0.zip
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.
ftp.gnu.org:pub/gnu/dld/dld-3.3.tar.gz
SCM.EXE (265k) is a SCM executable for DOS and MS-Windows.
Note: SCM.EXE still requires slib2c7 and scm5d2 above.
http://swissnet.ai.mit.edu/ftpdir/scm/scm.exe
#! implements "#!" (POSIX) shell-scripts for MS-DOS batch files.
http://swissnet.ai.mit.edu/ftpdir/scm/sharpbang.zip
http://swissnet.ai.mit.edu/ftpdir/scm/#!.zip
Programs for printing and viewing TexInfo documentation (which SCM
has) come with GNU Emacs or can be obtained via ftp from:
ftp.gnu.org:pub/gnu/texinfo/texinfo-4.0.tar.gz
-=-=-
ftp ftp.gnu.org (anonymous)
bin
cd pub/gnu/jacal
get slib2c7.zip
get scm5d2.zip
|