We are pleased to release version 0.5 of scsh, the Scheme shell.

* Scsh
------

Scsh is a Scheme system designed for systems programming and high-level
scripting of Unix applications. It includes

- a complete Posix interface from Scheme, including complete
  sockets support, signal handlers, and tty control;

- a uniform interface to other generally-universal Unix features, 
  such as symlinks and pseudo-terminals;

- a library of generally useful tools for scripting applications, 
  such as regular expressions;

- macro support for a high-level process notation, allowing one to
  build pipelines of programs and redirect I/O, similar to Unix shells
  such as sh and csh;

- a full R5RS-compliant Scheme, with important extensions: record types,
  exceptions, and modules;

- command-line interface designed for writing scripts that are invoked
  with #! triggers on their first line.

Scsh runs on most Unix platforms, including Linux, various BSD systems,
Solaris, AIX, and Irix. It is implemented as an extension of Scheme 48,
a portable, byte-code interpreter Scheme implementation.

* Obtaining scsh
----------------

You may obtain the new release at the scsh web page

    http://www-swiss.ai.mit.edu/scsh/

which points to the following file, retrievable by anonymous ftp:

    ftp://ftp-swiss.ai.mit.edu/pub/su/scsh/scsh.tar.gz

The tar file includes full sources, a detailed manual and a paper
describing the design of the system. 

For the lazily curious, we also have the manual separately available as
    ftp://ftp-swiss.ai.mit.edu/pub/su/scsh/scsh-manual.ps
Just click 'n view. 

You should be able to build scsh for your system by simply ftping
the release file, and doing the following:
    gunzip < scsh.tar.gz | tar xf -
    cd scsh-0.5
    ./configure
    make
    make install

* New in this release
---------------------
Our last release had a lot of new code, and some elements were pretty
flaky. Scsh is now much more robust. All known bugs have been fixed.

Scsh now supports complete Posix, including signal handlers.
Early autoreaping of child processes is now handled by a SIGCHLD
signal handler, so children are reaped as early as possible with no
user intervention required.

A functional static heap linker is included in this release.
It is ugly, limited in functionality, and extremely slow, but it works.
It can be used to build scsh binaries that start up instantly.

There is a new command-line switch, 
    -sfd <num>
which causes scsh to read its script from file descriptor <num>.

Scheme 48's floating-point support was inadvertently omitted from the last
release. It has been reinstated.

The regular expression system has been sped up.  Regular-expression
compilation is now provided, and the AWK macro has been rewritten to
pre-compile regexps used in rules outside the loop.  It is still, however,
slower than it should be.

We have introduced two new procedures for performing regexp-directed
string substitutions:
    regexp-substitute
    regexp-substitute/global
The design differs from what one finds in systems such as sed or perl,
and is quite powerful.

Execing programs should be faster in this release, since we now use the
CLOEXEC status bit to get automatic closing of unrevealed port file
descriptors.

* Thanks
--------

We received many bug reports, improvements, fixes and suggestions from scsh
users. In particular, we'd like to thank Alan Bawden, Michael Becker, Jim
Blandy, Jin Choi, Sean Doran, Lutz Euler, Kevin Esler, Rolf-Thomas Happe,
David Hull, Shriram Krishnamurthi, Tod Olson, Michel Schinz, Bill Sommerfeld,
Mike Sperber, and Victor Zandy for their contributions to this release.

Thanks, guys; we really appreciate the feedback.

Olin Shivers		Brian D. Carlstrom
Cambridge, Mass.	Santa Clara, Ca.

May, 1997		
