This message announces the availability of Scheme release scm5e2. SCM conforms to Revised^5 Report on the Algorithmic Language Scheme and the IEEE P1178 specification. SCM is written in C and runs under Amiga, Atari-ST, MacOS, MS-DOS, OS/2, NOS/VE, Unicos, VMS, Windows, Unix, and similar systems. SCM is free software. It is released under the GNU Public License (GPL) with an exception allowing it to be linked with non-GPL programs (see http://swiss.csail.mit.edu/~jaffer/SCM_LICENSE). Documentation and distributions in several formats are linked from SCM's home page: http://swissnet.ai.mit.edu/~jaffer/SCM.html Links to distributions of SCM and related softwares are at the end of this message. -=-=- scm5e2 news: Hinting GCC branch-predictions nets 10% speed improvement for SCM running the JACAL symbolic mathematics system. * scmfig.h (SCM_EXPECT_TRUE, SCM_EXPECT_FALSE): Added. (POSFIXABLE, NEGFIXABLE, UNEGFIXABLE): SCM_EXPECT_TRUE. * scmfig.h (__builtin_expect): Added stub for non-gcc compilers. * scm.h: SCM_EXPECT_TRUE and SCM_EXPECT_FALSE replace __builtin_expect(). (ASRTER, ASRTGO): SCM_EXPECT_FALSE. * scm.h (INUMP, IMP, SINGP): Added __builtin_expect() netting more than 9% speed improvement in JACAL. * Makefile (scm5.opt, udscm4.opt): Commented out -fno-guess-branch-probability flag. * Makefile (udscm4.opt, scm5.opt): Condition -fno-guess-branch-probability on `type gcc'. * Makefile (scm5.opt, udscm4.opt): -fno-guess-branch-probability improves benchmark speed 10% on i686. (hfiles): Moved to top of file so that dependencies work. * byte.c, continue.c, crs.c, dynl.c, eval.c, gsubr.c, ioext.c, posix.c, ramap.c, record.c, repl.c, rope.c, sc2.c, scl.c, scm.c, scm.h, socket.c, subr.c, sys.c, time.c, unif.c, unix.c, x.c: Regularized `if' syntax. * scm.c (l_pause): __CYGWIN__ now has pause(). * scmfig.h (LACK_FTIME): __CYGWIN__ now has ftime(). * socket.c (l_lna, l_hostinfo, l_netinfo, l_setnet): Made conditional on __CYGWIN__. * ioext.c: __CYGWIN__ has . * scl.c (lasinh, lacosh, latanh): Replaced by libc functions. * scl.c (sum, difference, divide): Added BIGDIG* cast to &z. * scl.c (numident): Don't bomb given bignums. * scl.c (makdbl): (+ -1/0 +5i) ==> -1/0; not 0/0. * scl.c (apx_log10): Removed unused variable. * scl.c (scm_magnitude): Renamed from magnitude(). (scm_abs): Added, real-only. * scl.c (safe_add_1): Replaces add1. (scm_truncate): Renamed from ltrunc. * scm.h (scm_truncate): Renamed from ltrunc. (scm_floor, scm_ceiling): Added. * subr.c (absval): Moved to scl.c. * rope.c (num2dbl): Handle 0/0. * scl.c (inf2str): Changed to "+inf.0" and "-inf.0". (istr2flo): Parse "+inf.0", "-inf.0", and COMPACT_INFINITY_NOTATION. (istr2flo, inf2str): COMPACT_INFINITY_NOTATION flag enables +/0 and -/0 infinity notations. * Transcen.scm (quo, rem, mod): New names for inexact quotient, remainder, and modulo. * Init5e1.scm (abs): Is no longer synonym for magnitude. * Transcen.scm (exact-round, exact-floor, exact-ceiling) (exact-truncate): Added SRFI-70 convenience functions. (limit): Removed. * Transcen.scm (sequence->limit): Removed use of 1/0 literal. * Transcen.scm (expt): 0^0 ==> 1. * scl.c (scm_intexpt): 0^0 ==> 1. * Transcen.scm, Init5e1.scm (infinite?, finite?): Added. * scl.c (makdbl, init_scl): Don't bother with scm_narn for MSC. (scm_finitep): Removed to Transcen.scm and Init5e1.scm. * scm.h (scm_narn): Renamed from infi. * r4rstest.scm (SECTION 6 5 5): Restored 0^0 test. * hobbit.scm (*c-keywords*): absval --> scm_abs; magnitude --> scm_magnitude. * rope.c, scm.c, scm.texi, scmmain.c, script.c, socket.c: Added const to argv. * scmmain.c, scm.h, scm.c, rope.c, repl.c: Added const decls. * build.scm (build:command): Comment to script: [-p ]. * Makefile (turfiles): Added turtle-graphics files. * Makefile (DOSCM): Abstracted DOS zip creation. * unexelf.c: Imported from emacs-22.0.50 to fix FC4 build. * differ.c (diff_mid_split): Unused `m' argument removed. * scm.spec (slibpath, dumparch): Added. From: Steve VanDevender * scmfig.h (SHORT_INT, CDR_DOUBLES): For __x86_64 (AMD Opteron). From: Thomas Bushnell * scm.doc, scm.1: Corrected spelling errors. -=-=- SCM source is available from: http://swissnet.ai.mit.edu/ftpdir/scm/scm5e2.zip swissnet.ai.mit.edu:/pub/scm/scm5e2.zip http://swissnet.ai.mit.edu/ftpdir/scm/scm-5e2-1.src.rpm swissnet.ai.mit.edu:/pub/scm/scm-5e2-1.src.rpm Also available as i386 binary RPM: http://swissnet.ai.mit.edu/ftpdir/scm/scm-5e2-1.i386.rpm swissnet.ai.mit.edu:/pub/scm/scm-5e2-1.i386.rpm SLIB is a portable Scheme library which SCM uses: http://swissnet.ai.mit.edu/ftpdir/scm/slib3a3.zip swissnet.ai.mit.edu:/pub/scm/slib3a3.zip Also available as RPM: http://swissnet.ai.mit.edu/ftpdir/scm/slib-3a3-1.noarch.rpm swissnet.ai.mit.edu:/pub/scm/slib-3a3-1.noarch.rpm JACAL is a symbolic math system written in Scheme: http://swissnet.ai.mit.edu/ftpdir/scm/jacal1b6.zip swissnet.ai.mit.edu:/pub/scm/jacal1b6.zip SLIB-PSD is a portable debugger for Scheme (requires emacs editor): http://swissnet.ai.mit.edu/ftpdir/scm/slib-psd1-3.tar.gz swissnet.ai.mit.edu:/pub/scm/slib-psd1-3.tar.gz SMG-SCM is an SMG interface package which works with SCM on VMS. http://swissnet.ai.mit.edu/ftpdir/scm/smg-scm2a1.zip swissnet.ai.mit.edu:/pub/scm/smg-scm2a1.zip A VMS version of Unzip is available by anonymous FTP from ftp.spc.edu:[ANONYMOUS.MACRO32]UNZIP.EXE. TURTLSCM is a turtle graphics package which works with SCM on MS-DOS or X11 machines: http://swissnet.ai.mit.edu/ftpdir/scm/turtlegr.tar.gz swissnet.ai.mit.edu:/pub/scm/turtlegr.tar.gz XSCM is a X windows interface package which works with SCM: http://swissnet.ai.mit.edu/ftpdir/scm/xscm-2.01.tar.gz swissnet.ai.mit.edu:/pub/scm/xscm-2.01.tar.gz MacSCM is a Macintosh applications building package which works with SCM (similar to XSCM). http://swissnet.ai.mit.edu/ftpdir/scm/macscm.tar.Z swissnet.ai.mit.edu:/pub/scm/macscm.tar.Z WB is a disk based, sorted associative array (B-tree) library for SCM. Using WB, large databases can be created and managed from SCM. http://swissnet.ai.mit.edu/ftpdir/scm/wb1c2.zip swissnet.ai.mit.edu:/pub/scm/wb1c2.zip http://swissnet.ai.mit.edu/ftpdir/scm/wb-1c2-1.src.rpm swissnet.ai.mit.edu:/pub/scm/wb-1c2-1.src.rpm Also available as i386 binary RPM: http://swissnet.ai.mit.edu/ftpdir/scm/wb-1c2-1.i386.rpm swissnet.ai.mit.edu:/pub/scm/wb-1c2-1.i386.rpm SIMSYNCH is a digital logic simulation system written in SCM. http://swissnet.ai.mit.edu/ftpdir/scm/synch1b0.zip swissnet.ai.mit.edu:/pub/scm/synch1b0.zip DLD is a C library package allowing SCM to dynamically load object files on VAX (Ultrix), Sun 3 (SunOS 3.4 and 4.0), SPARCstation (SunOS 4.0), Sequent Symmetry (Dynix), Atari ST, and a.out Linux systems. ftp.gnu.org:pub/gnu/dld/dld-3.3.tar.gz SCM.EXE (314k) is a SCM executable for DOS and MS-Windows. Note: SCM.EXE still requires slib3a3 and scm5e2 above. http://swissnet.ai.mit.edu/ftpdir/scm/scm.exe swissnet.ai.mit.edu:/pub/scm/scm.exe #! implements "#!" (POSIX) shell-scripts for MS-DOS batch files. http://swissnet.ai.mit.edu/ftpdir/scm/sharpbang.zip swissnet.ai.mit.edu:/pub/scm/sharpbang.zip http://swissnet.ai.mit.edu/ftpdir/scm/#!.zip swissnet.ai.mit.edu:/pub/scm/#!.zip Programs for printing and viewing TexInfo documentation (which SCM has) come with GNU Emacs or can be obtained via ftp from: ftp.gnu.org:pub/gnu/texinfo/texinfo-4.0.tar.gz