From 3278b75942bdbe706f7a0fba87729bb1e935b68b Mon Sep 17 00:00:00 2001 From: Bryan Newbold Date: Mon, 20 Feb 2017 00:05:25 -0800 Subject: Import Upstream version 5d2 --- ANNOUNCE | 357 ++++++++++++++++++++++++++++++--------------------------------- 1 file changed, 171 insertions(+), 186 deletions(-) (limited to 'ANNOUNCE') diff --git a/ANNOUNCE b/ANNOUNCE index 102b42c..176bf90 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,145 +1,144 @@ -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. +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, Unix and -similar systems. ASCII and EBCDIC are supported. +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 @@ -147,89 +146,75 @@ 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 +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: - swissnet.ai.mit.edu:pub/scm/slib2c3.tar.gz - prep.ai.mit.edu:pub/gnu/jacal/slib2c3.tar.gz + 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: - swissnet.ai.mit.edu:pub/scm/jacal1a7.tar.gz - prep.ai.mit.edu:pub/gnu/jacal/jacal1a7.tar.gz + http://swissnet.ai.mit.edu/ftpdir/scm/jacal1b0.zip + ftp.gnu.org:pub/gnu/jacal/jacal1b0.zip HOBBIT is a compiler for SCM code: - swissnet.ai.mit.edu:pub/scm/hobbit4d.tar.gz + 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): - swissnet.ai.mit.edu:pub/scm/slib-psd1-3.tar.gz - prep.ai.mit.edu:pub/gnu/jacal/slib-psd1-3.tar.gz + 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. - swissnet.ai.mit.edu:pub/scm/smg-scm2a1.zip - prep.ai.mit.edu:pub/gnu/jacal/smg-scm2a1.zip + 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: - swissnet.ai.mit.edu:pub/scm/turtlegr.tar.gz - prep.ai.mit.edu:pub/gnu/jacal/turtlegr.tar.gz + 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: - swissnet.ai.mit.edu:pub/scm/xscm-2.01.tar.gz - prep.ai.mit.edu:pub/gnu/jacal/xscm-2.01.tar.gz + 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). - swissnet.ai.mit.edu:pub/scm/macscm.tar.Z + 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. - swissnet.ai.mit.edu:pub/scm/wb1a2.tar.gz + http://swissnet.ai.mit.edu/ftpdir/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 + 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. - prep.ai.mit.edu:pub/gnu/dld-3.3.tar.gz + 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. - swissnet.ai.mit.edu:pub/scm/#!.zip + 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 swissnet.ai.mit.edu (anonymous) - bin - cd pub/scm - get scm5c3.tar.gz - get slib2c3.tar.gz -or - ftp prep.ai.mit.edu (anonymous) + ftp ftp.gnu.org (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. + get slib2c7.zip + get scm5d2.zip -- cgit v1.2.3