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 which causes scsh to read its script from file descriptor . 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