Fri Sep 11 17:25:14 EDT 1998 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5c2 to 5c3. 1998-09-11 Radey Shouman * 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. 1998-09-04 Radey Shouman * scl.c (big2str): Take address of SCM temporary as gc protection. 1998-09-02 Aubrey Jaffer * 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. 1998-08-31 Radey Shouman * 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. 1998-08-27 Radey Shouman * Init5c2.scm (array-shape): No longer signals an error when passed a non-array -- now returns whatever ARRAY-DIMENSIONS returned (currently #f). 1998-08-26 Aubrey Jaffer * scm.c (scm_proftimer): Also conditional on SIGALRM. 1998-08-25 Radey Shouman * 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. 1998-08-24 Radey Shouman * 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. 1998-08-20 Radey Shouman * 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. 1998-08-19 Radey Shouman * unif.c (resizuve): eliminated unused variable `ptr'. * sys.c (freeprint): Now prints cdr of new cell. 1998-08-18 Radey Shouman * 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. 1998-08-17 Radey Shouman * 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. 1998-08-17 Aubrey Jaffer * eval.c (macroexp1): now prints name of unbound variable. (s_unbnd s_wtap): abstracted error message strings. 1998-08-11 Radey Shouman * eval.c (ceval_1): No longer make extra environment frame for LETREC, since internal DEFINE is now rewritten. 1998-08-10 Aubrey Jaffer * 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(); 1998-08-08 Aubrey Jaffer * Init5c2.scm: removed DEFINED? conditionals for old SCMs. 1998-07-28 Radey Shouman * 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. 1998-07-27 Radey Shouman * 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. Wed Jul 22 16:36:48 EDT 1998 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5c1 to 5c2. 1998-07-22 Radey Shouman * sys.c: Added include of unistd.h for linux. (freeprint): Distinguishes between free cells (on freelist) and new cells. (scm_egc): Check for scm_estk, scm_estk_ptr not consistent. *repl.c (ints_viol): Added sense argument again, since there are several meaningful values for ints_disabled. (handle_it): More careful about interrupts when saving estk. * *scmfig.h (DEFER_INTS): (ALLOW_INTS): (DEFER_INTS_EGC): (ALLOW_INTS_EGC): ints_viol calls changed. * ramap.c (array_for_each): (array_map): Always act as if CCLO is defined, this does no harm, and allows CCLO optimizations for the dynamicly loaded case. * posix.c: Added include of unistd.h for linux. * eval.c (ident2sym): Now available in Scheme as IDENTIFIER->SYMBOL. (closure): Removed env argument, now uses scm_env and is more careful about interrupts. (env2tree): Now uses DEFER_INTS_EGC. 1998-07-22 Aubrey Jaffer * build.scm (read-version): added to read version number from "patchlvl.h". (batch:rebuild-catalog): rebuilds the catalog in implvic (executable's implementation vicinity). (build-params): implinit renamed to implvic. (make-dll-archive): deposits dll-archives in implvic. * scm.c (INIT_FILE_NAME): definitions moved to "patchlvl.h". * patchlvl.h (INIT_FILE_NAME): moved from "scm.c" so it will be updated automatically. * Init.scm: renamed Init5c1.scm. The init file-name will henceforth include the version number. * Makefile (new): Added support for Init file renaming (including CVS). 1998-07-17 Radey Shouman * eval.c (ceval_1): Changed IM_SET to make High C happy. * scmfig.h: ioext.c: Added STDC_HEADERS #define and #include for linux. Allows use of the rename() system call, which works for some filesystems that do not allow multiple links (smbfs). 1998-07-16 Aubrey Jaffer * repl.c (repl): changed __TURBOC__ flag to __MSDOS__. This enables the cr/lf fix for DJGPP also. (repl): Enabled cr/lf fix for __HIGHC__ also. 1998-07-16 Radey Shouman * eval.c (lookupcar): Second argument now specifies what to check: LOOKUP_UNDEFP for error on undefined, LOOKUP_MACROP for error on keyword. LOOKUP_UNDEFP and LOOKUP_MACROP are #defined only in eval.c. Error is again signalled for undefined symbols at top level. 1998-07-14 Radey Shouman * eval.c (ENV_PUSH): (ENV_POP): Modified for interrupt safety. (ceval_1): (apply): (procedurep): (macroexp1): (make_specfun): cclo is now a subtype of tc7_specfun, which also includes tc16_apply and tc16_call_cc, smobs are now never procedures. (apply): Added call/cc support, error checking for subr_2o and subr_3 types. * sys.c (gc_mark): (gc_sweep): Modified for new specfun, cclo representation. (gc): Now does ecache gc if given optional argument. * repl.c (iprin1): Modified for new specfun, cclo representation. (handle_it): Now saves and restores estk for interrupt safety. * ramap.c (array_map): Changed for new cclo representation. 1998-07-10 Radey Shouman * eval.c (macroexp1): Made sure to call unmemocar before throwing error. (ceval_1): ALLOW_INTS_EGC before returning value. 1998-07-09 Radey Shouman * eval.c (ceval_1): Modifications to allow rewriting of interal DEFINE to LETREC: If an ISYM is evaluated in non-tail position the body of which it is the CAR is macro expanded by m_expand_body, which rewrites internal DEFINE. (m_expand_body): Added. (m_macroexp1): Added argument to control error checking: m_expand_body may speculatively expand forms in the wrong environments. Made argument number checks conditional on RECKLESS. (m_body): Added, error checks bodies and inserts the ISYM tokens. (m_lambda): (m_letstar): (m_letrec1): (m_letrec): (m_let): Now call m_body. (m_cond): (m_case): (m_quote): Modified to avoid destructively changing their argument forms. Since m_expand_body speculatively macro expands forms the process must be reversible. (m_ident_eqp): Fixed to use proper environment. (renamed_ident): Added DEFER_INTS_EGC. Added prototypes for static functions. 1998-07-07 Radey Shouman * eval.c (SPECFUN): Removed -- now the only case. (ceval_1): (m_cont): IM_CONT case removed. (scm_evalatomcar): Added check for tc16_specfun. Made unquoted vector message conditional on RECKLESS. * scm.h: * repl.c: IM_CONT removed. * sys.c (gc_sweep): Fixed bug in float gc introduced with NUM_HP. (freeprint): Added for debugging. 1998-07-06 Radey Shouman * eval.c (ceval_1): envpp now -1 after estk has been popped, allows better stack tracing. * eval.c (ceval_1): Fixed argument number check for closures and made conditional on CAUTIOUS. (ceval_1): (evalatomcar): (lookupcar): Moved check for using macro as variable from ceval_1 and evalatomcar to lookupcar. 1998-07-02 Radey Shouman * Init.scm (call-with-current-continuation): Now subr. * eval.c (ceval_1): Made CALL-WITH-CURRENT-CONTINUATION an inlined smob, like APPLY. Flushed @CALL-WITH-CURRENT-CONTINUATION. ecache allocated lists now no longer passed to apply of asubrs and rpsubrs -- this is not interrupt safe. (macroexp1): Added argument number checks for subrs, this gives error messages with unmemoized code. * eval.c (ceval_1): Fixed error reporting -- "wrong number of args" was sometimes reported as "wrong type to apply". Now pass arglist allocated in ecache for asubrs and rpsubrs with 3+ args. 1998-07-01 Radey Shouman * eval.c (ceval): (ceval_1): (ilookup): (lookupcar): (farlookup): New model of interrupt control for protecting ecache references using DEFER_INTS_EGC, ALLOW_INTS_EGC. These need not be strictly nested, ints are always allowed by ceval_1 before tail-calling a subr. (ceval_1): @apply flushed in favor of a smob denoting apply and understood by the evaluator -- allows ecache allocation of argument lists. (scm_macroexp1): Now checks arity for closures, checking had been broken for non-CAUTIOUS SCM. * scmfig.h (DEFER_INTS_EGC): (ALLOW_INTS_EGC): Defined. * sys.c (scm_env_cons): (scm_env_cons): (scm_env_cons2): (scm_extend_env): DEFER_INTS replaced with DEFER_INTS_EGC. * repl.c (repl_report): At verbose level 3 now reports number of ecache cells migrated and why, also number of ecache garbage collections. (ints_viol): Reports filename and line number of violation, and filename and number of last previous DEFER/ALLOW_INTS. 1998-06-23 Radey Shouman * scm.c (int_signal): Now signals error if there is no Scheme handler. (ignore_signals): Changed SIG_IGN to SIG_DFL for SIGINT. 1998-06-22 Radey Shouman * eval.c (ENV_PUSH): Fixed problem introduced during last change: estk was overstepping its bounds. 1998-06-19 Radey Shouman * eval.c (ilookup): (farlookup): (unmemocar): (ceval_1): (id_denote): Wrapped all pointer-chasing of possible ecache cells in DEFER/ALLOW_INTS for safety when interrupt handlers may evaluate Scheme code asynchronously. (scm_macroexp1): (m_define): (m_atlet_syntax): Environments now always wrapped when passed to macro expanders. (ecache_p): (debug_env_car): (debug_env_cdr): Added for CAREFUL_INTS checking. (test_ints): Added when CAREFUL_INTS is defined for checking interrupt safety. * repl.c (ints_viol): Now prints file and line number. 1998-06-15 Radey Shouman * scm.h (SCM_ENV_SAVE): (SCM_ENV_RESTORE): Added, to prevent oversights in sys.c. * sys.c (scm_env_cons): (scm_env_cons2): Made interrupt safe; return results in global scm_env_tmp, use DEFER/ALLOW_INTS. (scm_extend_env): (scm_env_cons_tmp): Added. (scm_env_acons): Deleted, superseded by scm_extend_env. *eval.c (ceval_1): (apply): Replaced and rewrote scm_env_ routines to use new interrupt safe versions. ENV_TMP replaced by scm_env_tmp, it was hard to remember that ENV_TMP might move. CLEAR_ENV_TMP removed since scm_env_tmp will be overwritten almost every time estk is pushed. 1998-06-15 Aubrey Jaffer * build.scm (compile-c-files *unknown*): Now uses BATCH:APPLY-CHOP-TO-FIT BATCH:TRY-SYSTEM rather than BATCH-SYSTEM. 1998-06-12 Aubrey Jaffer * eval.c (evalatomcar): #ifdef MACRO added around M_IDENTP. * Makefile (dist): Added cvs flag command to dist target. 1998-06-12 Radey Shouman * repl.c (scm_execpath): Added ASSERTion to signal error in case malloc fails. * subr.c (scm_copybitfield): corrected unsigned declaration of len variable, will now signal errors if END < START. (bigcomp): Changed type of xlen from sizet to long, since it is compared with -1. 1998-06-07 Aubrey Jaffer * Init.scm (string-ci->symbol): added (new in "slib/strcase.scm") Fri Jun 5 16:01:02 EDT 1998 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5c0 to 5c1. 1998-06-05 Aubrey Jaffer * ANNOUNCE: Removed ftp.cs.indiana.edu:/pub/scheme-repository/ entries because they are no longer being maintained or updated. 1998-06-03 Aubrey Jaffer * Makefile (Install): target updated to include more recent *.scm as well as *.sl and *.so files. * continue.h (setjump): Using (include and) SIG_UNBLOCK for setjump #defines. * scm.c (ignore_signals): SIG_UNBLOCK is a better indicator for sigprocmask() than __USE_POSIX. 1998-06-03 Radey Shouman * unif.c (array_inbp): Deleted unused label badarg: 1998-06-02 Aubrey Jaffer * repl.c: SIGHUP_deferred added. 1998-06-02 Radey Shouman * scm.c (ignore_signals): now unblocks signals (mask). * ioext.c (i_execv): Now brackets execv[p] with un/ignore_signals(). 1998-06-01 Radey Shouman * scm.c (unblock_signals): Deleted. Signal mask problem fixed by of #defining setjump as sigsetjmp, longjump as siglongjmp. 1998-05-30 Aubrey Jaffer * build.scm (batch:rebuild-catalog): rewritten from rebuild-catalog. (default-for-platform): new batch-dialect added. (guess-how): removed. Guessing delayed using default-for-platform. 1998-05-28 Radey Shouman * eval.c (ceval_1): setjmp changed to setjump. * continue.h: Changed setjump, longjump to use sigsetjmp, siglongjmp if it looks as though we're POSIX 1998-05-28 Aubrey Jaffer * repl.c (handle_it): absorbed wta() call always used with it. (SIGALRM_deferred): renamed from alrm_deferred. (SIGINT_deferred): renamed from sig_deferred. (han_sig han_alarm): collapsed into (new) process_signals(). * scm.c (alrm_signal int_signal): now call handle_it() directly, instead of through han_sig() and han_alarm(). * scmfig.h (CHECK_INTS): simplified; deferred_proc when non-zero is address of procedure to call for signal processing (always process_signals()). * sys.c (sysintern mksubr): "const" added to declaration of first arguments. 1998-05-27 Aubrey Jaffer * repl.c (everr): fixed really broken default vs. dowinds stuff. * socket.c (l_accept): moved DEFER_INTS so accept() call won't block. 1998-05-27 Radey Shouman * repl.c: Fixed bug in scm_stack_trace: could have a negative number of stack frames if interrupted at top level. 1998-05-26 Aubrey Jaffer * scmfig.h: Metaware __HIGHC__ lacks sbrk (LACK_SBRK). 1998-05-21 Radey Shouman * sys.c (must_realloc): Fixed sense of check on realloc return value in must_realloc. * repl.c (scm_ecache_report): Fixed ecache stack report in ROOM. 1998-05-21 Aubrey Jaffer * sys.c, scm.h, repl.c: Fixed long vs. int bugs for 16-bit compilers. * Init.scm: Made renamed logical operations safe for old executables. * scmfig.h: Borland sbrk() is a noop. * sys.c: Fixed ECACHEP for Borland C. * Init.scm: Removed check for duplicate key values for CASEV (now done by CASE). * Init.scm (casev): Removed check for duplicate key values for CASEV (now done by CASE). 1998-05-21 radey * scm.texi: Documented changes to closure format. * sys.c: cosmetic changes. Wed May 20 17:53:52 EDT 1998 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5b5 to 5c0. 1998-05-20 Radey Shouman * eval.c: Added check for duplicate key values for CASE. * sys.c (scm_egc): Modified scm_egc to prevent a major gc from happening inside an ecache gc -- which was causing environment lossage. 1998-05-20 Aubrey Jaffer * Makefile: made check or checklit part of normal build. * scm.texi (Evaluation): Added description of FARLOC. (Memory Management for Environments): Added Tom Lord's documentation of ecache. * build.scm (build): compile-c-files linux: don't use -O2 when -g is specified. 1998-05-14 Radey Shouman * Init.scm (bit-extract): (logical:bit-field): (logical:bitwise-if): (logical:copy-bit): (logical:copy-bit-field): definitions added for SLIB compatibility. * subr.c (scm_bitfield): renamed BIT-EXTRACT to BIT-FIELD, added range check on END. (scm_bitif): (scm_copybitfield): (scm_copybit): added. 1998-05-12 Aubrey Jaffer * eval.c (m_case): Added checks for ELSE clause. * Init.scm (defconst): added. (casev): added. (print-args): fixed (environment-cache broke). * eval.c (env2tree): exported to Scheme as environment->tree. 1998-05-11 Aubrey Jaffer * continue.c (dynthrow): Giving up on HPUX stack growth. "growth[] being optimized out" message disabled for HPUX. * sys.c (try_open_file): Renamed from open_file. (open_file): Now calls back to Scheme; applies `open-file'. Fri May 8 17:40:44 EDT 1998 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5b4 to 5b5. 1998-05-08 Radey Shouman * eval.c (m_letrec1): added to support tagged environment frames. (m_let, m_letrec, m_lambda, m_do): Now put an ISPCSYM in the last cdr of the names they add to the environment, this is intended for debugging. 1998-05-07 Radey Shouman * repl.c (scm_brk_report): Added. * scm.c (main): set global variables remembering initial brk. * eval.c (ceval_1): LETREC now adds extra (empty) environment frame so internal define does not upset memoization. * r4rstest.scm: tests for LETREC/internal DEFINE bug added. 1998-04-22 * repl.c (repl_driver): Added sbrk call just before dumping -- fixes problems with linux dumped executables. 1998-04-16 * unif.c (scm_logaref): (scm_logaset): Added. Thu Apr 9 11:31:20 EDT 1998 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5b3 to 5b4. 1998-04-08 Aubrey Jaffer * sys.c (gc_mark): first column #endif was within comment. (sweep_symhash): was being called by igc -- even with NO_SYM_GC flag. 1998-04-07 Aubrey Jaffer * build.scm (link-c-program highc.31): added -stack 65000. * sys.c (gc_mark): added CHECK_STACK; 1998-04-06 Aubrey Jaffer * sys.c (gc_mark): Checks strings and symbols for extra 0 byte. (mark_syms): Added check for extra 0 byte; check strhash() of symbol matches bucket index. 1998-04-06 Aubrey Jaffer * unif.c (make_uve): Changed to call makstr for strings. This is so extra byte will be 0. * time.c (your_time): PharLap.51 ftime() is non-monotonic. Fix added to assure ftime() never decreases. 1998-04-03 Aubrey Jaffer * Init.scm (apply:nconc-to-last): Changed value to nconc2copy; this allows apply's definition to remain unchanged. 1998-04-03 * rope.c: scm_cell_p now returns true for env cache cells, so they may be printed during debugging. 1998-04-03 Ben Caradoc-Davies * sys.c (gc_sweep): If a segment is freed during garbage collection, the heap size counter is adjusted, but the cells collected counter is not. Then when calculating cells allocated, cells in a freed segment are counted twice (negatively). 1998-04-03 Aubrey Jaffer * scm.texi (Low Level Syntactic Hooks): Documented behavior of @apply; turning a former bug into a feature. 1998-04-01 Aubrey Jaffer * scl.c (ex2in): changed tc7_cxr floident() to tc7_subr_1 ex2in() so it will handle complex numbers. 1998-04-01 * eval.c (nconc2copy): Added to fix bug in apply that allowed local SET! to mutate lists passed to APPLY. * Init.scm (apply): now uses apply:nconc-to-copy. 1998-03-26 Radey Shouman * eval.c (ilookup): (lookupcar): (farlookup): (ceval): (evalatomcar): (ceval_1): (iqq): (wrapenv): Substantial changes to use copy-collected stack cache intended to reduce time in gc. * sys.c (egc_mark): (egc_sweep): (egc_copy): (egc_copy_stack): (egc_copy_roots): (scm_egc): The cache garbage collector. (scm_env_cons): (scm_env_cons2): (scm_env_acons): Functions to allocate storage in the environment cache. * repl.c (scm_egc_start): (scm_egc_end): (scm_ecache_report): (scm_stack_trace): Added to support environment cache. stack-trace now does not print all of stacktraces deeper than 10 levels. 1998-03-20 Patrick Lecoanet * sys.c (igc): Use of NO_SYM_GC flag fixed. 1998-03-20 Aubrey Jaffer * eval.c (m_define): "redefining built-in " message now conditional on verbose >= 2. (evalatomcar): unquoted vectors give warning when verbose >= 2. (EVALCELLCAR): Now always uses ATOMP, which catches all non-pair cells. 1998-03-20 Radey Shouman * Macro.scm (macro:compile-syntax-rules): Allows vectors to be used as patterns and templates, per R5RS. * eval.c (unpaint): Unpaints identifiers in quoted vectors. 1998-03-09 Aubrey Jaffer * repl.c (dump): made compatible with change to boot-tail * time.c: * scmfig.h: Removed support for HAVE_CONFIG_H. 1998-03-09 Radey Shouman * time.c: I found that SCM on Linux uses ftime(), but that ftime() is implemented in glibc as a call to time(). Linux does support gettimeofday(), which does allow 10 msec resolution. I tried using the definition of ftime() using gettimeofday() at the end of time.c (#ifdef freebsd). It worked like a charm. 1998-03-05 Radey Shouman * Init.scm (boot-tail): added `dumped?' argument. * Init.scm (set-vicinities!): added. * time.c (reset_time): Added to fix user time report for dumped executables -- now reports the time since invocation, rather than the time since dumping. * scm.c (init_scm): Calls reset_time if dumped. * scm.c (scm_find_impl): Wrapper for scm_find_impl_file. * scm.c (find-init-file): added Scheme interface for scm_find_impl. 1998-02-27 Bob Schumaker * dynl.c: added Macintosh support. 1998-02-23 Drew Csillag * scm.c: Port for __CYGWIN32__ 1998-02-17 Radey Shouman * Macro.scm (macro:compile-syntax-rules): Fixed to recognize non-identifier literals in patterns. 1998-02-09 * scm.h (CGETUN): * sys.c (noop0): I found two places where SCM uses a possibly signed type for characters in a stream and risks confusing '\377' (a legitimate character) with EOF (-1). This patch addresses this problem, and should make SCM's streams completely 8-bit clean. 1998-02-11 Aubrey Jaffer * scm.texi (Index): combined indexes into one node. Added use of @url command. Mon Jan 12 10:12:20 1998 Aubrey Jaffer * disarm.scm: (require 'disarm) disables opening and modifications of files. Sun Jan 11 22:52:59 1998 Aubrey Jaffer * posix.c: replaced C definitions of open-input-pipe and open-output-pipe with call to scm_ldstr(). Sat Jan 10 11:54:03 1998 Aubrey Jaffer * Init.scm (read:eval-feature): moved into read:sharp (only use). (read:sharp): now handles `#\.'; moved from lreadr in "repl.c". Sun Dec 21 19:40:31 1997 Aubrey Jaffer * repl.c (exit_report exit_report): improved. * sys.c (stack_report): improved. * scl.c (iint2str): split into two routines. Negative radix argument now forces unsigned conversion. * sys.c (alloc_some_heap): heap size variables were confused. heap_cells is now used instead of heap_size. * setjump.h (MIN_GC_YIELD NUM_HASH_BUCKETS): moved from scmfig.h. * scm.h (THRASH): added. Mon, 01 Dec 1997 17:56:43 Andreas Menke * sys.c (must_malloc must_realloc): Bumps up mtrigger if less than 1/8 of malloc space was reclaimed by GC. Wed Dec 17 22:40:45 1997 Aaron Ucko * rgx.c (lregcomp): There is a small bug in rgx.c; a few things should be set before sending the pattern buffer to re_compile_pattern(). These fields should be set to zero, which means the bug only appers after memory is reused. This only affects use of GNU regex (i.e., only happens with _GNU_SOURCE defined). cf. regex.info for more information. Wed Dec 17 22:40:45 1997 Aubrey Jaffer * sys.c (free_storage): added fflush for stdout and stderr (because those ports don't get closed). Sun Nov 30 23:21:05 1997 Aubrey Jaffer * build (build-from-argv): split from "build.scm" so that cgi scripts don't carry getopt baggage. Thu Nov 20 09:45:28 1997 Aubrey Jaffer * build.scm (build): suppress-files field restored to C-libraries table. It really is the correct way to deal with "findexec.c". Sun Nov 16 13:43:21 1997 Aubrey Jaffer * mkimpcat.scm: 'hobbit, 'scmhob, and 'build added. * Link.scm (compile-file link-named-scm): Fixed. Require of strings removed. Tested with Hobbit 5x. (scm:object-suffix): changed to ".o"; only used by link-named-scm. Sun Nov 2 23:15:57 1997 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5b2 to 5b3. * mkimpcat.scm: modified for new SLIB catalog arrangement. Sat Nov 1 14:19:24 1997 Aubrey Jaffer * sys.c (gc_sweep): added `contin_bad' argument. When set, gc_sweep will warn of any uncollected continuations of non-zero length. This should make unexec problems less mysterious. Tue Oct 28 16:54:00 1997 Aubrey Jaffer * Init.scm (home-vicinity): added. Used to find "ScmInit.scm". Sat Oct 25 23:05:43 1997 Aubrey Jaffer * unexsunos4.c: added from emacs. * unexhp9k800.c: added from emacs. Broken -- doesn't change the segment sizes. * unexalpha.c: added from emacs. Sat Oct 18 11:50:34 1997 Aubrey Jaffer * build.scm (build C-libraries): changed horrible `supress-files' field to `lib-support'. (rebuild-catalog): added. Called by dll and dlls methods. Sat Oct 11 23:19:55 1997 Aubrey Jaffer * scm.texi (Compiling and Linking Custom Files): Added to describe how to use "build.scm" with custom files. Fri Oct 10 00:31:08 1997 Aubrey Jaffer * Makefile (myscm4 myscm5): now delete slibcat and implcat to keep them from getting stale. * gmalloc.c: HP-UX B.10.10 A doesn't have getpagesize.h. Fri Oct 10 00:18:40 1997 Peter E. Davis * unexhp9k800.c: added HP-UX unexec support. Mon Sep 29 15:18:37 1997 Aubrey Jaffer * sys.c (mark_syms): No longer mark the value cell because value cells get returned by calls to intern(). This caused a rare GC leak which showed up in large programs. Sun Sep 28 21:36:53 1997 Aubrey Jaffer * scm.h (const): defined to comment for hpux native cc. Sun Sep 28 14:48:10 1997 Radey Shouman * ramap.c (array_imap): Fixed for zero-rank arrays arguments. Fri Sep 19 23:23:46 EDT 1997 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5b1 to 5b2. Fri Sep 19 23:17:48 1997 Aubrey Jaffer * build.scm (build:build): DEFAULT field-name changed to DEFAULTER in concert with SLIB/dbutil.scm. Tue Aug 26 17:40:44 1997 Aubrey Jaffer * build.scm (build): Changed sun to sunos; This gives automatic platform from uname. Wed Jul 2 14:25:52 1997 Anthony Green * scmfig.h (FENCE): macro added. DEFER_INTS/ALLOW_INTS doesn't actually promise to keep the critical code within the boundries of the DEFER/ALLOW_INTS instructions. It may very well schedule it outside of the magic defined in those macros. GCC's volatile asm feature forms a barrier over which code is never moved. Wed Jun 25 12:56:22 1997 Aubrey Jaffer * repl.c (tryload): Undid previous tail-recursive hack; it caused errors and warning to issue from grossly wrong line numbers. Sun Jun 8 21:40:50 1997 Aubrey Jaffer * mkimpcat.scm: updated for shared-library wb. Mon May 19 18:12:33 1997 Aubrey Jaffer * dynl.c (l_dyn_main_call): added for SUN_DL. Sat May 17 23:21:05 1997 Aubrey Jaffer * repl.c (lreadparen): Now calls wta when EOF is encountered in list. This must have broken when rewritten to use `UNDEFINED' as magic-cookie. Sat May 10 21:54:47 EDT 1997 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5b0 to 5b1. Sat May 10 21:08:41 1997 Aubrey Jaffer * mkimpcat.scm: moved from Init.scm, macro feature now properly listed. Thu Apr 17 15:16:56 1997 Denys Duchier * build.scm (build): extended with the new platform sun-svr4-gcc-sunld because my system runs solaris, uses gcc as its compiler, but is configured to use sun's linker rather than gnu's. I tested the changes in so far as the resulting system compiles, runs, passes the tests, and is able to dump an image which can be successfully restarted. I used the following command to create my building script: build.scm -p sun-svr4-gcc-sunld -o SCM+ -w redo \ --compiler-options=-DHAVE_UNISTD_H -F bignums \ arrays array-for-each inexact rev2-procedures \ record compiled-closure generalized-c-arguments \ i/o-extensions regex socket posix unix dump \ cheap-continuations macro * scm.texi (Build Options): updated the documentation of `build options': removed memoize-local-bindings, which is not supported by build.scm, and added macro, which is. * ecrt0.c: modified the sparc's asm in ecrt0.c to call main and _exit when __svr4__ is defined instead of _main and __exit. It seems the prepending of an underscore is a thing of the past. Tue May 6 12:34:43 1997 Aubrey Jaffer * Init.scm (print-args): syntax added. Mon Apr 28 20:24:47 1997 Aubrey Jaffer * mkimpcat.scm: created from "Link.scm"; mkimpcat.scm creates "implcat" in implementation-vicinity, supporting slib2b0 catalog abstraction. * repl.c (dump): dump (defined by init_repl) now sets *catalog* to #f in order to trigger loading of "slibcat" and "implcat". * build.scm (build): make-nothing renamed to update-catalog. update-catalog and make-dll-archive create fresh "implcat". * sys.c (open_file): ALLOW_INTS was misplaced, causing lots of "ints already enabled" messages. * repl.c (ints_viol): written. * scmfig.h (DEFER_INTS ALLOW_INTS): rewritten using ints_viol() to allow easy gdb breakpointing. * repl.c (lreadpr): renamed from lreadr(). New lreadr() created. (flush_ws): fixed linum++ bug. (lreadparen): rewrote to use UNDEFINED as close-parenthesis magic cookie; #+foo can now appear at end of lists and files. Fri Apr 25 22:52:20 1997 Aubrey Jaffer * scl.c (istr2flo): supplied missing IMP test before INEXP test. Fri Mar 21 08:44:52 1997 Aubrey Jaffer * Transcen.scm (log10): defined to $log10. * scl.c: added $log10. Thu Mar 20 21:09:19 1997 Aubrey Jaffer * Init.scm (scm:load): test for script files skips hopeless calls to link:link. (file-readable?): added. Non-blocking reads first 2 characters of file. Tue Mar 18 18:38:14 1997 Aubrey Jaffer * script.c (scm_cat_path scm_try_path scm_sep_init_try): (scm_find_impl_file dld_find_executable): moved from scm.c (script_find_executable script_P): added. (script_read_arg script_meta_arg_P): added. (script_process_argv script_count_argv): added. These functions implement `script meta-args' ala SCSH for unix and MS-DOS. * repl.c (scm_unexec): Now checks for execpath being set. (final_repl): No longer tries to set execpath. * dynl.c (init_dynl): Instead of trying to set execpath, now gives error message if NULL. * patchlvl.h (SCMVERSION): Bumped from 5a1 to 5b0. Sat Mar 15 17:04:07 1997 Aubrey Jaffer * scm.c (main): Assumes called as a script when first argument (argv[1]) is "\\"; and finds execpath with dld_find_script_executable() instead of dld_find_executable(). * findexec.c (dld_find_executable): Now prepends current working directory to any path with a `/' in it. (dld_find_script_executable): Added to resolve real executable pathname when program is invoked as a script. * Init.scm (read:sharp): #! now a balanced comment when first line ends with \ (backslash). This is to support SCSH scripts. Fri Mar 7 21:12:17 EST 1997 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 5a0 to 5a1. Mon Mar 3 20:09:43 1997 Radey Shouman * eval.c (renamed_ident): Renamed RENAME-IDENTIFIER to RENAMED-IDENTIFIER. * eval.c (m_case): Avoid renaming data at the head of each clause. Wed Feb 26 10:17:59 1997 Aubrey Jaffer * Macro.scm (macro:compile-syntax-rules): * Init.scm (copy-tree): use of copy-tree changed to @copy-tree. * eval.c (copy-tree): renamed to @copy-tree. * sys.c (igc): test added for calls to igc within igc. * unif.c (raprin1): calls ipruk() instead of using cells if called during gc. * scl.c (bigprint floprint): no longer try to allocate cells if called during gc. * .gdbinit (runscm verbose errobj scm load eval): added for debugging with GDB 4.16. Tue Feb 25 21:32:50 1997 Aubrey Jaffer * repl.c (iprin1): Now checks that a cell is actually in a heap before trying to print it. * rope.c (scm_cell_p): added. Returns !0 if SCM argument is cell-aligned and points into a valid heap segment. Sun Feb 23 21:21:21 1997 Aubrey Jaffer * continue.h: SCM source now uses jump_buf, setjump, and longjump in lieu of jmp_buf, setjmp, and longjmp. This should prevent name and declaration conflicts. * build.scm (include-spec): created to elide "-I" if scm-srcdir is "". Sat Feb 22 20:45:58 1997 Aubrey Jaffer * repl.c (lreadr): uncommented line 640 to allow reading balanced comments at end of files. * build.scm (scm-srcdir): now defaults to user-vicinity, rather than implementation-vicinity. * Init.scm (warn): added. * repl.c (exitval): Now initialized. (quit): fixed return value bug. (abrt): Now returns failure exit code if errjmp_bad. Tue Feb 11 21:08:44 1997 Aubrey Jaffer * ugsetjmp.s: Created for Ultrix-VAX port. Mon Feb 3 08:55:43 1997 Aubrey Jaffer * repl.c (read_token): `#' no longer terminates tokens (identifiers and numbers). Sun Feb 2 17:42:50 1997 Aubrey Jaffer * build.scm (build-whats): #define DLL if compiling for library. * record.c (MAKE_REC_INDS REC_IND_REF REC_IND_SET): now default to regular vectors if compiling as DLL. Sat Feb 1 21:41:15 EST 1997 Aubrey Jaffer * patchlvl.h (SCMVERSION): Bumped from 4e6 to 5a0. Sat Jan 25 19:48:19 1997 Radey Shouman * scm.h (IM_DELAY) (IM_QUASIQUOTE) (IM_UNQUOTE) (IM_UQ_SPLICING) (IM_ELSE) (IM_ARROW): Added to support hygienic macros. * repl.c: isymnames modified. * eval.c (lookupcar): Added support for hygienic macros (evalatomcar): Added. (ident2sym) (id_denote) (unpaint) (prinid) (ident_eqp) (rename_ident) (syn_quote) (m_atlet_syntax) (m_the_macro): added. (m_quote) (m_cond) (m_case) (m_quasiquote): Modified to be referentially transparent. (m_iqq): added. (m_delay): now memoizes to prevent speed hit from slower lookupcar. * scmfig.h: MACRO macro included. * Init.scm: Modified to avoid "keyword as variable" errors. * Macro.scm: SYNTAX-RULES, added. * syntest1.scm: syntest2.scm: SYNTAX-RULES tests, added. * scm.texi: Hygienic macro support documentation. Thu Dec 12 13:00:46 1996 Aubrey Jaffer * subr.c (string make_string st_ref st_set st_equal st_append): Corrected long-standing (not (eqv? (integer->char 128) (string-ref (make-string 1 (integer->char 128)) 0))) bug found by John Kozak . Mon Dec 2 20:40:40 1996 Radey Shouman * eval.c (farlookup): Added, to handle memoized lookups in local environments with very wide or deep local environments. These print as (#@farloc-car iframe . idist). (lookupcar): Now inserts `farloc' forms instead of ilocs if necessary. (ceval): Modified to do the right thing with farlocs. * scm.h (MAKILOC): Added, now used in lookupcar. (IM_FARLOC_CDR) (IM_FARLOC_CAR): ISYMS added. Sun Dec 1 00:41:07 1996 Aubrey Jaffer * build.scm (build): Added scm-srcdir to support compilation of SCM source while not cd'd to SCM directory. -I added to all builds (to pick up scm.h, etc.). Sat Nov 30 20:53:03 1996 Lorens Younes * findexec.c, scmfig.h, time.c: __amigados__ (gcc on amiga) support added. Mon Nov 18 22:56:11 1996 Aubrey Jaffer * patchlvl.h (SCMVERSION): 4e6 released. * bench.scm (benchmark): added. computes and display statistics on "pi.scm" benchmark. * Makefile (benchlit bench): targets added. Append stats to file "BenchLog". Sun Nov 17 22:21:28 1996 Aubrey Jaffer * scm.texi (Socket): added examples of chat servers and clients. (Internet Addresses and Socket Names): enlarged from "Internet Addresses". * socket.c (l_connect): BUF0 was missing from mode bits set in returned port. Sat Nov 16 22:02:39 1996 Aubrey Jaffer * build.scm (build-params): Added compiler-options and linker-options; added --batch-dialect and --script-name as aliases for -h and -w. * scmfig.h (HAVE_SELECT): Now defined for linux. Sat Nov 2 09:24:50 EST 1996 maximum entropy * ioext.c, scmfig.h: support for SGI (tested with SGI IRIX 5.2/gcc) * ioext.c (file_set_position): If a port is bidirectional (e.g. a socket) it may be necessary on some systems to perform a file positioning operation when switching between reading and writing. This is required by ANSI C (ISO/IEC 9899:1990 7.9.5.3). Therefore, a file-set-position on a bidirectional port should not signal an error if fseek generates an ESPIPE -- the fseek operation actually "succeeded" in that it reset the I/O direction flag for the FILE. * repl.c (input_waiting): R4RS requires that "char-ready?" return "#t" at end-of-file. The semantics for "ioctl(..., FIONREAD, ...)" are such that it gives 0 on a socket that is closed (on the other side of the connection). If the system has select(), use that instead to get the correct behavior. * socket.c (l_listen): Treat sockets that have been "listened" as input-ports. This allows polling for new connections (e.g. with "char-ready?") instead of blocking in "socket:accept". * socket.c (l_accept): Fix type checking to agree with previous patch. Wed Nov 13 17:11:59 1996 Aubrey Jaffer * sys.c (igc): fixed off-by-1 error for sizeof save_regs_gc_mark. (gc_mark): fixed off-by-1 error for sizeof(CONTINUATION). These seem to fix a very obscure GC bug. Tue Oct 29 10:47:41 1996 Aubrey Jaffer * Init.scm (exec-self): Added. * repl.c (init_repl): DUMP sets RESTART to EXEC-SELF. Mon Oct 28 11:39:30 1996 Aubrey Jaffer * repl.c (tryload): Made tail-recursive so that dump, quit, exit, etc. will work as the last expression in a loading file. (scm_execpath): Split out from scm_unexec. Sun Oct 27 22:12:32 1996 Aubrey Jaffer * unexec.c: All Updated from emacs-19.34 -- no changes necessary. * gmalloc.c: * pre-crt0.c: * ecrt0.c: * unexelf.c: fixes Linux (ELF) dump bug. Mon Oct 21 21:49:20 1996 Aubrey Jaffer * build.scm (platform): linux renamed linux-aout. linux-elf fixed and renamed linux. (C-libraries): X11R6 moved library files on RedHat Linux. Linux graphics library now has entry (doesn't default). (compile-dll-c-files linux): (make-dll-archive linux): Now converts from ".o" objects to ELF ".so" form and "links" the usual libraries. * Link.scm (usr:lib x:lib): dynamic linking fixed for (linux ELF) dlopen. Libraries other than ".so" object not needed; eliminated by usr:lib and x:lib returning #f. * dynl.c (l_dyn_unlink): prints result of dlerror() on errors. Thu Oct 10 14:05:14 1996 Aubrey Jaffer * eval.c (nconc2last): If CAUTIOUS is defined, checks that APPLY's arglist and last element of arglist are LIST?s. Sun Oct 6 16:40:54 1996 Radey Shouman * eval.c (unmemocar): The code in unmemocar to deal with ILOCs was never being executed. Fri Oct 4 13:57:35 1996 Aubrey Jaffer * sys.c (igc): symhash GC can now be disabled with #define NO_SYM_GC. Wed Oct 2 20:51:07 1996 Aubrey Jaffer * Init.scm (boot-tail): Added FSF --help and --version options. Added --no-init-file as a synonym for -no-init-file. Sun Sep 29 23:59:19 1996 Aubrey Jaffer * scm.texi (File-System Habitat): improved wording and added examples. Thu Sep 26 22:23:32 1996 Radey Shouman * sys.c (intern): fixed (new) symhash GC bug. Tue Sep 24 13:55:11 1996 Aubrey Jaffer * scm.texi (Top): Renamed sections. * sys.c (mark_syms mark_sym_values): Split up mark_symhash() to immunize against accidental pointers. Sat Sep 14 22:53:46 1996 Aubrey Jaffer * repl.c (gc_ports_collected): added to instrument symbol GC. Sat Sep 14 15:35:29 1996 Radey Shouman * sys.c (igc): Added calls to mark_symhash() and sweep_symhash(). These GC unused symbols with a top-level value of UNDEFINED. (mark_symhash): added. (sweep_symhash): added. Wed Sep 11 21:18:05 1996 Aubrey Jaffer * scm.texi (Debugging Scheme Code): Added section. Sat Aug 31 14:05:24 1996 Eric Hanchrow * scm.c (l_sleep): Ported to Windows NT (_WIN32) * ioext.c: Ported to Windows NT (_WIN32) Sat Aug 31 13:18:34 1996 Aubrey Jaffer * eval.c (definedp): Changed from a memoizing macro to a `syntax'. Sun Jul 21 01:06:44 1996 Aubrey Jaffer * Link.scm (link-named-scm): fixed to call "build.scm". Sat Jul 20 23:53:17 1996 Aubrey Jaffer * scm.texi (Memoized Expressions): section added. (Errors): section added. Wed Jul 17 17:40:01 1996 Aubrey Jaffer * r4rstest.scm: renamed from "test.scm". Now carries copyright notice suitable for single file distribution. Fri May 17 23:37:16 1996 Aubrey Jaffer * findexec.c (dld_find_executable): names changed to keep up with DLD changes. Sun May 12 21:43:14 1996 Radey Shouman * unif.c (array_rank): Was returning 0 for bit-vectors. (uve_fill): Fixed error report. (lcount): (position): Made to work with 1-d shared bit-arrays. (aind): Added check for second argument, must be either an INUM, NULL, or a pair. Without this, e.g. (uniform-vector-set! 'x 0) starts cdr'ing down the symbol ... (array_inbp): Cleaned up to work with enclosed and huge arrays. * gsubr.c (gsubr_apply): Fixed error report. * scl.c (equal): Prevent fallthrough on last case, could cause wierdness if cases are added later. * ramap.c (ra_matchp): Fixed to allow any 1-d array of zero size to match a uniform vector, and to require all non-zero length dimensions of two arrays to match even after a zero length dimension. Now promotes 0-d arrays as well as scalars to match first array shape. (sc2array): Reshapes 0-d arrays as well as scalars. Added check to make sure 2nd argument is really an array, vector or uve. (ramapc): Changed to allocate fewer array headers when arguments are 1-d arrays. (Still allocates more than strictly necessary.) (array_copy): Added check for scalar destination argument, since ra_matchp() will now promote scalars to arrays. Sun May 12 00:52:51 1996 Aubrey Jaffer * build.scm (build): fixed HP-UX compile-dll-c-files. * findexec.c (dld_find_executable): ifdefed out stat() for hpux. * scm.c: New const declarations rejected by hp-ux cc; ifdefed out. Thu May 9 10:28:14 1996 Tim Pierce * time.c sys.c findexec.c: string[s].h configuration for Solaris 2.3 system using gcc 2.7.2. Tue Apr 9 19:46:21 1996 Aubrey Jaffer * sys.c (igc): stackbase argument added. Passing 0 disables stack marking (used by dump). * build.scm (build link-c-program djgpp): (build compile-c-files djgpp): Uses new batch:apply-chop-to-fit to deal with MS-DOS line length restrictions. Sun Apr 7 23:15:36 1996 Aubrey Jaffer * repl.c (repl_driver): now supports unexec conditionally by CAN_DUMP. (scm_unexec): moved from dump.c. Now throws to top level to avoid saving continuations. * dump.c: removed. Contents moved to repl.c. * continue.c (dynthrow): One instruction interrupt vulnerability removed for machines with long ints. Others define SHORT_INT. * repl.c (repl_driver): Throws to top level now encoded by COOKIE flags for non- SHORT_INT platforms. Sat Apr 6 14:29:47 1996 Aubrey Jaffer * unexec.c (A_TEXT_OFFSET A_TEXT_SEEK ADJUST_EXEC_HEADER NO_REMAP TEXT_START HAVE_GETPAGESIZE SEGMENT_MASK): definitions moved from scmfig.h. * gmalloc.c (HAVE_GETPAGESIZE): copied definition here so that scm.h and scmfig.h won't be included for just one definition. * dump.c (scm_dump): reworked to use execpath as default second argument. Removed "#include DUMP_CODE" abomination; using suppress parameters in build.scm * build.scm (build C-libraries): added dump (unexec) and nostart libraries to support dump. (build compile-commands): Added support for dump (build features): dump * scm.c (execpath): now a global which init_dump() also sets. * repl.c (repl_driver): added scm_evstr("(boot-tail)") call after scm_ldfile(initpath) so command-line arguments can be processed after "Init.scm" is loaded. * build.scm (build platform): added record for MS-DOS so defaults don't cause errors when -p not specified. Mon Jan 9 15:43:36 1995 Patrick LECOANET * dump.c (dump): created. * pre-crt0.c crt0.c gmalloc.c unexec.c unexelf.c: adapted from emacs (circa 1994). Fri Apr 5 00:16:59 1996 Aubrey Jaffer * ramap.c (ramapc ra2contig array_imap): Added +0L to cast first argument to make_uve() to long. Thu Apr 4 00:47:09 1996 Aubrey Jaffer * ramap.c: removed #ifdef ARRAYS (over whole file). Wed Apr 3 10:14:18 1996 Aubrey Jaffer * Link.scm (compile-file): Now calls build.scm for compiling C. * hobbit.scm ("auxiliary functions" butlast ...): removed and renamed gratuitous (and incompatible) duplications of slib/comlist.scm. Mon Apr 1 08:56:09 1996 Johann Friedrich Heinrichmeyer * sys.c (stack_check): sizeof(STACKITEM) was multiplied on wrong side of inequality. Fri Mar 29 23:52:03 1996 Aubrey Jaffer * patchlvl.h (SCMVERSION): 4e4 * build.scm (build): microsoft-c-nt support added. * scm.c (l_raise): Disabled for WINDOWS_NT. (scm_find_impl_file): fixed for getenv("SCM_INIT_PATH") case. Sun Mar 24 00:18:10 1996 Aubrey Jaffer * build.scm (build): fixed -tdll to not make archive or compile all 'linkable files. Sun Mar 10 17:23:39 1996 Radey Shouman * ramap.c (sc2array): Added, converts a scalar to a shared array. (ramapc): Uses sc2array to convert scalar arguments to arrays for ARRAY-MAP! &c. (ura_read, ura_write, ura_fill): Added. (array_map): Added check for number of arguments when procedure arg is a subr. Added cclo case. * unif.c (dims2ura): Fixed, it wasn't properly filling its result sometimes. Added range check for size of conventional arrays. (aind): Added range check when called as subr3. (array_inbp): Returns #t if called with a scalar and no index args -- APLish boundary case. (cvref): Now recycles enclosed array refs. (aset): Uses num2dbl for setting inexact array elts, so e.g. (array-set! 0 ...) works. (array_contents): For strict option, wasn't returning an array whenever the base was non-zero, now less restrictive. (ra2contig): moved to ramap.c, as it calls ramapc(). To allow dynamic linking of ramap.c. (rafill): moved from ramap.c, to allow filling of arrays on creation without needing ramap.c. (uve_fill): Added, for filling uves / 1-d arrays without needing ramap.c. (uve_read, uve_write): (Re)added (ura_read, ura_write): Moved to ramap.c, now call uve_[read write]. (ra2l): uses cvref instead of aref, maybe faster and works for enclosed arrays. (init_unif): Added feature 'string-case, to prevent require from nuking STRING-UPCASE!, STRING-DOWNCASE! (encl_array): Added range check for dimension args. * rope.c (num2dbl): Added, analogous to num2dbl. * scmfig.h Eliminated redundant #ifdef * scl.c (makdbl) Rearranged so that it tests for out of range double argument before assigning to float variable, this avoids causing SIGFPE on my Linux box. (equal): Fixed so that it doesn't need extern array_equal, allowing ramap.c to be dynamically linkable. * scm.c Added documented variable *scm-version* Thu Mar 21 00:14:29 1996 Aubrey Jaffer * Link.scm (scm:object-suffix): Changed to ".so" when 'sun-dl is PROVIDED?. * scmfig.h (getcwd): addition for scmconfig. * findexec.c: minor change for scmconfig. Wed Mar 20 00:12:43 1996 Aubrey Jaffer * README (Making SCM with Think C 4.0 or 4.1): Instructions added back in. Sun Mar 17 00:17:21 1996 Aubrey Jaffer * findexec.c (dld_find_executable): Added support for ~ and ~/ in PATH environment variable. Sat Mar 16 10:38:15 1996 Aubrey Jaffer * scm.c (scm_find_impl_file): Added generic_name argument to test for cases where executable *doesn't* have its usual name. (scm_sep_init_try): Added combined function to reduce length of scm_find_impl_file. (scm_try_path): Now tests for (and returns) 0. * build.scm (build): fixed assorted bugs. Tue Mar 12 12:48:28 1996 Aubrey Jaffer * 4e3: released. * repl.c (read_token): ',' now delimits token. Mon Mar 4 23:19:50 1996 Aubrey Jaffer * scm.texi (SLIB and require.scm): SLIB installation and "require.scm" trampoline configuration method explained. * Init.scm (load:pre load:post): added to share code between scm:load and scm:load-source. "require" is now loaded using the regular calls; trying to maintain SCM initializing without SLIB is too hard. Sun Mar 3 10:59:23 1996 Aubrey Jaffer * build.bat: Added for MS-DOS. Fri Mar 1 23:47:57 1996 Aubrey Jaffer * scm.texi (Line Editing): html-linked readline and editline ftp sites. * build.scm: Added support for edline. Wed Feb 28 23:39:55 1996 Aubrey Jaffer * build.scm (build:build): library field `supress-files' added. Used for supressing "findexec.c" when DLD is present. Sun Feb 25 00:29:47 1996 Aubrey Jaffer * scm.c (scm_find_impl_file): Tries hard to find Init.scm in implementation vicinity. (scm_try_path scm_cat_path): used by scm_find_impl_file. (main): Changed to use scm_find_impl_file() and free pathnames before exit. Wed Feb 21 23:27:43 1996 Aubrey Jaffer * findexec.c (dld_find_executable): extracted from DLD for general use. Tue Feb 20 00:08:29 1996 Jochen Schwarze * Init.scm (*vicinity-suffix*): Now includes #\/ for MSDOS, etc. (GCC support). (library-vicinity): Now set from implementation-vicinity if environment variable SCHEME_LIBRARY_PATH is not defined. * scm.c (SYSTNAME): not redefined with DJGPP (both MSDOS and unix). Sun Feb 18 09:29:57 1996 Aubrey Jaffer * subr.c (divbigint): fixed sign bug for 0 return value. Sun Feb 18 00:29:43 1996 Per Bothner * gsubr.c (gsubr_apply): elided gratuitous make_vector call. Sat Feb 17 11:50:41 1996 Aubrey Jaffer * Init.scm (*features*): string-case added. (string-upcase string-downcase string-capitalize): added. * unif.c (strcap): string-capitalize! * sys.c (sysintern): Now looks for (and uses) symbol already created. This will eliminate order of linking and loading dependencies. Tue Sep 26 20:37:25 1995 Aubrey Jaffer (jaffer@jacal) * scm.texi (Evaluation): Enlarged description to include type folding. (Cells): Split Node Cells into Header, Subr, Ptob, and Smob Cells. Fri Sep 22 22:31:13 1995 Aubrey Jaffer (jaffer@jacal) * scm.c scmfig.h (WINDOWS_NT): support added. But what flag does Windows NT #define? Sun Sep 10 13:37:44 1995 Aubrey Jaffer (jaffer@jacal) * repl.c (scm_stack_trace): Added Scheme call "stack-trace" to print stack from exception handlers. (everr): Now processes all exceptions before longjmping to rootcont #ifdef CAUTIOUS. * Init.scm (user-interrupt): If stack-trace available, prints stack-trace and enters breakpoint. (break): Autoloaded. Mon Aug 7 12:52:15 1995 Aubrey Jaffer (jaffer@jacal) * scm.h (stacktrace): now a sys_protect. * subr.c (ilength): differentiated negative return codes; non-terminating returns -1, not a list -2. Sat Aug 5 18:50:11 1995 Aubrey Jaffer (jaffer@jacal) * repl.c (scm_print_stack): added. Called by def_err_response. * eval.c (ceval): SCM stacktrace variable maintained and saved in CONT(cont)->other.stacktrace. Under CAUTIOUS flag, checkargs1 label added to check special single argument calls. Wed Jul 26 23:26:21 1995 Aubrey Jaffer (jaffer@jacal) * repl.c (char_readyp): Now looks for BUF0 flag to determine if input_waiting() possible. * scm.c (init_scm run_scm main): BUF0 flag now set on cur_inp to indicate whether CHAR-READY? will work. Wed Jul 19 13:25:01 1995 Shigenobu Kimura * dynl.c (l_dyn_main_call): Arguments to main (in DLD section) were reveresed! Added hpux l_dyn_main_call. Sat Jul 8 22:23:03 1995 Aubrey Jaffer (jaffer@jacal) * Init.scm (scm:load): Internal define dependency problem fixed. Variable *interactive* set for invocation without options. * scm.texi: Guile WWW and citation added. * subr.c: logical (2's complement) operations rewritten to now work with bignums. Logical procedure names changed to conform with Guile convention. Fri Jun 9 13:47:58 1995 Aubrey Jaffer (jaffer@jacal) * continue.c (stack_size): (make_root_continuation): (make_continuation): (free_continuation): (throw_to_continuation): moved from sys.c to make possible library module. * continue.h: created from setjump.h * scm.texi (Compiling And Linking): Documented l_dyn_main_call. (Type Conversions): added rope.c documentation. (Callbacks): split from "Calling Scheme From C". (Continuations): Rewritten to describe new "continue.c" Fri May 19 01:32:12 1995 Aubrey Jaffer (jaffer@jacal) * *.c: converted applicable uses of makfromstr with strlen to makfrom0str. * rope.c: new (scm_addr): added. (num2long num2ulong num2ushort num2uchar ulong2num long2num): moved from scl.c and elsewhere. (makfromstrs makfrom0str makfromstr): moved from sys.c and posix.c (must_free_argv): new (scm_ldprog scm_ldfile scm_ldstr scm_evstr): moved from repl.c (makargvfrmstrs): chopped out of i_execv in ioext.c. makargvfrmstrs isn't really done correctly; it is GC leaky. It should return a SMOB which can be GCed, but this makes this C interface harder to use. * dynl.c (l_dyn_main_call): added procedure to call dynamically linked procedure with string arguments converted to argv and argc. Written only for DLD. Needs to be repeated for other dynamic linking regimes. Tue Apr 25 10:24:42 1995 Aubrey Jaffer (jaffer@jacal) * subr.c (make_string): Was silently failing for illegal 2nd args! Sat Apr 15 23:18:47 1995 Aubrey Jaffer (jaffer@jacal) * Link.scm (catalog:add-link): When feature is already in catalog, will only add new feature association to catalog if file exists. Sun Apr 9 22:59:46 1995 Aubrey Jaffer (jaffer@jacal) * repl.c (repl_driver): Now closes load port when ABORTing. Sat Apr 8 21:35:43 1995 Aubrey Jaffer (jaffer@jacal) From: Tom Lord * scm.texi: Tcl Facilities:: Mutual calling between Tcl and Scheme. Tk Facilities:: Accessing Tk from Scheme. Gwish:: A Wish-like application of Guile. System Calls:: Psst. Wanna write a manual section? Gscsh:: Shell and systems programming features. From: chen@adi.com (Franklin Chen) * scm.c (l_raise): uses raise() ifdef STDC_HEADERS, otherwise kill(). From: Radey Shouman * scl.c (istr2int): Fixed complaints of overflow on octal numbers >= 2^BITSPERDIGIT. Patch should make this work for all radix 2 <= radix <= 16. (num2ulong): Makes it work for negative bignum argments, and adds an overflow check. * ramap.c unif.c: There are several places in ramap.c, and raprin1() in unif.c, where I had assumed that an ivect or uvect elt would be representable no larger than an INUM. This patch should fix these, also adding overflow checking for array arithmetic on uvects and ivects. Also, fixes aref, which assumed that if its argument was a smob that it was an array. Changes cvref to return a real number when the imaginary part of an elt is 0. Sat Mar 25 20:37:48 1995 Aubrey Jaffer (jaffer@jacal) From: Don Bennett * rgx.c: rewritten and extended. The compile function now takes a string of optional flags. New operations specific to the GNU regex library is conditionalized with _GNU_SOURCE. From: Radey Shouman * Iedline.scm ((make-edited-line-port)): * edline.c (lreadline): Added Gnu `readline' input editing (get ftp.sys.toronto.edu:/pub/rc/editline.shar). * unif.c (ra2contig): Fix a nasty bug ra2contig() (used for UNIFORM-ARRAY-WRITE / READ!) that produced arrays with undersized contents vectors. * eval.c (apply): Fix so that (APPLY '()) works properly. * gsubr.c (make_gsubr): Give the arg number ASSERTion the right sense. (gsubr_apply): Add an ASSERTion to check for too many arguments. (gsubr_apply): Take the address of the temporary vector, so as to prevent its being optimized away and allowing gc of the vector. (This happened with Cray cc in the MAP and FOR-EACH code; I'm no longer able to find out if it would happen there.) Thu Mar 23 23:22:59 1995 Aubrey Jaffer (jaffer@jacal) * scm.texi (I/O-Extensions): Finished. * Init.scm (scm:load): `loading' messages now indented. Sat Mar 4 20:58:51 1995 Aubrey Jaffer (jaffer@jacal) * scm.texi: documentation finished for "posix.c" and "unix.c". * posix.c (scm_getgroups): added. * posix.c (makfrom0str): According to glibc.info, some field in structures like pwent may have NULL pointers. Changed makfrom0str to return BOOL_F in this case. Thu Mar 2 12:52:25 1995 Aubrey Jaffer (jaffer@jacal) * time.c: CLKTCK set from CLOCKS_PER_SEC, if available. Metaware HighC ported. * scm.h: USE_ANSI_PROTOTYPES now controls prototypes (was __STDC__). This allows an overly fussy compiler to still have __STDC__. From: dorai@ses.com (Dorai Sitaram) * ioext.c (l_utime): include files fixed for __EMX__ Sun Feb 26 21:03:04 1995 Aubrey Jaffer (jaffer@jacal) * sys.c (gc_mark gc_sweep): tc7_ssymbol now gets GCed because it gets used for non-GCed strings in scm_evalstr scm_loadstr. (mkstrport cwos cwis): changed so caller's name is passed into mkstrport(). * repl.c (scm_eval_string scm_evalstr scm_load_string scm_loadstr): added for easier C to scheme callbacks. (loadport): variable added so lreadr() and flush_ws() increment linum only when reading from the correct port. (def_err_response): now handles ARGn for argument numbers > 5 and unknown position arguments. * dynl.c: Dynamic Linking now sets and restores *load-pathname* around the init_ call. Sat Feb 25 11:03:56 1995 Aubrey Jaffer (jaffer@jacal) * scm.c (lsystem getenv softtype ed vms_debug): moved from scl.c. (add_feature): moved from repl.c. (features): init table removed (caused multiple symbols). Fri Feb 24 23:48:03 1995 Aubrey Jaffer (jaffer@jacal) * scm.c (scm_init_extensions COMPILED_INITS): Added so that statically linked, compiled code can be initialized *after* most of Init.scm has loaded. Wed Feb 22 15:54:01 1995 Aubrey Jaffer (jaffer@jacal) * subr.c (append): Added check for bad arguments and fixed errobj. Sun Feb 19 01:31:59 1995 Aubrey Jaffer (jaffer@jacal) * ioext.c (exec execp): changed so that 2nd arguments is argv[0] (like posix) and renamed to execl and execlp. (execv execvp): added. Sat Feb 11 17:30:14 1995 Aubrey Jaffer (jaffer@jacal) * ioext.c (lexec): moved from repl.c and scm.c. (lexecp i_exec l_putenv): added. * posix.c (open_pipe l_open_input_pipe l_open_output_pipe prinpipe): moved from ioext.c. (l_fork): added. Fri Feb 10 10:50:03 1995 Aubrey Jaffer (jaffer@jacal) * scl.c (num2long long2num): moved here from subr.c. (num2ulong): fixed (< to >=) bug. * unif.c (aset array2list array_ref cvref): uniform integers and unsigned integer arrays now handle full size integers (and inexacts) using num2long, num2ulong, long2num, and ulong2num when INUMS_ONLY is not defined. * scmfig.h (INUMS_ONLY): defined when INUMs are the only numbers. Sun Jan 29 23:22:40 1995 Aubrey Jaffer (jaffer@jacal) * scm.texi (Overview): scm.1 converted to texinfo format and incorporated. Sun Jan 22 11:13:58 1995 Aubrey Jaffer (jaffer@jacal) * scm.texi (Internals): code.doc converted to texinfo format. Much added and reorganized. code.doc removed. Thu Jan 19 00:40:11 1995 Aubrey Jaffer (jaffer@jacal) * subr.c (logbitp logtest): added. Wed Jan 11 14:45:17 1995 Aubrey Jaffer (jaffer@jacal) * scl.c (num2ulong): checks for bignum sign and magnitude added. * subr.c (logand logior logxor lognot): lognot restriction to INUMs removed. Logand, logior, and logxor now will work for up to 32 bit signed numbers. Tue Jan 10 13:19:52 1995 Aubrey Jaffer (jaffer@jacal) * repl.c (def_err_response): Circuitous call to quit() replaced with exit(EXIT_FAILURE); (everr): Now calls def_err_response() in interrupt frame if errjmp_bad or there are dynwinds to do. This prevents silent failure in batch mode. Mon Jan 9 00:12:14 1995 Aubrey Jaffer (jaffer@jacal) * scm.texi (Trouble Shooting): Section converted from README. * Init.scm (-d filename): option added which does: (begin (require 'database-utilities) (open-database filename)) * repl.c (handle_it): Now discards possibly used top freelist cell for GC safety. Also now just punts if errjmp_bad. * scm.texi: converted from MANUAL. GUILE documentation merged in. Tue Jan 3 15:09:36 1995 Aubrey Jaffer (jaffer@jacal) * scl.c (SYSTNAME): msdos changed to ms-dos. windows added. archimedes changed to acorn. From: jon_seymour@vnet.ibm.com (jon seymour) * scmfig.h: defined LACK_TIMES and STDC_HEADERS if __IBMC__ is defined. * sys.c: #include and #include . define ttyname() macro. * scm.c: #include and compile out execvp() call. * time.c: #include * makefile.os2: makefile for use with OS/2 toolkit nmake. Sun Jan 1 21:17:36 1995 Aubrey Jaffer (jaffer@jacal) * dynl.c Link.scm: names unified. Libraries for HP-UX fixed. HP-UX dll suffix now ".sl". From: Shigenobu Kimura * dynl.c (fcall): Fixed dynamic linking on hp9000s700 (or 720) HP-UX 9.01 or 9.03. Wed Dec 7 21:19:26 1994 Aubrey Jaffer (jaffer@jacal) * ioext.c (l_open_input_pipe, l_open_output_pipe): moved from "Init.scm". Mon Dec 5 16:55:21 1994 Aubrey Jaffer (jaffer@jacal) * sys.c (i_setbuf0): added. (open_file): `0' in mode string now controls the buffered-ness of returned port. * Init.scm (slib:load-compiled): no longer silently fails if other than the first argument does not link correctly. From: Robert Sanders * ioext.c (l_write_line): moved from "Init.scm". Sun Dec 4 21:47:08 1994 Aubrey Jaffer (jaffer@jacal) * sys.c (free_storage): lord@cygnus.com pointed out that candle was being burnt from both ends. Loop fixed. Mallocs either leaking or counted wrong. Sat Dec 3 22:32:59 1994 Aubrey Jaffer (jaffer@jacal) * code.doc: added description of compiled closures. Thu Nov 24 23:10:31 1994 Aubrey Jaffer (jaffer@jacal) * socket.c (l_socketpair): added. Both make-stream-socketpair and make-stream-socket now take optional prototype argument. Tue Nov 22 00:16:05 1994 Aubrey Jaffer (jaffer@jacal) * ramap.c (ramapc and friends): moved from unif.c to get source file sizes below 64k. Mon Nov 21 00:44:32 1994 Aubrey Jaffer (jaffer@jacal) * posix.c (l_pwinfo grinfo): made to work like network inquiry procedures (no args steps through entries). (l_setgr l_setpw l_uname): added. From: Radey Shouman * gsubr.c (make_gsubr gubr_apply): allows arbitrary (< 11) required, optional, and rest arguments to compiled functions. Sun Nov 20 11:59:18 1994 Aubrey Jaffer (jaffer@jacal) * socket.c MANUAL: most Scheme names for socket functions changed for consistency. * socket.c (socket:shutdown): added. I can't imagine what use shutdown provides. SOCKETs can be closed like any other port. Should socket:shutdown SOCKETs be closed? Does having shutdown sockets cause file descriptors to be reused? Socket:shutdown will be removed if no use is found for it. (tc16_sknm): added to encapsulate information retrieved from getpeername and getsockname. (socket-name:family socket-name:port-number socket-name:address): added to retrieve information from tc16_sknm. (inet:string->address inet:address->string inet:network inet:local-network-address inet:make-address): added. (gethost sethostent getnet getnetent getproto setprotoent getserv setservent): inquiry procedures added. * sys.c (makfromstrs(argc, argv)): added. converts C array of strings to SCM list of strings. If argc < 0, a null terminated array is assumed. Sat Nov 19 00:20:58 1994 Aubrey Jaffer (jaffer@jacal) * eval.c (l_proc_doc): added procedure-documentation. Fri Nov 18 23:34:35 1994 Aubrey Jaffer (jaffer@jacal) * build.scm (scm:build): Added. Replaces system specific makefiles. * ccnfigdb.scm: Database of system specific compile, link, and archive procedures and library information. Thu Oct 27 12:57:02 1994 Jerry D. Hedden * ioext.c: conditional code for vms and version (3.6) of Aztec C. * pi.scm ((e digits)): Modified 'bigpi' for slight speed improvement. Added function to calculate digits of 'e'. Wed Oct 26 11:22:05 1994 Gary Houston * scl.c (round): Now rounds as described in R4RS. * test.scm (test-inexact): test cases for round. Tue Oct 25 00:02:27 1994 Aubrey Jaffer (jaffer@jacal) * sys.c (grow_throw lthrow dynthrow): now pass arrays, check for adequate growth, and clear out register windows (on sparc). Mon Oct 24 01:05:34 1994 Aubrey Jaffer (jaffer@jacal) * ioext.c (ttyname fileno): added. Sat Oct 22 12:12:57 1994 Aubrey Jaffer (jaffer@jacal) * unix.c (symlink readlink lstat): added. * scmfig.h repl.c sys.c (IO_EXTENSIONS): flag removed. * ioext.c (read-line read-line! file-position, file-set-position reopen-file open-pipe opendir readdir rewinddir closedir chdir umask rename-file isatty? access chmod mkdir rmdir stat utime raise): moved from "repl.c" and "sys.c". Fri Oct 21 21:19:13 1994 Radey Shouman * unif.c (ra2contig): now has a second parameter to indicate whether copying is necessary or not. Eliminates gratuitous copy by UNIFORM-ARRAY-READ! when called with a noncontiguous array. (array_map): more liberal check on when ARRAY-MAP! can use array-ified asubrs. Thu Oct 20 18:00:35 1994 Aubrey Jaffer (jaffer@jacal) * sys.c (opendir readdir rewinddir closedir reopen-file): added under IO_EXTENSIONS. Wed Oct 19 14:18:26 1994 Aubrey Jaffer (jaffer@jacal) * eval.c (badargsp): added under ifndef RECKLESS to check @apply and apply() arg counts. Tue Oct 18 00:02:10 1994 Aubrey Jaffer (jaffer@jacal) * unix.c (mknod acct nice sync): added. * socket.c (socket bind! gethost connect! listen! accept): added. * time.c (utime): added under IO_EXTENSIONS. Mon Oct 17 23:49:06 1994 Aubrey Jaffer (jaffer@jacal) * sys.c (getcwd umask access chmod mkdir rmdir): added under IO_EXTENSIONS. * scm.c (l_pause): added if SIGALRM defined. (l_sleep): added if SIGALRM not defined. * scl.c (num2ulong): added. Used in "time.c" Sun Oct 16 22:41:04 1994 Aubrey Jaffer (jaffer@jacal) * sys.c (access chmod): Posix access added under IO_EXTENSIONS. Fri Oct 14 09:45:32 1994 Aubrey Jaffer (jaffer@jacal) * posix.c (chown link pipe waitpid, kill, getpw, getgr, get*id, set*id): added. * time.c (l_raise l_getpid): added * subr.c (ulong2big): * scl.c (ulong2num): useful routines for system call data conversion moved from "time.c". Thu Sep 22 14:48:16 1994 Aubrey Jaffer (jaffer@jacal) * subr.c (big2inum): (more accruately) renamed from big2long. Mon Aug 29 11:36:46 1994 Radey Shouman * unif.c: This is a large patch, but also a bit larger than it appears -- I moved a few function definitions around to eliminate gratuitous forward references. * unif.c repl.c (raprin1): Combined print routine for arrays with that for uves. * unif.c (UNIFORM-VECTOR-READ! and -WRITE): work with general arrays, by copying when necessary, renamed them to UNIFORM-ARRAY-READ! and -WRITE. * unif.c (ARRAY-CONTENTS): Generalized so that it returns a 1-d array even when the stride in the last dimension is greater than one, gave it an optional second argument STRICT, which makes it behave as it did before, returning an array/vector only if the contents are contiguous in memory. * unif.c (ARRAY-CONTIGUOUS?) Eliminated. Instead, use (lambda (ra) (array? (array-contents ra #t))) * unif.c code.doc (ramapc): unrolls arrays mapping into one loop if possible, to make this quick, changed the format of the array CAR, now uses one bit to indicate that an array is contiguous -- this still allows a ridiculous number of dimensions. * scm.h (DSUBRF): dsubrs are mapped directly, to allow this I moved the typedef for dsubr and #define for DSUBRF to scm.h * unif.c (ARRAY-MAP!) taught something about subrs, now most subrs may be mapped without going through apply(), saving time and reducing consing. +, -, *, /, =, <, <=, >, and >= are mapped directly as special cases -- for uniform arrays this is nearly as fast as the equivalent C, and doesnt' cons. I've made sure that +, -, *, and / vectorize on the CRAY, this may be wasted effort but the effort is not great. * unif.c (ARRAY-COPY!) now copies many arrays of differing types to each other without going through the aref/aset, e.g. float -> double, double -> complex, integer -> float ... This should make array type coercions for arithmetic faster. * unif.c (TRANSPOSE-ARRAY) Added, which returns a shared array that is the transpose of its first argument. I think this does what an APL:TRANSPOSE would. * unif.c (ENCLOSE-ARRAY) Added, this returns an array that looks like an array of shared arrays, the difference being that the shared arrays are not actually allocated until referenced. Internally, the contents of an enclosed array is another array. The main reason for this is to allow a reasonably efficient implementation of APL:COMPRESS, EXPAND, and INDEXING. In order to actually make an array of shared arrays, just use ARRAY-COPY!. * unif.c (cvref): Created internal version of aref(), cvref() that doesn't do error checking; Thus speeding things up. Profiling of SCM running array code revealed that aref() was taking a surprising fraction of the CPU time TO DO: The mechanism for looking up the vectorized functions is a little kludgy, I was tempted to steal some of the CAR of the subr type to encode an offset into a table of vectorized functions, but this would make it more likely that dynamically loaded subrs lose thier names. It is almost possible to write APL:+ and friends now, it is just necessary to figure out the appropriate type of the returned array and allocate it, and to promote scalar arguments to arrays (with increments 0). This doesn't include vectorized REAL-PART, IMAG-PART, MAKE-RECTANGULAR ... I think some C support for APL:REDUCE and maybe INNER-PRODUCT will be needed for a reasonably fast APL.scm unif.c is getting quite big, time to split it up? Mon Sep 5 22:44:50 1994 Aubrey Jaffer (jaffer@jacal) * Init.scm repl.c (quit): code was not using return values correctly. Sun Aug 21 01:02:48 1994 Aubrey Jaffer (jaffer@jacal) * record.c (init_record): remaining record functions moved into C code. * eval.c sys.c: compiled closures now conditional under CCLO. Sat Aug 20 23:03:36 1994 rshouman@chpc.utexas.edu (Radey Shouman) * eval.c (ceval apply): * sys.c (makcclo): tc7_cclo, compiled closures, now supported. * record.c (init_record): C implementation of slib "Record"s using CCLO. * scm.h subr.c (QUOTIENT MODULO REMAINDER): fixes a bug for bignums with DIGSTOOBIG defined. Also, changed the return type of longdigs() to void, since that value is no longer used anywhere. Mon Aug 1 11:16:56 1994 Aubrey Jaffer (jaffer@jacal) * time.c (curtime): replaces get-universal-time. Other time functions removed (SLIB support more complete). * subr.c (divbigbig): fixed (modulo -2177452800 86400) => 86400 bug. Also added to test.scm. Sun Jul 24 16:09:48 1994 Aubrey Jaffer (jaffer@jacal) * dynl.c (init_dynl): *feature* dld:dyncm added for dynamically (ldso) linked libc.sa and libm.sa (under Linux). Fri Jul 15 12:53:48 1994 Aubrey Jaffer (jaffer@jacal) * unif.c (array-fill!): bug with increment in default clause fixed. Fast string support added. From: rshouman@chpc.utexas.edu (Radey Shouman) * unif.c (array-fill! array-for-each): bug fixes. Sun Jul 10 01:51:00 1994 Aubrey Jaffer (jaffer@jacal) * scm.c (run_scm init_scm): "-a" heap allocation argument supported. * Makefile (proto.h): removed. From: Drew Whitehouse, Drew.Whitehouse@anu.edu.au * scm.h (P): Conditionalized ANSI'fied version of the scm.h. Sun Jun 26 12:41:59 1994 Aubrey Jaffer (jaffer@jacal) * Link.scm (usr:lib lib): Now checks for shared libraries (lib*.sa) first. Thu Jun 23 19:45:53 1994 Aubrey Jaffer (jaffer@jacal) * scl.c scm.c: Support for compilation under Turbo C++ for Windows (system and exec disabled) added under C flag "_Windows". Sat Jun 18 11:47:17 1994 Aubrey Jaffer (jaffer@jacal) * test.scm ((test-delay)): added. ((test-bignum)): added and called automatically if bignums suported. test-inexact called automatically if inexacts supported. Mon Jun 6 09:26:35 1994 Aubrey Jaffer (jaffer@jacal) * Init.scm (trace untrace): moved to SLIB/trace.scm. Thu May 12 00:01:20 1994 Aubrey Jaffer (jaffer@jacal) * Link.scm: Autoload for hobbit now does (provide 'hobbit). This allows hobbit to know if it is self compiling (although reloads of hobbit will not be quite right). ((compile file . args)): removed. * makefile.unix (proto.h): removed. * Transcen.scm: compile-allnumbers HOBBIT declaration added. Init.scm will now load compiled Transcen.o. * scm.h: HOBBIT section removed. * README (SLIB): Now strongly recommends getting SLIB and lists ftp sites. * eval.c (m_delay): fixed bug with multiple sets of (delay x). Thu Apr 28 22:41:41 1994 Aubrey Jaffer (jaffer@jacal) * unif.c (makflo): shortcut for single precision float arrays added. Fri Apr 15 00:54:14 1994 rshouman@chpc.utexas.edu (Radey Shouman) * unif.c: no longer uses pointer comparisons in loops. Should fix problems on 8086 processors. * unif.c (make_sh_array): Fixes MAKE-SHARED-ARRAY so that shared arrays with only 1 element in some direction may still be ARRAY-CONTIGUOUS? (uve_write uve_read): Fixes bug in UNIFORM-ARRAY-WRITE, UNIFORM-ARRAY_READ!. Now they do the right thing for shared bit-arrays not starting at the beginning of their contents vector. (array_contents ARRAY-SIMPLE?): ARRAY-CONTENTS may now return a shared, contiguous, 1-d array, instead of a vector, if the array cannot access all of the contents vector. ARRAY-SIMPLE? removed. (array-fill!): a replacement and generalization of UNIFORM-VECTOR-FILL!. (raequal): Combines with uve_equal(), providing also ARRAY-EQUAL? ARRAY-EQUAL? is equivalent to EQUAL? if all its arguments are uniform vectors or if all are arrays. It differs from EQUAL? in that a shared, 1-d array may be ARRAY-EQUAL? to a uniform vector. for example (define sh (make-shared-array '#(0 1 2 3) list '(0 1))) ==> #1(0 1) (equal? '#(0 1) sh) ==> #F (array-equal? '#(0 1) sh) ==> #T (list2ura): Combines list2uve() and list2ura(). Thu Apr 14 23:26:54 1994 Aubrey Jaffer (jaffer@jacal) * time.c (LACK_FTIME LACK_TIMES): defined for vms. Mon Apr 4 10:39:47 1994 Aubrey Jaffer (jaffer@jacal) * eval.c (copytree): now copies vectors as well. * repl.c (quit): now accepts #t and #f values. Sun Apr 3 23:30:14 1994 Aubrey Jaffer (jaffer@jacal) * repl.c (repl): call to my_time() moved to not include READ time. * time.c (mytime): now prefers to use times() over clock(). Compilation constant CLOCKS_PER_SEC doesn't scale when a binary is moved between machines. Thu Mar 31 16:22:53 1994 Aubrey Jaffer (jaffer@jacal) * Init.scm (*SCM-VERSION*): added. * Makefile (intro): Added message for those who just make. Cleaned up and reorganized Makefile. * patchlvl.h (PATCHLEVEL): removed. Whole version now just in SCMVERSION. Wed Mar 23 00:09:51 1994 rshouman@chpc.utexas.edu (Radey Shouman) * repl.c (iprin1): Characters higher than 127 print as #\. * Init.scm ((read:array digit port)): added. Most # syntax handled in read:sharp. * unif.c (clist2uve clist2array): removed. Fri Mar 11 15:10:53 1994 Radey Shouman (rshouman@chpc.utexas.edu) * sys.c (sfgetc): can now return EOF. Mon Mar 7 17:07:26 1994 Aubrey Jaffer (jaffer@jacal) * patchlvl.h (SCMVERSION): 4e0 * scmfig.h: was config.h (too generic). * scm.c (main run_scm) repl.c (repl_driver init_init): now take initpath argument. IMPLINIT now used in scm.c Sun Feb 27 00:27:45 1994 Aubrey Jaffer (jaffer@jacal) * eval.c (ceval m_cont IM_CONT): @call-with-current-continuation special form for tail recursive call-with-current-continuation added. call_cc() routine removed. Fri Feb 25 01:55:06 1994 Aubrey Jaffer (jaffer@jacal) * eval.c (ceval m_apply IM_APPLY apply:nconc-to-last): @apply special form for tail-recursive apply added. ISYMs reactivated. Mon Feb 21 14:42:12 1994 Aubrey Jaffer (jaffer@jacal) * crs.c (nodelay): added. In NODELAY mode WGETCH returns eof-object when no input is ready. * Init.scm ((read:sharp c port)): defined to handle #', #+, and #-. * repl.c (lreadr): Now calls out to Scheme function read:sharp when encountering unknown #. Tue Feb 15 01:08:10 1994 Shiro KAWAI * eval.c (ceval apply): under flag CAUTIOUS, checks for applying to non-lists added. Sat Feb 12 21:23:01 1994 Aubrey Jaffer (jaffer@jacal) * sys.c (sym2vcell intern sysintern): now use internal strhash(). * scl.c sys.c (hash hashv hashq strhash()): added. Sat Feb 5 01:24:35 1994 Aubrey Jaffer (jaffer@jacal) * scm.h (ARRAY_NDIM): #define ARRAY_NDIM NUMDIGS changed to #define ARRAY_NDIM(x) NUMDIGS(x) to correct problem on Next. Fri Feb 4 23:15:21 1994 rshouman@chpc.utexas.edu (Radey Shouman) * unif.c: 0d arrays added. Serial array mapping functions and ARRAY-SIMPLE? added. Thu Feb 3 12:42:18 1994 Aubrey Jaffer (jaffer@jacal) * scm.h (LENGTH): now does unsigned shift. Wed Feb 2 23:40:25 1994 Aubrey Jaffer (jaffer@jacal) * Link.scm (*catalog*): catalog entries for db (wb), turtle-graphics, curses, regex, rev2-procedures, and rev3-procedures added. Sun Jan 30 19:25:24 1994 rshouman@chpc.utexas.edu (Radey Shouman) * sys.c eval.c setjump.h setjump.s (longjump setjump): full continuations now work on Cray YMP. Thu Jan 27 01:09:13 1994 Aubrey Jaffer (jaffer@jacal) * dynl.c MANUAL Init.scm (init_dynl): dynamic linking modified for modern linux. Sat Jan 22 17:58:55 1994 Aubrey Jaffer (jaffer@jacal) From: ucs3028@aberdeen.ac.uk (Al Slater) * makefile.acorn repl.c (set_erase): Port to acorn archimedes. This uses Huw Rogers free unix function call library for the archimedes - this is very very widely available and should pose no problem to anyone trying to find it - its on every archimedes ftp site. From: hugh@cosc.canterbury.ac.nz (Hugh Emberson) * dynl.c Link.scm: Dynamic Linking with SunOS. Thu Jan 6 22:12:51 1994 (jaffer at jacal) * sys.c (gc_mark mark_locations): now externally callable. Sun Jan 2 19:32:59 1994 fred@sce.carleton.ca (Fred J Kaudel) * unif.c (ra_matchp ramapc): patch to unif.c avoids two problems (K&R C does not allow initialization of "automatic" arrays or structures). This was not use in 4d2 or previously, and the following patch ensures that such initialization only occurs for ANSI C compilers (Note that K&R C compilers need to explicitly assign the values). Sat Dec 18 23:55:30 1993 (jaffer at jacal) * scm.1 scm.doc (FEATURES): improved and updated manual page. * repl.c (BRACKETS_AS_PARENS): controls whether [ and ] are read as ( and ) in forms. Wed Dec 8 23:13:09 1993 rshouman@chpc.utexas.edu (Radey Shouman) * unif.c: More array fixes and functions. Tue Dec 7 00:44:23 1993 (jaffer at jacal) * dynl.c (dld_stub): removed since dld is working better on Linux. Wed Dec 1 15:27:44 1993 (jaffer at jacal) * scm.h (SNAME): explicit cast added to get rid of compiler warnings. From: bh@anarres.CS.Berkeley.EDU (Brian Harvey) * repl.c (repl) output newlines when more than one form on a line for Borland C. From: rshouman@chpc.utexas.edu (Radey Shouman) * unif.c: More array fixes and documentation. Mon Nov 29 01:06:21 1993 rshouman@chpc.utexas.edu (Radey Shouman) * unif.c: More array functions (need documentation). Sun Nov 28 01:34:22 1993 (jaffer at jacal) * scm.h (SNAME): returns a pointer to nullstr if offset is 0. * subr.c eval.c (make_synt make_subr): now check that offset from heap_org hack works for each subr. If not, 0 is used. * Link.scm (compile-file): compiles SCM file to object suitable for LOAD. * Link.scm: initialization file created with Scheme code for compilation and linking. LOAD now automatically loads SCM object files. * dynl.c Init.scm: dynamic linking now works under DLD on Linux. Wb, crs, and sc2 can by dynamically loaded. Thu Nov 25 22:58:36 1993 (jaffer at jacal) * sys.c (ltmpnam): return value of mktemp call tested in accord with HP-UX documentation (returns "" on error). * config.h (SYSCALLDEF): removed. Macro I/O calls (getc, putc) replaced with function versions. Control-C interrupts should work while pending input on all systems again. Tue Nov 23 01:18:35 1993 dorai@cs.rice.edu (Dorai Sitaram) * repl.c sys.c time.c config.h: MWC (Mark Williams C) support. Sun Nov 7 10:58:53 1993 "Greg Wilson" * scm.c config.h (TICKS ticks tick-interrupt): if TICKS is #defined, ticks and tick-interrupt work like alarm and alarm-interrupt, but with units of evaluation rather than units of time. Mon Nov 1 18:47:04 1993 (jaffer at jacal) * unif.c (uniform-vector-ref => array-ref): integrated arrays with uniform-vectors. Strings, vectors, and uniform-vectors now just special case of arrays (to the user). Fri Oct 29 01:26:53 1993 (jaffer at jacal) * unif.c (rasmob tc16_array): arrays are now a smob. Thu Oct 28 01:21:43 1993 (jaffer at jacal) * sys.c repl.c (igc gc_start): GC message gives reason for GC. Wed Oct 27 10:03:00 1993 (jaffer at jacal) * config.h (SICP): flag makes (eq? '() '#f) and changes other things in order to make SCM more compatible with Abelson and Sussman's book. * sys.c (gc_mark gc_sweep mark_locations): GC bug fixed. GC from must_malloc would collect the tc_free_cell already allocated. * sys.c setjump.h (must_malloc must_realloc INIT_MALLOC_LIMIT): modified to call igc when malloc usage exceeds mtrigger (idea from hugh@ear.MIT.EDU, Hugh Secker-Walker). From: Jerry D. Hedden * pi.scm (bigpi): bignum version of pi calculator. Tue Oct 26 18:41:33 1993 (jaffer at jacal) * repl.c (room): added procedure for printing storage statistics. Sun Oct 24 22:40:15 1993 (jaffer at jacal) * config.h eval.c scl.c (STACK_LIMIT CHECK_STACK): added. * sys.c (stack_check): added. Sat Oct 23 00:08:30 1993 (jaffer at jacal) * sys.c (mallocated): added to keep track of non-heap usage. * sys.c (igc): fixed interrupt vulnerabilities around gc. Sun Oct 17 13:06:11 1993 (jaffer at jacal) * repl.c (exit_report): added. Prints cumulative times if (verbose > 2). Called from free_storage(). * repl.c (repl): fixed CRDYP(stdin) BUG! Transcripts should work again. Other annoying CR behaviour fixed. * time.c (init_time your_base my_base): now not reset when restarting so timing numbers for restarting are correct. * scm.h (sys_protects): rearranged. * sys.c (tmp_errp): now a statically allocated global variable, used by init_storage and free_storage. * scm.h sys.c (tc16_fport, tc16_pupe, tc16_strport, tc16_sfport): now #defines (which must correspond to order of newptob calls). Sun Oct 3 20:38:09 1993 Bryan O'Sullivan (bos@scrg.cs.tcd.ie) * README.unix configure configure.in scmconfig.h.in mkinstalldirs Makefile.in acconfig-1.5.h: SCM can now be built using GNU autoconf. Put in scmconfig4c5.tar.gz Sun Oct 3 00:33:57 1993 (jaffer at jacal) * MANUAL (bit-count bit-position bit-set*! bit-count* bit-invert!): (from unif.c) are now documented. * sys.c (fixconfig): added 3rd argument to distinguish between setjump.h and config.h. * setjump.h config.h: moved IN_SYS stuff from config.h to setjump.h. * config.h (HAVE_CONFIG_H): User config preferences now taken from "scmconfig.h" if HAVE_CONFIG_H is defined. * config.h (EXIT_SUCCESS EXIT_FAILURE): fixed for VMS. Sat Oct 2 00:34:38 1993 rshouman@hermes.chpc.utexas.edu (Radey Shouman) * unif.c repl.c: added read and write syntax for uniform vectors. * unif.c (uniform-vector->list list->uniform-vector): created. * time.c (time_in_msec): conditionalized for wide range of CLKTCK values. * config.h (BITSPERDIG POINTERS_MUNGED) * scm.h (PTR2SCM SCM2PTR) * scl.c (DIGSTOOBIG) Ported SCM to Unicos, the Cray operating system. From: schwab@ls5.informatik.uni-dortmund.de (Andreas Schwab) * scl.c (dblprec): set from DBL_DIG, if available. Fri Oct 1 21:43:58 1993 (jaffer at jacal) * unif.c (bit-position): now returns #f when item is not found. Now returns #f when 3rd argument is length of 2nd argument (instead of error). Fri Sep 24 14:30:47 1993 (jaffer at jacal) * sys.c (free_storage): fixed bug where growth_mon was being called after the port cell had been freed. gc_end now also called at end. Tue Sep 21 23:46:05 1993 (jaffer at jacal) * Init.scm scm.c: Restored old command line behaviour (loading all command line arguments) for case when first command line argument does not have leading `-'. * sys.c (mode_bits): abstracted from open_file and mksfpt. * scm.h (*FPORTP): series of predicates added for operations which only work on some fports. * sys.c crs.c: ungetc removed from ptobfuns structure and soft-ports. Mon Sep 20 23:53:25 1993 (jaffer at jacal) * sys.c (make-soft-port): Soft-ports added, allowing Scheme i/o extensions. Sun Sep 19 22:55:28 1993 (jaffer at jacal) * 4c4: released. * Init.scm scm.c scm.1: command line proccessing totally rewritten. Thanks to Scott Schwartz for help with this. Mon Sep 13 21:45:52 1993 pegelow@moorea.uni-muenster.de (Ulrich Pegelow) * scl.c (add1): finally a way to fool optimizing gcc to not use extra precision registers. Sun Sep 12 18:46:02 1993 (jaffer at jacal) * sys.c (pwrite): added to stubbify fwrite to fix bug on VMS. * config.h: moved flags to top per suggestions from Bryan O'Sullivan (bos@scrg.cs.tcd.ie). Fri Sep 10 11:42:27 1993 (jaffer at jacal) * repl.c config.h (EXIT_SUCCESS EXIT_ERROR): added. Values returned by SCM program. Thu Sep 9 13:09:28 1993 Vincent Manis * sys.c (stwrite init_types add_final): fixed declarations. Mon Sep 6 16:10:50 1993 Bryan O'Sullivan (bos@scrg.cs.tcd.ie) * README: changed the build and installation instructions to bring them up to date with reality. Sun Sep 5 23:08:54 1993 Bryan O'Sullivan (bos@scrg.cs.tcd.ie) * Wrote autoconf script to support GNU Autoconf configuration to make scm easier to build. * Created Makefile.in; a radical overhaul of Makefile to remove some of the brokenness and allow cross-compilation and use of autoconf. Sat Sep 4 23:00:49 1993 (jaffer at jacal) * 4c3: released. * sys.c (grow_throw): removed use of memset for SPARC machines. Sat Sep 4 18:09:59 1993 Bryan O'Sullivan (bos@scrg.cs.tcd.ie) * time.c: added SVR4 to the list of LACK_FTIME systems, because most all SVR4 BSD-compatibility stuff is a total mess. * config.h: changed definition of STDC_HEADERS so it does the Right Thing on systems which run GCC but don't have header files with prototypes. * makefile.unix: added a note for SVR4 users. Tue Aug 31 18:30:53 1993 (jaffer at jacal) * eval.c (m_define): if verbose >= 5 warnings are issued for all top-level redefinitions. Mon Aug 30 16:24:26 1993 (jaffer at jacal) * scm.c sys.c (finals num_finals add_final): Finalization calls now dynamically, incrementally, defined. Thu Aug 26 12:38:27 1993 Aubrey Jaffer (jaffer at camelot) * 4c2: fixed declaration problems in PTOB with K&R C. Sun Aug 22 23:02:51 1993 (jaffer at jacal) * split.scm: code which directs input, output, and diagnostic output to separate windows (using curses functions defined in crs.c). Sat Aug 21 16:46:33 1993 (jaffer at jacal) * Init.scm (output-port-height): added if not already defined. output-port-width also made conditional. * sys.c (tc16_strport): string ports created. Thu Aug 19 11:37:07 1993 (jaffer at jacal) * sys.c (init_types): freecell, floats, and bignums now have SMOB entries. gc_sweep and gc_mark still inline codes for bignums and floats. * sys.c repl.c code.doc: Ports now an extensible type. Indirection suggested by Shen . Mon Aug 16 01:20:26 1993 (jaffer at jacal) * crs.c: curses support created. Sun Aug 15 16:56:36 1993 (jaffer at jacal) * rgx.c sys.c (mark0 equal0): mark0 moved to sys.c. equal0 created. Fri Jun 25 01:16:31 1993 (jaffer at jacal) * QUICKREF: added. Tue Jun 22 00:40:58 1993 Aubrey Jaffer (jaffer at camelot) * repl.c (ungetted): replaced with CRDYP(stdin) to fix recently introduced transcript bug. Sun Jun 20 22:29:32 1993 Aubrey Jaffer (jaffer at camelot) * config.h (NOSETBUF): setbuf() now conditionalized on NOSETBUF. * Init.scm (defmacro): now copies the results of macro expansion in order to avoid capture of memoized code by macros like: (defmacro f (x) `(list '= ',x ,x)). Wed Jun 2 23:32:05 1993 Aubrey Jaffer (jaffer at caddr) * eval.c (map for-each): now check that arguments are lists. Mon May 31 23:05:19 1993 Aubrey Jaffer (jaffer at camelot) * Init.scm (trace untrace): now defmacros which handle (trace) and (untrace) as in Common Lisp. Wed May 5 01:17:37 1993 Roland Orre * all: internal output functions now take SCM ports instead of FILE* in preparation for string-ports. Tue May 4 17:49:49 1993 Aubrey Jaffer (jaffer at wbtree) * makefile.unix (escm.a): created scm "ar" file and used for dbscm. Sun Apr 25 21:35:46 1993 Aubrey Jaffer (jaffer at camelot) * sys.c (free_storage): i++ moved out of CELL_* in response to: From: john kozak Minor bug report: around line 10 of routine "free_storage" you do calls to CELL_UP and CELL_DOWN with arguments having side-effects: with the PROT386switch defined in config.h these args are evaluated twice... Sun Apr 11 22:56:19 1993 Aubrey Jaffer (jaffer at camelot) * eval.c (IM_DEFINE): added. Internal defines are no longer turned into LETRECS. Wed Apr 7 13:32:53 1993 Jerry D. Hedden * scl.c (idbl2str): fix for bug introduced by removing +'s. Tue Mar 23 15:37:12 1993 Aubrey Jaffer (jaffer at camelot) * scl.c (idbl2str): now prints positivie infinity as +#.# again (instead of #.#). Mon Mar 22 01:38:02 1993 Aubrey Jaffer (jaffer at montreux) * subr.c (quotient): renamed to lquotient to avoid conflict with HP-UX 9.01. Fri Mar 19 01:21:08 1993 Aubrey Jaffer (jaffer at camelot) * sys.c repl.c: #ifndef THINK_C #include * time.c (lstat): #ifndef THINK_C. ThinkC 5.0.1 lacked. Mon Mar 15 23:35:32 1993 jhowland@ariel.cs.trinity.edu (Dr. John E. Howland) * scl.c (idbl2str iflo2str big2str): leading + eliminated on output and number->string. Wed Mar 10 00:58:32 1993 Aubrey Jaffer (jaffer at camelot) * repl.c scm.h (CRDYP CLRDY CGETUN CUNGET): cleaned up ungetc hack. * scm.c repl.c (exec): added. Sun Mar 7 22:44:23 1993 Aubrey Jaffer (jaffer at camelot) * repl.c (def_err_response): now will print errobjs if they are immediates, symbols, ports, procedures, or numbers. Fri Mar 5 23:15:54 1993 Aubrey Jaffer (jaffer at camelot) * repl.c (repl): now gives repl_report() for initialization. * Init.scm (defvar): added. From: Roland Orre * repl.c (lungetc): no longer calls ungetc. Fixed problem that many systems had with ungetc on unbuffered ports (setbuf(0)). Thu Mar 4 13:51:12 1993 Stephen Schissler * makefile.wcc: Watcom support added. Wed Mar 3 23:11:08 1993 Aubrey Jaffer (jaffer at montreux) * sys.c scm.h (dynwinds): made a sys_protect. Mon Feb 15 11:30:50 1993 Aubrey Jaffer (jaffer at camelot) * Init.scm (defmacro macroexpand macroexpand1 macro? gensym): added. * repl.c (stdin): setbuf not done for __TURBOC__==1. * makefile.bor: now has method to build turtegr.exe. * eval.c (ceval): Memoizing macros now can return any legal Scheme expression. Sat Feb 13 18:01:13 1993 Aubrey Jaffer (jaffer at camelot) * subr.c (mkbig adjbig): now check for bignum size. * Init.scm: reorganized so site-specific information is at the head. * repl.c (errno): changed from set-errno now returns value. * subr.c (intexpt): now handles bignum exponents. From: "David J. Fiander" * time.c makefile.unix subr.c: SCO Unix and XENIX patches. Fri Feb 12 22:18:57 1993 Aubrey Jaffer (jaffer at camelot) * Init.scm (WITH-INPUT-FROM-PORT WITH-OUTPUT-TO-PORT WITH-ERROR-TO-PORT): added. * subr.c (ash): fixed for case (ash 2 40) where INUM arguments make a bignum result. * repl.c (lreadr): \ followed by a newline in a string is ignored. From: Scott Schwartz * repl.c (lreadr): Can now read \0\f\n\r\t\a\v in strings. Thu Feb 11 01:25:50 1993 Aubrey Jaffer (jaffer at camelot) * Init.scm (with-input-from-file with-output-to-file with-error-to-file): now use dynamic-wind. Sun Feb 7 22:51:08 1993 Aubrey Jaffer (jaffer at camelot) * eval.c (ceval): fixed bug with non-memoizing macro returning an IMP. Sat Feb 6 01:22:27 1993 Aubrey Jaffer (jaffer at camelot) * (current-error-port with-error-to-file): add. Fri Feb 5 00:51:23 1993 Aubrey Jaffer (jaffer at camelot) * time.c (stat): added. From: rnelson@wsuaix.csc.wsu.edu (roger nelson) * dmakefile: support for DICE C on Amiga. Thu Feb 4 01:55:30 1993 Aubrey Jaffer (jaffer at camelot) * sys.c (open-file) makes unbuffered if isatty. * repl.c (char-ready?) added. Mon Feb 1 15:24:18 1993 Aubrey Jaffer (jaffer at camelot) * subr.c (logor): changed to LOGIOR to be compatible with common Lisp. * eval.c (bodycheck): now checks for empty bodies. Sun Jan 31 01:01:11 1993 Aubrey Jaffer (jaffer at camelot) * time.c (get-universal-time decode-universal-time): now use bignums. Tue Jan 26 00:17:06 1993 Aubrey Jaffer (jaffer at camelot) * sys.c (mark_locations): now length argument in terms of STACKITEM. Does both alignments in one pass. Mon Jan 25 12:13:40 1993 soravi@Athena.MIT.EDU * makefile.emx: for OS/2 Sun Jan 24 18:46:32 1993 stevev@miser.uoregon.edu (Steve VanDevender) * scl.c (big2str): now faster because it divides by as many 10s as fit in a BIGDIG. Sat Jan 23 00:23:53 1993 stevev@miser.uoregon.edu (Steve VanDevender): * config.h (INUM MAKINUM): shift optimization for TURBOC. Fri Jan 22 00:46:58 1993 hanche@ams.sunysb.edu (Harald Hanche-Olsen) * unif.c (uniform-vector?): added. Tue Jan 19 00:27:04 1993 stevev@miser.uoregon.edu (Steve VanDevender) * subr.c scl.c config.h: bignum bug fixes for MSDOS. Mon Jan 18 01:15:24 1993 Aubrey Jaffer (jaffer at camelot) * subr.c (ash lognot intlength logcount bitextract): now handle bignums. Sun Jan 17 10:42:44 1993 Aubrey Jaffer (jaffer at camelot) * sys.c (close_port): can now close pipes as well. * subr.c (adjbig normbig divide quotient): fixed more divide bugs. * subr.c (even? odd?): fixed problem with bignums. Sat Jan 16 00:02:05 1993 Aubrey Jaffer (jaffer at camelot) * subr.c (divbigbig): Fixed last divide bug? Fri Jan 15 00:07:27 1993 Aubrey Jaffer (jaffer at camelot) * rgx.c (regmatch?): added. Debugged for both HP-UX and GNU regex-0.11. Documentation added to MANUAL. Thu Jan 14 11:54:52 1993 Aubrey Jaffer (jaffer at camelot) * patchlvl.h (SCMVERSION): moved from config.h. * scl.c (product): fixed missing {} bug. From: HEDDEN@esdsdf.dnet.ge.com * scl.c (lmin lmax) bignum versions. Wed Jan 13 01:40:51 1993 Aubrey Jaffer (jaffer at camelot) * released scm4b0. * subr.c: fixed bignum bugs found by jacal. * code cleanup. From: HEDDEN@esdsdf.dnet.ge.com * subr.c (lgcd quotent modulo lremainder): Bignum versions. * subr.c (divbigbig): new version. Sun Jan 3 00:29:35 1993 stevev@miser.uoregon.edu (Steve VanDevender) * Re-port to BorlandC v2.0 * sys.c (must_realloc): added * config.h subr.c (BIGRAD pseudolong): now insensitive to ratio of sizeof(long)/sizeof(BIGDIG). Mon Dec 21 23:20:47 1992 Aubrey Jaffer (jaffer at camelot) From: Scott Schwartz * rgx.c: created SCM interface to regex and regexp routines. From: HEDDEN@esdsdf.dnet.ge.com * subr.c scl.c: Now just one mulbigbig and addbigbig routine. from: soravi@Athena.MIT.EDU * README: directions for compiling SCM under OS/2 2.0. Wed Dec 9 15:34:30 1992 Aubrey Jaffer (jaffer at camelot) * eval.c (tc7_subr_2x): eliminated. All comparison subrs now rpsubrs. * scm.h: Changed SUBR numbers. This improves HP-UX interpretation speed (why?). * eval.c (PURE_FUNCTIONAL): removed. Can now be done in initialization code. * eval.c (tc7_rpsubr): added type for transitive comparison operators. Suprisingly, this slows down (pi 100 5). Mon Dec 7 16:15:47 1992 Aubrey Jaffer (jaffer at camelot) * subr.c (logand logor logxor lognot ash logcount integer-length bit-extract): added. From: HEDDEN@esdsdf.dnet.ge.com * scl.c: lots more numeric improvements and code reductions. Mon Nov 30 12:25:54 1992 Aubrey Jaffer (jaffer at camelot) * scm.h (IDINC ICDR IDIST): enlarged depth count in ILOCs. Sun Nov 29 01:10:18 1992 Aubrey Jaffer (jaffer at camelot) * subr.c scl.c: most arithmetic operations will now return bignums. * config.h (FIXABLE POSFIXABLE NEGFIXABLE): added. * sys.c (object-hash object-unhash): now use bignums. * scl.c (big2str istr2int): bignum i/o implemented. * unif.c: subr2s were incorrectly initialized as lsubr2s. Tue Nov 24 14:02:52 1992 Aubrey Jaffer (jaffer at camelot) * eval.c (ceval): added unmemocar calls to error handling when possible. * scl.c (idbl2str): added back NAN and infinity support. * eval.c (syntax_mem): replaced with individual macros. * eval.c (procedure->syntax procedure->macro procedure->memoizing-macro): All syntactic keywords are now tc7_symbol. User definable macros added. * sys.c: ISYMs no longer in symhash. ISYMs cannot be read. init_isyms merged into init_eval. Sat Nov 21 00:39:31 1992 Aubrey Jaffer (jaffer at camelot) * makefile.unix (check): now exits with error code. * sys.c (init_isyms): eliminated. ISYMS now inited in init_eval. Fri Nov 20 16:14:06 1992 Aubrey Jaffer (jaffer at camelot) * released scm4a13 * repl.c: longjmps now dowinds() first. * setjump.h: now has all setjmp related definitions. * Init.scm (trace untrace): use new macro system. * eval.c (defined? procedure->macro procedure->memoizing-macro make_synt): macro system added. defined? uses it. From: HEDDEN@esdsdf.dnet.ge.com * scl.c: fixes for several transcendental functions. Thu Nov 19 01:14:38 1992 Aubrey Jaffer (jaffer at camelot) * repl.c sys.c: errjmp replaced with JMPBUF(rootcont). Sun Nov 15 01:49:00 1992 HEDDEN@esdsdf.dnet.ge.com * scl.c (istr2int istr2flo istring2number string2number): new versions. Thu Nov 12 23:00:04 1992 Aubrey Jaffer (jaffer at Ivan) * Init.scm (load): now prints out actual filename found in mesasge ;done loading ... Wed Nov 11 01:01:59 1992 Aubrey Jaffer (jaffer at camelot) * repl.c (def_err_response): ARG1 error with errobj==UNDEFINED becomes WNA error. From: HEDDEN@esdsdf.dnet.ge.com (Jerry D. Hedden) * scl.c (difference divide): Now are asubrs. * Init.scm (*features*): fixed to correspond to SLIB conventions. Mon Nov 9 12:03:58 1992 Aubrey Jaffer (jaffer at camelot) * scl.h test.scm: (string->number "i") and "3I" and "3.3I" fixed to return #f. Tests added to test.scm. Fri Nov 6 16:39:38 1992 Aubrey Jaffer (jaffer at camelot) * scm.h (rootcont): sysprotect added. From: Vincent Manis * scm.h: __cplusplus prototype support. Thu Nov 5 00:39:50 1992 Aubrey Jaffer (jaffer at Ivan) * eval.c (lookupcar): now checks for UNDEFINED in local bindings becuase LETREC inits to UNDEFINED. * sys.c (dynamic-wind): added. * config.h eval.c (ceval): CAUTIOUS mode added. From: hugh@ear.MIT.EDU (Hugh Secker-Walker) * eval.c (ceval): internal defines now transformed to letrecs. Sun Oct 25 12:27:23 1992 Aubrey Jaffer (jaffer at Ivan) * repl.c (read-line read-line!): created. Sat Oct 24 18:36:23 1992 Aubrey Jaffer (jaffer at camelot) * repl.c (lreadparen): now tail-recursive. * eval.c (copy-tree eval): added. dummy_cell replaced with a cons(obj,UNDEFINED). Thu Oct 22 21:26:53 1992 Aubrey Jaffer (jaffer at Ivan) * repl.c (set-errno!): changed to set-errno. Thu Oct 15 00:49:20 1992 Aubrey Jaffer (jaffer at camelot) * sys.c (must_free): must_free created. Pointers are set to 0. It detects objects being freed twice. Wed Oct 14 23:57:43 1992 Aubrey Jaffer (jaffer at camelot) * scm.c (run_scm): Now has INITS and FINALS. * scm.c (init_signals ignore_signals unignore_signals restore_signals): siginterrupt() for ultix. Fri Oct 9 14:25:06 1992 Aubrey Jaffer (jaffer at camelot) * all: put in explicit casts to (unsigned char *) and (long) to satisfy lint. * sys.c (gc): all to gc_end was during deferred interrupts, causing problems with verbose=3 and interrupts during GC. * config.h(SYSCALLDEF): fixed so that test on errno occurs before ALLOW_INTS (and possible call to user code). Sun Oct 4 01:45:25 1992 Aubrey Jaffer (jaffer at camelot) * eval.c (syntax_mem): removed gratuitous cons. * eval.c repl.c scm.h: Reduced static string use. Added peephole optimizations for AND and OR. From: hugh@ear.MIT.EDU (Hugh Secker-Walker) * eval.c repl.c scm.h (syntax_mem): syntax forms are now memoized so that syntax checks are done only once. Interpreter is now smaller and faster and uses less stack space. Modifications to code are now made under DEFER_INTS as they always should have been. Wed Sep 30 22:06:24 1992 Aubrey Jaffer (jaffer at Ivan) * scl.c subr.c scm.h config.h: Started adding bignum code. Sun Sep 27 22:59:59 1992 Aubrey Jaffer (jaffer at Ivan) * repl.c (restart): added. * sys.c (freeall): finished. * scm.h (tc7_symbol): split into tc7_ssymbol and tc7_msymbol to distinguish between non-GCable and GCable symbols. Wed Sep 23 00:36:23 1992 Aubrey Jaffer (jaffer at Ivan) * repl.c (peek_char lungetc): added workaround for TURBOC 1.0 problem with ungetc inside SYSCALLDEF macro. * repl.c (iprin1): uses ttyname for # if available. * Init.scm: now sets verbose to 0 if stdin or stdout is not a tty. * repl.c (isatty?): added. * repl.c (verbose): levels bumped up by 1. verbose == 0 means no prompt. * makefile.djg config.h (GNUDOS -> GO32): flags changed for djgpp108. Wed Aug 26 21:46:26 1992 Aubrey Jaffer (jaffer at Ivan) * test.scm: put in (test #f < 1 3 2) and (test #f >= 1 3 2). * scl.c (leqp greqp): put back in. (not (< 1 3 2)) does not imply (>= 1 3 2). * makefile.unix: tar and shar files now created in subdirectory. * config.h time.c: Linux support added. * repl.c: Greatly improved VMS interrupt support. * eval.c (ceval): I_LET now changes to I_LETSTAR for single clause unnamed lets.y * (tc7_lsubr_2n): removed. Fri Jul 31 00:24:50 1992 Aubrey Jaffer (jaffer at Ivan) * unif.c (bit-position): fixed; I am sure I had done these changes before. Also corrected some error messages. From: campbell@redsox.bsw.com (Larry Campbell) * scm.h subr.c sys.c (equalp): smobfuns now include equalp. Mon Jul 20 16:44:30 1992 Aubrey Jaffer (jaffer at Ivan) From: Stephen Adams * eval.c scm.h subr.c (BOOL_NOT) macro added to fix ^ bug in BorlandC. This was fixed previously as well. From: campbell@redsox.bsw.com (Larry Campbell) * unif.c (vector-set-length!): was always typing to tc7_vector. Sat Jul 18 01:07:33 1992 Aubrey Jaffer (jaffer at Ivan) * subr.c sys.c (make_vector init_storage resizuve): mallocs and reallocs are now always > 0. * time.c (get_univ_time): bypassed mktime() for (__TURBOC__ == 1). Mon Jul 13 22:27:04 1992 Aubrey Jaffer (jaffer at Ivan) * repl.c (lreadr): now ignores first line of port if begins with "#!" * scl.c (lesseqp greqp): removed; changed to use tc7_lsubr_2n. * scm.h eval.c (tc7_lsubr_2n): type added. Other subr types rearranged. Sat Jul 11 23:47:18 1992 Aubrey Jaffer (jaffer at Ivan) * scm.h sys.c repl.c eval.c code.doc (newsmob smobs smobfuns): now support dynamically added smob types. Promises moved to eval.c. Promises and arbiters are now newsmobs. * makefile.unix repl.c scl.c (floprint): moved from repl.c to scl.c. The only files which care about -DFLOATS are now scl.c, eval.c, scm.c, and unif.c. * sys.c scm.h (init_storage): now uses variable num_protects instead of #define NUM_PROTECTS. Tue Jul 7 00:00:57 1992 Ulf_Moeller@hh2.maus.de (Ulf Moeller) * Init.scm config.h makefile.prj: support for the ATARI-ST with Turbo C added. Tue Jun 30 23:45:50 1992 Aubrey Jaffer (jaffer at Ivan) * unif.c (make-uniform-vector uniform-vector-set! uniform-vector-ref): added. Tue Jun 23 11:49:13 1992 Aubrey Jaffer (jaffer at Ivan) * scm.h sys.c code.doc: rearranged tc7 codes and added bvect, ivect, uvect, fvect, dvect, cvect, and cclo. * scm.h sys.c eval.c repl.c code.doc: Changed symbols to be tc7_symbol. Sat Jun 6 22:27:40 1992 campbell@redsox.bsw.com (Larry Campbell) * scl.c (divide): divide by 0 and Exact-only divides of non multiples now cause exception in RECKLESS mode. Wed May 27 16:02:58 1992 Aubrey Jaffer (jaffer at Ivan) * config.h scl.c (NUMBUFLEN): split into INTBUFLEN and FLOBUFLEN and made proportional to size of numeric types. From: fred@sce.carleton.ca (Fred J Kaudel) * makefile.ast scm.c Init.scm: minor chages for ATARI ST support. * test.scm (test-inexact): created. Thu May 21 11:43:41 1992 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 5 From: hugh@ear.mit.edu (Hugh Secker-Walker) * config.h: better wording for heap allocation strategy explanation. Wed May 20 00:31:18 1992 S.R.Adams@ecs.southampton.ac.uk * subr.c (stci_leqp st_leqp): reversed order of ^ clauses to avoid Borland 3.0 bug. * sys.c (gc_sweep): missing i-=2; added when splicing out segment. * MANUAL time.c (get-universal-time decode-universal-time): half hearted attempt to add these. Needs bignums. Wed May 13 14:01:07 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c (gc_mark): improved tail recursivness for CONSes. * repl.c (growth_mon): now prints out the hplims table if verbose>3. * sys.c (init_heap_seg): Serious bug in growing hplims fixed. num_heap_segs eliminated; hplims are realloced whenever grown. Tue May 12 15:36:17 1992 Aubrey Jaffer (jaffer at train) * config.h sys.c (alloc_some_heap expmem): expmem captures whether the INIT_HEAP_SIZE allocation was successful. If so, alloc_some_heap uses exponential heap allocation instead of HEAP_SEG_SIZE. Mon May 11 15:29:04 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c (gc_sweep init_heap_seg heap_org): Empty heap segments are now freed. * sc2.c (STR_EXTENSIONS): renamed REV2_PROCEDURES and R2RS and R3RS functions put into sc2.c. Sun May 10 01:34:11 1992 Aubrey Jaffer (jaffer at Ivan) * scm.c (ignore_interrupts unignore_interrupts): added for system, edt$edit, and popen to use. * repl.c (lwrite display newline write_char): Close pipe if EPIPE. * repl.c (file_set_position): now errs on ESPIPE. * scm.c (SIGPIPE): now ignored (errs come back as EPIPE). Sat May 9 17:52:36 1992 Stephen Adams * config.h (PROT386): PROT386 added. PTR_LT and CELL_UP modified. Fri May 8 17:57:22 1992 hugh@ear.mit.edu (Hugh Secker-Walker) * Init.scm (last-pair append!): last-pair is faster version. Append! corrected for null first arg. (getenv "HOME") now gets a "/" added if not present. * config.scm (MIN_GC_YIELD): now proportional to HEAP_SEG_SIZE. * README: setting environment variables corrected. * subr.c (length): error message now has arg if not a list. * sys.c (open-pipe): now turns off interrupts before forking. * scl.c (lsystem): now turns off interrupts before forking. * scm.c (ignore_signals): created. Sat May 2 01:02:16 1992 Aubrey Jaffer (jaffer at Ivan) * Init.c (WITH-INPUT-FROM-FILE WITH-OUTPUT-TO-FILE): defined in terms of current-input-port and current-output-port. Bug in open-input-pipe and open-output-pipe fixed. * sys.c repl.c (current-input-port current-output-port): moved from sys.c to repl.c. set-current-input-port and set-current-output-port added to repl.c. Mon Apr 13 22:51:32 1992 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h: (PATCHLEVEL): released scm4a1. * makefile.* VMSBUILD.COM VMSGCC.COM: compile time.h. * scm.c (alrm_signal int_signal): now save and restore errno so SYSCALL will work correctly across interrupts. Sun Apr 12 01:44:10 1992 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h: (PATCHLEVEL): released scm4a0. * repl.c (lread): tok_buf now local to each invocation of read. This makes READ interruptable and reentrant. * sys.c MANUAL (STRING-SET-LENGTH! STRING-VECTOR-LENGTH!): created. * sys.c repl.c (grow_tok_buf tok_buf tok_buf_len): moved to repl.c * repl.c (lfwrite): now emulated for VMS. * repl.c scl.c (num_buf): now local to all routines that use it. * time.h: created by moving time functions from repl.c. Read and write functions were moved from sys.c to repl.c. * sys.c repl.c (DEFER_INTS ALLOW_INTS CHECK_INTS): totally rewritten. SIGALRM and SIGINT now execute at interrupt level. Interrupts deferred only for protected code sections, not for reads and writes. * sys.c repl.c (SYSCALL): created to reexecute system calls interrupted (EINTR) by SIGALRM and SIGINT. * sys.c scl.c (flo0): 0.0 is now always flo0. * repl.c sys.c (TRANSCRIPT-ON TRANSCRIPT-OFF): added. This required shadowing putc, fputs, fwrite, and getc with lputc, lputs, lfwrite, and lgetc. Sun Apr 5 00:27:33 1992 HEDDEN@esdsdf.dnet.ge.com (Jerry D. Hedden) * scl.c (eqp lessp greaterp lesseqp greatereqp): Comparisons with inexact numbers was not being performed correctly. For example, (< 1.0 2.0 1.5) would yield #t. What was missing was a line x=y; in the inexact comparison sections of lessp(), greaterp(), lesseqp() and greatereqp(). In addition, I modified these routines and eqp() to allow for mixed arithmetic types. Sat Apr 4 00:17:29 1992 Aubrey Jaffer (jaffer at Ivan) * scm.h code.doc: tc7_bignum => tc7_spare. Added tc16_bigpos and tc16_bigneg. SMOBS reordered. tc16_record added. * scm.h repl.c sys.c (make-arbiter try-arbiter release-arbiter): added. tc16_arbiter added. Fri Apr 3 01:25:35 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c config.h (TEMPTEMPLATE): created in config.h. * scm.h: removed long aliases for C versions of Scheme functions. * sys.c eval.c scm.h: (delay force makprom): added. Also added tc16_promise data type. * Init.scm (trace untrace): added autoloads and read macros. From: T. Kurt Bond, tkb@mtnet2.wvnet.edu * sys.c (template): correct template for VMS. Tue Mar 31 01:50:12 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c config.h Init.scm (open-file open-pipe): created and expressed other open functions in terms of. Bracketed all i/o system calls with DEFER and ALLOW _SIGINTS. Sat Mar 28 00:24:01 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c MANUAL (#.): read macro syntax added. Balanced comments also documented. Fri Mar 27 22:53:26 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c (iprin1): changed printed representation for unreadable objects from #[...] to #<...>. From: brh@aquila.ahse.cdc.com (brian r hanson x6009): * scm.h config.h (NCELLP PTR_LT): fixes for 64 bit pointers on nosve. Fri Mar 20 01:36:08 1992 Aubrey Jaffer (jaffer at Ivan) * Released scm3c13 * code.doc: corrected some minor inconsistencies and added a section "To add a package of new procedures to scm". Sun Mar 15 19:44:45 1992 Aubrey Jaffer (jaffer at Ivan) * Init.scm: now loads _INIT_PATH when is not "SCM". * config.h (PTR_LT): (x < y) => ((x) < (y)) Wed Mar 4 01:53:15 1992 Aubrey Jaffer (jaffer at Ivan) * Released scm3c12. * scm.h code.doc eval.c sys.c (IXSYM): Eliminated Immediate IXSYM type. Tue Mar 3 00:58:18 1992 Aubrey Jaffer (jaffer at Ivan) * eval.c config.c (ceval DEFINED? SYNTAX_EXTENSIONS): added DEFINED? to ceval conditional on SYNTAX_EXTENSIONS. From: Andrew Wilcox * makefile.unix scm.c (main init_scm display_banner init_signals restore_signals run_scm): RTL support. Mon Mar 2 19:05:29 1992 Aubrey Jaffer (jaffer at Ivan) * subr.c (make-string): now checks for ARG1 >= 0. Fri Feb 28 00:13:00 1992 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 12 * Init.scm: loads JCAL if scm is invoked with name JCAL, JACAL, jcal or jacal. * Init.scm (ABS): set to MAGNITUDE if FLOATS are supported. * gc_mark gc: no longer assume sizeof(short) == 2. * config.h (CELL_UP CELL_DN): no longer assume sizeof(CELL) == 8. From: Brian Hanson, Control Data Corporation. brh@ahse.cdc.com * scl.c config.h repl.c: partial port to Control Data NOS/VE. From: fred@sce.carleton.ca (Fred J Kaudel) * repl.c Init.scm makefile.ast: Port to Atari-ST * sys.c scm.h eval.c (throw): renamed to lthrow to avoid conflict with Gnu CC. Mon Feb 10 14:31:24 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c (delete-file rename-file): added. * sys.c (chdir): now returns #f instead of error. * Init.scm: Calls to PROVIDED? inlined so no longer dependent on SLIB being loaded. (set! ABS MAGNITUDE) if inexacts supported. Support for slib1b3 added. * sys.c (alloc_some_heap): fixed bugs. One fix from bowles@is.s.u-tokyo.ac.jp. * eval.c (ceval): fixed bug with internal (define foo bar) where bar is a global. Put badfun2: back in for better error reporting. * patchlvl.h (PATCHLEVEL): 11 Mon Jan 20 16:19:04 1992 Aubrey Jaffer (jaffer at Ivan) * config.c (INITS): comments added. From: T. Kurt Bond, tkb@mtnet2.wvnet.edu * VMSGCC.COM VMSMAKE.COM: now take arguments. From: "Fred Bayer" * makefile.aztec repl.c: Aztec C (makefile) port. Fri Jan 17 16:36:07 1992 Aubrey Jaffer (jaffer at Ivan) * sys.c (gc init_storage stack_size): stack_size now of type sizet. init_storage no longer uses it. gc() now uses it instead of pointer to local. This fixes bug with gcc -O. * sys.c (cons cons2 cons2r): &w;&x;&y; removed because of above fix. Thu Jan 16 22:33:00 1992 Aubrey Jaffer (jaffer at Ivan) * scl.c (real-part): added. Wed Jan 15 13:06:39 1992 "Fred Bayer" * scl.c repl.c scm.c config.c: Port for AMIGA * scm.h (REALP): fixed for SINGLES not defined. Sat Jan 11 20:20:40 1992 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 8 released. * README: added hints for EDITING SCHEME CODE. * repl.c (SIGRETTYPE): now int for __TURBOC__. * makefile.tur makefile.djg: created. * config.h: DJGPP (__GO32__) support added. * scm.h (memv): definition added. Sun Jan 5 00:33:44 1992 Aubrey Jaffer (jaffer at Ivan) * repl.c makefile.* (main): INITS added. * scl.c: fixed ASSERT statements with mismatched ARGn and arguments. Thu Dec 19 19:16:50 1991 Aubrey Jaffer (jaffer at train) * sys.c (cons cons2 cons2r): added fix for gcc -O bug. * repl.c (LACK_FTIME LACK_TIMES): more messing with these. * sys.c config.o (HAVE_PIPE): created. * config.h (FLT_RADIX): now #ifdef FLT_RADIX rather than __STDC__. Needed for DJGCC. * sys.c (DBLMANT_DIG DBL_FLOAT_DIG): now tested for directly rather than STDC_INCLUDES. * makefile.unix (subr.o): explicit compilation line added. * scl.c (truncate -> ltrunc): Name conflict with DJGCC libraries. Sun Dec 8 23:31:04 1991 Aubrey Jaffer (jaffer at Ivan) * eval.c (apply): added check for number of args to closures. Sat Dec 7 01:30:46 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 7 * sys.c (chdir): THINK_C doesn't support; * repl.c: SVR2 needs instead of * repl.c: SVR2 needs LACK_FTIME * repl.c: #include now automatic ifndef LACK_FTIME. Mon Dec 2 15:42:11 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 5 * sys.c (intern sysintern): made strings and hash unsigned. Fixed bug with characters > 128 in symbols. From: boopsy!mike@maccs.dcss.mcmaster.ca (Michael A. Borza) * scl.c (eqv? memv assv): created if FLOATS is #defined. Mon Dec 2 11:37:11 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 4 * sys.c (gc_sweep): usaage of pclose() now conditional on unix. * MANUAL (chdir): documented. From: T. Kurt Bond, Adminisoft, Inc. : * repl.c sys.c (errno): VMS GNU C uses a special hack in to get the link-time attributes for the errno variable to match those the VMS C run-time library expects (it makes errno a preprocessor define so that the variable that the compiler sees has a special form that the assember then interprets), so if it is VMS and __GNUC__ is defined needs included. * setjump.h (SETJUMP LONGJUMP): SETJUMP and LONGJUMP changed to setjump and longjump. The VMS linker is case-indifferent. VMS GNU C mangles variable names that have upper case letters in them to preserve their uniqueness. * sys.c (iprint iprin1): Now inline putc loops instead of calls to fwrite for VMS. The VMS `fwrite' has been enhanced to work with VMS's Record Management Sevice, RMS. Part of this enhancement is to treat each call to `fwrite' as producing a seperate record. This works fine if you are writing to a stream_LF file or an actual terminal screen, but if you are writing to a file that has implied carriage control (such as a batch log file, or a mailbox used for subprocess communication), which is a more common file organization for RMS, each call to `fwrite' has a newline appended to it. This causes much of the output to be incorrectly split across lines. * vmsgcc.com: created. Sun Dec 1 00:33:42 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 3 released. * Init.scm (rev2-procedures): all now supported. * Init.scm sys.c MANUAL (flush): flush changed to force-output to be compatible with Common Lisp. * sys.c (chdir): added. Wed Nov 27 09:37:20 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 2 * repl.c (set-errno! perror): added. * sys.c (gc): FLUSH_REGISTER_WINDOWS call added. * sys.c (open-input-pipe open-output-pipe close-pipe): added. Mon Nov 25 13:02:13 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 1 * sys.c (flush): added. * repl.c (mytime): macro was missing (). CLKTCK now defaults to 60. From: Yasuaki Honda, honda@csl.SONY.co.jp, * README Init.scm subr.c scm.c repl.c scl.c: support for Macintosh running Think C. Sun Nov 24 15:30:51 1991 Aubrey Jaffer (jaffer at Ivan) * scl.c (str2flo): fixed parsing of -1-i. * subr.c (equal): Now correct for inexacts. Need to do eqv. * scm.h (REALPART): fixed pixel C compiler bug with doubles inside `?' conditionals. * scl.c (zerop): now checks imaginary half of complex number. From: jjc@jclark.com * repl.c (repl_driver): now checks that s_response is non-NULL before INTERNing. Tue Nov 19 00:10:59 1991 Aubrey Jaffer (jaffer at Ivan) * version scm3c0 * documentation: changed revised^3.99 to revised^4. * example.scm: created from Scheme^4 spec. * makefile.msc: -Ox changed to -Oxp to fix over-enthusiastic float optimizations. * Init.scm (ed): defined. * repl.c (def_err_response): UNDEFINED objects don't print out. Sun Nov 17 23:11:03 1991 Aubrey Jaffer (jaffer at Ivan) * scl.c (vms-debug): now returns UNSPECIFIED. * repl.c MANUAL (restart_repl): RESTART-REPL changed to ABORT. * repl.c (err_ctrl_c):now clears sig_pending. Wed Nov 13 23:51:36 1991 Aubrey Jaffer (jaffer at Ivan) * config.h: removed #ifdef sparc #define STDC_HEADERS * makefile.bor: added extra '\' to filepath. * repl.c (everr): fixed bug with ARGx. * repl.c (errmsgs def_err_response): cleaned up error messages. Sun Nov 10 23:10:24 1991 Aubrey Jaffer (jaffer at Ivan) * released scm3b7 Mon Nov 4 18:36:49 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 6 * sys.c (idbl2str): tests for Not-a-Number and Infinity added. * repl.c scm.h: response system rewritten and integrated with error system. * scl.c (/): now returns inexacts if integer arguments do not divide evenly. Mon Oct 28 23:44:16 1991 Aubrey Jaffer (jaffer at Ivan) * makefile.unix: can now make float (scm) and integer-only (escm) versions in same directory. * repl.c (*sigint-response* *arithmetic-response* restart-repl): responses for signals added. * scl.c (lmin lmax sum difference product divide expt exp log): now take mixed types. expt available in non-FLOATS compilation. * repl.c (get-decoded-time): added. Includes and time functions reorganized. * sys.c (object-hash object-unhash): added. Tue Oct 15 00:45:35 1991 Aubrey Jaffer (jaffer at Ivan) * repl.c Init.scm (*features*): moved constant features into Init.scm. Moved tests for numeric features to slib/require.scm. * release scm3b1. * config.h (ANSI_INCLUDES): redid include files. * subr.c scl.c: moved all FLOAT conditionals from subr.c to scl.c. Wed Oct 9 00:28:54 1991 Aubrey Jaffer (jaffer at Ivan) * release scm3a13. * patchlvl.h (PATCHLEVEL): 13 * Init.scm: "vicinity.scm" changed to "require.scm" Mon Oct 7 00:34:07 1991 Aubrey Jaffer (jaffer at Ivan) * test.scm: test of redefining built-in symbol and extra ')' removed. * scm.doc makefile.unix: scm.doc created from scm.1 in makefile.unix. * VMSBUILD.COM setjump.asm setjump.h (setjmp longjmp jmp_buf): put in from comp.sources.reviewed in order to let VMS have full continuations. VMSBUILD.COM is a compile script. Fri Oct 4 00:05:54 1991 Aubrey Jaffer (jaffer at Ivan) * scl.c(sleep): removed; not supported by MSC (although could be written). * scm.h config.h (size_t): moved to config.h. * sys.c (f_getc): -> lgetc for vax, getc otherwise. * patchlvl.h (PATCHLEVEL): 12 Mon Sep 30 01:14:48 1991 Aubrey Jaffer (jaffer at Ivan) * scl.c(sleep): created. * repl.c(internal-time-units-per-second get=internal-run-time): created * repl.c: created from scm.c (shuffled around lots of functions). Sat Sep 28 00:22:30 1991 Aubrey Jaffer (jaffer at Ivan) * scm.c config.h (char-code-limit most-positive-fixnum most-negative-fixnum): created. Tue Sep 24 01:21:43 1991 Aubrey Jaffer (jaffer at Ivan) * scm.c (software-type); created. * scm.c config.h (terms, list-file, library-vicinity, program-vicinity, user-vicinity, make-vicinity, sub-vicinity): moved to Init.scm and library. * scm.c config.h Makefile (PROGPATH): changed to IMPLPATH. * Init.scm: created Fri Sep 20 13:22:08 1991 Aubrey Jaffer (jaffer at Ivan) * patchlvl.h (PATCHLEVEL): 5 * all: changed declarations to size_t where appropriate. scm.h test preprocessor flag _SIZE_T to determine if already declared. size_t should greatly enhance portability to Macintosh and other machines. Tue Sep 17 01:15:31 1991 Aubrey Jaffer (jaffer at Ivan) * scm.c (tmpnam): support for mktemp added. Mon Sep 16 14:06:26 1991 Aubrey Jaffer (jaffer at train) * scm.c (implementation-vicinity): added. (program-vicinity) now returns undefined if called not within a load. * sys.c (call-with-io-file): removed. * scm.c (tmpnam): added. * scm.c config.h (tmporary-vicinity): removed. Sun Sep 15 22:21:30 1991 bevan@cs.man.ac.uk * subr.c scm.h (remainder): renamed to lremainder to avoid conflict with math.h on SunOS4.1. Sat Sep 7 22:27:49 1991 Aubrey Jaffer (jaffer at Ivan) * scm.c (program-arguments load): program-arguments created. * scm.c (getenv): added getenv and used for program-vicinity and library-vicinity. * scm.c (program-vicinity): fixed if load_name is NULL. * scl.c config.h (substring-move-left! substring-move-right!): added under STR_EXTENSIONS flag. Wed Aug 28 22:59:20 1991 Aubrey Jaffer (jaffer at Ivan) * Sending scm3a to comp.sources.reviewed * scm.c (main): prints out feature list at startup. * subr.c (eqp lessp greaterp lesseqp greatereqp): now work for floats. * scl.c (sum difference divide product): moved to scl.c and now work for floats. * all: all masks with low bits explicity cast to (int). Sat Aug 17 00:39:06 1991 Aubrey Jaffer (jaffer at Ivan) * sys.c subr.c scl.c (iint2str istr2int istring2number istr2flo iflo2str idbl2str): number I/O and conversion to strings rewritten. * sys.c (gc_mark): continuations now marked SHORT_ALIGNed. (from Craig Lawson). * added QuickC support from Craig Lawson. Tue Jul 30 01:08:52 1991 Aubrey Jaffer (jaffer at Ivan) * config.h: #ifdef pyr added. * scm.c MANUAL: vicinity functions added. Tue Jul 16 00:51:23 1991 Aubrey Jaffer (jaffer at Ivan) * scl.c sys.c: float functions added. * Documentation reorganized according to comp.sources.reviewed guidelines. * sys.c config.h (open_input_file open_output_file open_rw_file): file mode string moved to defines in config.h Thu Jul 11 23:30:03 1991 Aubrey Jaffer (jaffer at Ivan) * sys.c config.h (EBCDIC ASCII) moved to config.h * subr.c config.h (BADIVSGNS) moved to config.h * scm.h config.h (SRS) moved to config.h Sun Jul 7 23:49:26 1991 Aubrey Jaffer (jaffer at Ivan) * all: started adding comp.sources.reviewed corrections and suggestions. * scm.c patchlvl.h (main): PATCHLEVEL now printed in banner. * subr.c sys.c: read_integer removed. istring2number created. lread and string2number now both use istring2number. Fri Jun 7 13:43:40 1991 Aubrey Jaffer (jaffer at Ivan) * VERSION scm2e sent to comp.sources.reviewed * public.lic: renamed COPYING. * scm.c (gc_status): gc_status renamed prolixity. Now returns old value of verbose. Can take 0 arguments. * sys.c (lreadr): added #| common lisp style |# balanced comments. * scm.h scm.c sys.c (I/O functions): combined **PORTP and OPENP to become OP**PORTP. * scm.h sys.c (gc_sweep): moved OPENP to bit in upper half word of port cells. Sat May 25 00:04:45 1991 Aubrey Jaffer (jaffer at Ivan) * scm.c (stack_start_ptr, repl_driver, main, err functions): exits removed from all err functions. all escapes through repl_driver. * scm.c README (verbose): Now has graded verbosity. * scm.c README (quit): Now takes optional argument which is return value. Wed May 22 01:40:17 1991 Aubrey Jaffer (jaffer at Ivan) * code.doc scm.h eval.c (ceval): Rearanged immediate type codes to create IXSYMs (immediate extension syms) to allow more than 15 special forms. ILOCs now work with up to 32767 in one environment frame. Dispatch is slightly faster for ILOCs in function position. ICHRs can be up to 24 bits. Fri May 10 00:16:32 1991 Aubrey Jaffer (jaffer at Ivan) * scm.h sys.c (gc_mark, gc_sweep): GCMARK moved to bit 8 of CAR for some datatypes. Wed May 1 14:11:05 1991 Aubrey Jaffer (jaffer at Ivan) * patch1 MESSAGE SENT. From: jclark@bugs.specialix.co.uk.jjc * sys.c (lreadr): removed order evaluation bug when growing tok_buf. Fri Apr 26 10:39:41 1991 Aubrey Jaffer (jaffer at Ivan) * scm2d RELEASED * sys.c (closure) no longer calls ilength (ECONS problem). Added ASSERT before call to closure in eval. Thu Apr 25 09:53:40 1991 Aubrey Jaffer (jaffer at Ivan) * scm.c (error): created. Wed Apr 24 16:58:06 1991 Aubrey Jaffer (jaffer at Ivan) * utils.scm: created. * makefile (name8s): code from dmason works in makefile. * eval.c (evalcar): fixed errobj on (else 3 4) error. Inlined function application in (cond ((foo => fun))). * sys.c (lprin1): change looped putcs to fwrite. Wed Apr 24 01:54:09 1991 Aubrey Jaffer (jaffer at Ivan) * sys.c (lreadr): fixed assert for "eof in string". * subr.c (lgcd): changed to work with borland C. * eval.c (eval): added checks to LAMBDA and LET. * eval.c (apply): now checks for null arg1 in lsubr. Fri Apr 12 00:09:03 1991 Aubrey Jaffer (jaffer at kleph) * config.h scm.h (SCMPTR): created to correct address arithmetic on stack bounds under Borland C++. Borland C++ now runs scm2c. Wed Apr 10 21:38:09 1991 Aubrey Jaffer (jaffer at Ivan) * sys.c (open_io_file, cw_io_file, file_position, file_set_pos, read_to_str) created (IO_EXTENSIONS) * config.h (IO_EXTENSIONS): defined * sys.c scm.c: lprin1f changed to iprin1 Wed Apr 10 12:58:59 1991 Aubrey Jaffer (jaffer at Ivan) * sys.c (intern): line 850: for(i = alen;0 <= --i;)changed to for(i = alen;0 < --i;). This fixed b_pos and v_pos mapping to the same symbol. Wed Apr 4 00:00:00 1991 Aubrey Jaffer (jaffer at kleph.ai.mit.edu) * released scm2b Wed Apr 3 22:51:39 1991 Aubrey Jaffer (jaffer at Ivan) * all files: eliminated types tc7_subr_2n and tc7_subr_2xn. Replaced with tc7_subr_2o and tc7_subr_1o so that all subr calls can be checked for number of arguments. Tue Apr 2 23:11:15 1991 Aubrey Jaffer (jaffer at Ivan) * code.doc: cleaned up. Mon Apr 1 14:27:22 1991 Aubrey Jaffer (jaffer at Ivan) * eval.c (ceval): fixed nasty tail recursion bug at carloop:. * scm.c (everr): still fixing error reporting. * eval.c subr.c: added flag PURE_FUNCTIONAL which removes side effect special forms and functions. * subr.c (substring): now allows first index to be equal to length of string * sys.c (lprin1f): dispatches on TYP16 of smobs. * scm.h: fixed typo in unused function defs. Mon Mar 28 00:00:00 1991 Aubrey Jaffer (jaffer at zohar.ai.mit.edu) * scm2a released: too many changes to record. See code.doc. Mon Feb 18 21:48:24 1991 Aubrey Jaffer (jaffer at foxkid) * scm.h: types reformatted (TYP6 -> TYP7). * eval.c (ceval): Now dispatch directly on ISYMs in ceval. Fri Feb 15 23:39:48 1991 Aubrey Jaffer (jaffer at foxkid) * sys.c: #include not done for VMS Wed Feb 13 17:49:33 1991 Aubrey Jaffer (jaffer at foxkid) * scm.c scl.c: added unsigned declarations to some char * definitions in order to fix characters having negative codes. * scm.h (MAKISYM, MAKFLAG, ICHR, MAKICHR, MAKINUM): Now cast to long so that their calls don't have to. Changing MAKICHR fixed problem in scl.c (string2list) on IBMPC. * subr.c (quotient): support for `/' reintroduced; required by r3.99rs but not IEEE. * subr.c (char functions): added isascii tests for char-alphabetic, char-numeric?, char-whitespace?, char-upper-case?, and char-lower-case?. Added test against char_code_limit to int2char. * subr.c (s_char_alphap): is subr_1 not lsubr. * test.scm: added tests for char-alphabetic, char-numeric?, char-whitespace?, char-upper-case?, and char-lower-case?. * sys.c: most `return;'s eliminated to reduce warning messages. Substituted breaks and reordered switch and if clauses. Sun Feb 3 23:12:34 1991 Aubrey Jaffer (jaffer at foxkid) * scm1-2: released. * sys.c (read-char peek-char) added code for EOF. * test.scm (leaf-eq?) added and file "cont.scm" removed. I/O tests added. * sys.c (I/O functions) now check for input and output ports rather than just ports. * sys.c (lprin1f): occurences of stdout changed to f. Newlines after printing port removed. Thu Jan 31 22:52:39 1991 Aubrey Jaffer (jaffer at foxkid) * subr.c (quotient): support for `/' removed; not required. * scm.c (wta): message for OUTOFRANGE fixed. Mon Jan 28 12:45:55 1991 Aubrey Jaffer (jaffer at foxkid) * eval.c (apply): added checks for number of arguments. * scm.h (CHECK_SIGINT): checks for blocked SIGINT. * sys.c (lprin1): added blocking and testing for SIGINT so that output won't hang on VMS. * scm.c (repl): added fflush call. * scm.c (err_head, wta): added fflush calls to error routines so that error message come out in proper order.