This message announces the availability of Scheme release scm5d1.

New in scm5d1:

SCM has the rudiments of an X11 interface.

	* x.c (init_x): Load "xevent.scm".
	* xtest.scm: Test key-press event.
	* xevent.h: Generated by "xgen.scm"
	* xevent.scm: Generated by "xgen.scm"
	* requires.scm: Sample "require.scm".
	* Xlibscm.texi (Event): Documented x:event-ref.
	* sys.c (scm_egc): More robust test for sufficient cells in
	freelist.
	* eval.c (wrapenv): Will no longer wrap an already wrapped
	environment.
	* repl.c (def_err_response): Now prints "expand-time environment"
	message only when relevant.
	* xgen.scm (event-map): Added.
	* x.c: Absorbed event_names into "xevent.h".
	* repl.c (def_err_response): Error message for expand-time only
	environment.
	* eval.c (lookupcar): (id_denote): Now handle environment objects
	in scm_env, lookupcar will complain if this happens in a run-time
	(rather than expand-time) context.
	(eval_syntax):  Added, to be used in Macroexpand.scm for LET-SYNTAX,
	LETREC-SYNTAX.
	(ceval_1): Fixed bug in eval.
	* scm.h (ENVP): exported macro from eval.c.
	* eval.c (apply): Removed some unreached statements, merged
	duplicate code in tc7_specfun case.
        * eval.c: (ceval_1): Made EVAL tail recursive.
	Cleaned up some stack tracing cases, renamed POP_TRACE
	to TOP_TRACE, since POP_TRACE sounds as though it should be the
	inverse of PUSH_TRACE.
	(ceval_1): Now modifies stack trace only after an estk
	frame may be pushed, that is, when some invocation of eval may
	modify the environment.  The bottom of the stack trace (the form
	being evaluated during a call to a subr) is kept in a global
	`scm_trace'.  Nested expressions involving primitives now give
	more accurate stack traces, without a speed penalty.
	(map): (for_each):  Always push an estk frame for the sake of stack
	tracing.
	* repl.c (scm_stack_trace): Now may print out the value of the
	global `scm_trace' as the top of the stack trace.
	* repl.c: Include <sys/types.h> for Cygwin, needed for select
	support macros.
	* scmfig.h: Define HAVE_SELECT for the Cygwin environment.
	* repl.c (scm_stack_trace): Put semi colons after frame numbers in
	stack trace, rather than colons so emacs will not try to balance
	parens.
	* build: Require build.scm in program-vicinity, since build.scm
	may not be installed in implementation-vicinity.
	* repl.c (def_err_response): Changed setjump to setjmp when
	setting up safeport.
	* Makefile (incdir): Added to abstract include directory location.
	* xgen.scm: Rewritten.  generates xevent.h and xevent.scm from
	<Xlib.h>.
	* inc2scm (scm<-usr/includes): System include path can be passed
	as argument.
	* unif.c (arrayp): Fixed problem with immediate arguments.
	(scm_prot2type): Added, abstracts prototype ->
	internal-array-type mapping. Accepts positive bignums as uvect
	prototypes if they are small enough to be elements of a uvect,
	similarly for negative bignums and ivects.
	(make_uve): (arrayp): Now use scm_prot2type.
	SINGLES no longer need to be #DEFINEd in order to allow fvects.
	* ramap.c:  Modifications for fvects if SINGLES not #DEFINEd.
	* r4rstest.scm: Added named LET test for scope of init forms.
	* eval.c (m_let): Changed scope of init forms in named LET, to
	conform to R5RS, in response to posting of Allegro Petrofsky
	<Allegro @ Petrofsky.Berkeley.CA.US> to comp.lang.scheme
	* crs.c (lwinsch): Renamed from lwinsert.  Why were idlok and
	nodelay commented out?
	* Xlibscm.texi: Pulled out of "scm.texi".
	* scl.c (llog2 lpow10): renamed from log2 and lpow10, which
	conflicted with djgpp include file /d/djgpp/include/math.h.
	* eval.c (lookupcar): Combined some error checking cases.
	(scm_macroexpand1):
	(scm_extended_env):
	(scm_env_ref): Low level support for hygienic macro expansion.
        * Macroexpand.scm (macro:expand): Added for hygienic macro expansion.
	* Macro.scm (renaming-transformer): Now passes a memoizing RENAME
	procedure, so that renaming the same identifier results in renamed
	identifiers that are EQV?  per "Hygienic Macros Through Explicit
	Renaming".
	* Init5d0.scm (defconst): Now allows redefinitions without effect
	in the sense of EQUAL?  rather than EQV? to allow reloading code
	defining constant list structure.
	* r4rstest.scm (test-eq?-eqv?-agreement): Added tests for eqv?
	vs. eq? agreement discussed in section "Equivalence predicates".
	* scl.c (inex_divbigbig): Was broken (did not return valid SCM)
	for some cases.
	* r4rstest.scm (test-inexact-printing): Added to check that
	(EQV? X (STRING->NUMBER (NUMBER->STRING X))) holds for inexact X.
	* scl.c (iflo2str): Revamped so that (EQV? X (STRING->NUMBER
	(NUMBER->STRING X))) holds for floating point X.  Somewhat as in:
	Burger & Dybvig
	"Printing Floating-Point Numbers Quickly and Accurately"
	<http://www.cs.indiana.edu/scheme-repository/doc.publications.html>
	But floating point rather than bignum arithmetic is used -- due to
	this state of sin one slop factor was introduced.  It would be
	good to check this on non-IEEE-754 architectures.
	(istr2flo): Now reads floating point numbers with exponents somewhat
	below -MAXEXP, since this such numbers can be represented with
	gradually underflowing denormals.
	* Makefile (require.scm): Added constructor.
	* sys.c (scm_maksubr): Added, returns a subr not (yet) bound to an
	interned symbol, abstracts the addition of the subr_table entry.
	(make_subr): Now uses scm_maksubr.
	* gsubr.c (make_gsubr): Now uses scm_maksubr (was buggily using
	old subr name encoding.)
	* eval.c (make_synt): Now uses scm_maksubr.
	* scm.h: Added prototypes for make_gsubr, scm_maksubr.
	* Init5d0.scm (identity): Now a subr: CR.
	* eval.c
	* gsubr.c
	* repl.c
	* scm.h
	* subr.c
	* sys.c (SNAME): Pointers to subr names now kept in a mallocated
	data structure, the top 16 bits of the CAR of a subr is an index
	into this table.  Eventually this should help support eg generic
	arithmetic.
	* sys.c (scm_grow_gra): Fixed error in mallocated accounting, made
	increment grow with allocated size.
	* Init5d0.scm (exec-self): Undo *script* meta-argument processing.
	* Init5d0.scm (read:sharp): Simplified somewhat; again accepts
	'#2((a b c) (1 2 3)) as array read syntax, with warning.
	* unif.c (raprin1): New write syntax for uniform vectors and arrays.
	(array2list): (list2ura): Fixed for zero-rank arrays.
	* Init5d0.scm (read:sharp): New read syntax for uniform vectors
	and arrays.
	* x.c (scm2int_pair): Generalized to accept uniform vectors and
	arrays.
	* eval.c
	* ramap.c
	* repl.c
	* rope.c
	* scl.c
	* scm.h
	* sys.c
	* unif.c
	Added uniform vector type for signed short integers, tc7_svect.
	The prototype is the symbol 'short, the print representation is
	not currently readable.  (Both items subject to change.)
	* x.c (x:close): Merged from x:close-display and x:destroy-window.
	Flushes after closing window.
	* x.c: Use OPN and other bits in type-word.  Fixed GC of closed
	windows and displays.
	* x.c: Added copyright notice.
	* mkimpcat.scm (edit-line): editline -> readline.
	* Makefile (mydlls): build edit-line separately to link in
	libraries correctly.
	* build.scm, mkimpcat.scm, x.c, x.h, x11.scm, xgen.scm, xscm.doc,
	xtest.scm: Xlib interface from xscm-2.01
	* repl.c (scm_warn): renamed from warn().
	* setjump.h
	* repl.c (scm_stack_trace):
	* sys.c (safewrite):
	 Made all safeport operations consistently use the standard C
	 setjmp, longjmp, and jmp_buf.
	* build.scm (build): -Dfreebsd no longer necessary for freebsd
	builds.
	* findexec.c: freebsd -> __FreeBSD__.
	* ioext.c: freebsd -> __FreeBSD__.
	* time.c: freebsd -> __FreeBSD__.
	* build.scm (obj->): Added (was called but not defined).
	* build.scm (read-version): 5d0 READ as a number; Assemble
	characters till whitespace.

1999-07-02  "Dai INUKAI(GAF05" <GAF05426 @ nifty.ne.jp>

	* rgx.c: __FreeBSD__ include should be "gnuregex.h".
	* Transcen.scm (expt): R5RS: 0^z is 1 if z = 0 and 0 otherwise.
	* r4rstest.scm (test-inexact): Added tests for EXPT of zero.

1999-05-09  Arne Glenstrup  <panic @ diku.dk>

	* Makefile (udscm5): Added '-s $(IMPLPATH)' for executable builds.
	* scm.h (ptobfuns): added const to puts() and fwrite() prototypes.
	* gmalloc.c: fixed compilation on hpux.

1999-02-12  Hakan L. Younes <d93-hyo @ nada.kth.se>

	* build.scm, findexec.c, scm.c, scm.texi, scmfig.h, time.c:
	amiga-gcc port.

1999-01-27  Bakul Shah 	<bakul @ torrentnet.com>

	* sys.c (add_final): Fixed call to scm_grow_gra.
	* subr.c (promisep): Added PROMISE?

				-=-=-

Scm conforms to Revised^5 Report on the Algorithmic Language Scheme
and the IEEE P1178 specification.  Scm is written in C and runs under
Amiga, Atari-ST, MacOS, MS-DOS, OS/2, NOS/VE, Unicos, VMS, Windows,
Unix, and similar systems.  ASCII and EBCDIC are supported.

Documentation is included explaining the many Scheme Language
extensions in scm, the internal representations, and how to extend or
include SCM in other programs.  Documentation is online at:

	     http://swissnet.ai.mit.edu/~jaffer/SCM.html

SCM can be obtained via FTP (detailed instructions follow) from:
 swissnet.ai.mit.edu:pub/scm/scm5d1.zip
 ftp.gnu.org:pub/gnu/jacal/scm5d1.zip

SLIB is a portable Scheme library which SCM uses:
 swissnet.ai.mit.edu:pub/scm/slib2c6.zip
 ftp.gnu.org:pub/gnu/jacal/slib2c6.zip

JACAL is a symbolic math system written in Scheme:
 swissnet.ai.mit.edu:pub/scm/jacal1b0.zip
 ftp.gnu.org:pub/gnu/jacal/jacal1b0.zip

HOBBIT is a compiler for SCM code:
 swissnet.ai.mit.edu:pub/scm/hobbit5x.tar.gz
 ftp.gnu.org:pub/gnu/jacal/hobbit5x.tar.gz

SLIB-PSD is a portable debugger for Scheme (requires emacs editor):
 swissnet.ai.mit.edu:pub/scm/slib-psd1-3.tar.gz
 ftp.gnu.org:pub/gnu/jacal/slib-psd1-3.tar.gz

SMG-SCM is an SMG interface package which works with SCM on VMS.
 swissnet.ai.mit.edu:pub/scm/smg-scm2a1.zip
 ftp.gnu.org:pub/gnu/jacal/smg-scm2a1.zip
A VMS version of Unzip is available by anonymous FTP from
 ftp.spc.edu:[ANONYMOUS.MACRO32]UNZIP.EXE.

TURTLSCM is a turtle graphics package which works with SCM on MS-DOS
or X11 machines:
 swissnet.ai.mit.edu:pub/scm/turtlegr.tar.gz
 ftp.gnu.org:pub/gnu/jacal/turtlegr.tar.gz

XSCM is a X windows interface package which works with SCM:
 swissnet.ai.mit.edu:pub/scm/xscm-2.01.tar.gz
 ftp.gnu.org:pub/gnu/jacal/xscm-2.01.tar.gz

MacSCM is a Macintosh applications building package which works with
SCM (similar to XSCM).
 swissnet.ai.mit.edu:pub/scm/macscm.tar.Z

WB is a disk based, sorted associative array (B-tree) library for SCM.
Using WB, large databases can be created and managed from SCM.
 swissnet.ai.mit.edu:pub/scm/wb1a2.tar.gz

SIMSYNCH is a digital logic simulation system written in SCM.
 swissnet.ai.mit.edu:pub/scm/synch1b0.zip
 ftp.gnu.org:pub/gnu/jacal/synch1b0.zip

DLD is a C library package allowing SCM to dynamically load object
files on VAX (Ultrix), Sun 3 (SunOS 3.4 and 4.0), SPARCstation
(SunOS 4.0), Sequent Symmetry (Dynix), Atari ST, and a.out Linux
systems.
 ftp.gnu.org:pub/gnu/dld-3.3.tar.gz

SCM.EXE (265k) is a SCM executable for DOS and MS-Windows.
Note: SCM.EXE still requires slib2c6 and scm5d1 above.
 swissnet.ai.mit.edu:pub/scm/scm.exe

#! implements "#!" (POSIX) shell-scripts for MS-DOS batch files.
 swissnet.ai.mit.edu:pub/scm/sharpbang.zip
 swissnet.ai.mit.edu:pub/scm/#!.zip

				-=-=-

  ftp swissnet.ai.mit.edu (anonymous)
  bin
  cd pub/scm
  get scm5d1.zip
  get slib2c6.zip
or
  ftp ftp.gnu.org (anonymous)
  bin
  cd pub/gnu/jacal
  get scm5d1.zip
  get slib2c6.zip

Remember to use binary mode when transferring the files.
Be sure to get and read the GNU General Public License (COPYING).
It is included in scm5d1.zip.

I sell IBM PC floppy disk sets with the source files, documentation,
and MS-DOS and i386 MS-DOS executables for $99.00.  To order, send
e-mail to jaffer @ rice-chex.ai.mit.edu.
