Release of scsh 0.6.0

Martin Gasbichler <>
14 Jan 2002 01:58:21 -0500

          From comp.compilers

Related articles
Release of scsh 0.6.0 (Martin Gasbichler) (2002-01-14)
| List of all articles for this month |

From: Martin Gasbichler <>
Newsgroups: comp.lang.scheme.scsh,comp.compilers,comp.lang.scheme
Followup-To: comp.lang.scheme.scsh
Date: 14 Jan 2002 01:58:21 -0500
Organization: Zentrum fuer Datenverarbeitung
Keywords: Scheme, available
Posted-Date: 14 Jan 2002 01:58:21 EST

Olin, Brian, Mike and I are very pleased to announce the release of
version 0.6.0 of scsh, the Scheme Shell.

scsh 0.6.0 is a major new release. Among the new features, scsh
0.6.0 supports lightweight multithreading which makes scsh an
excellent platform for writing network daemons and other concurrent

Note that scsh has a new home in the world-wide web:

scsh's ftp download location has also changed; it is now at:

We also intend to release a new version of the Scheme Underground
Network Package with support for scsh 0.6.0 very soon.

We have appended the RELEASE file from the distribution for your

Brian, Martin, Mike, and the illustrious Dr. S.,
your humble scsh maintainers

Scsh 0.6.0 Release notes -*- outline -*-

We are pleased to release scsh version 0.6.0. The new release is
based on a newer version of Scheme 48 than the previous releases. The
update of the underlying system is a massive switch and provides many
new features, most notably a sophisticated thread system. We tried to
make as less changes as possible to the API, see Section "API changes"
for details. Unfortunately, due to the number of changes that were
necessary to the internal structures, this release will probably
contain some bugs. Don't hesitate to report bugs, we rely on your feedback!

The text below gives a general description of scsh, instructions for obtaining
it, pointers to discussion forums, and a description of the new features in
release 0.6.0. (Emacs should display this document is in outline mode. Say
c-h m for instructions on how to move through it by sections (e.g., c-c c-n,
c-c c-p).)

* Contents
What is scsh
    Scsh as a scripting language
    Scsh as a systems-programming language
    Scsh is a portable programming environment
Obtaining and installing scsh
Getting in touch
The World-Wide What?
New in this release
    Scsh is now based on Scheme 48 0.53
    Interface to dot-locking, crypt and syslog
    API changes

* What is scsh
Scsh is a broad-spectrum systems-programming environment for Unix embedded
in R5RS Scheme. It has an open-source copyright, and runs on most major
Unix systems.

** Scsh as a scripting language
Scsh has a high-level process notation for doing shell-script like tasks:
running programs, establishing pipelines and I/O redirection. For example, the
shell pipeline

        gunzip < paper.tex.gz | detex | spell | lpr -Ppulp &

would be written in scsh as

        (& (| (gunzip) (detex) (spell) (lpr -Ppulp)) ; Background a pipeline
              (< paper.tex.gz)) ; with this redirection

Scsh embeds this process notation within a full Scheme implementation.
The process notation is realized as a set of macro definitions, and is
carefully designed to allow full integration with standard Scheme code.
Scsh isn't Scheme-like; it is Scheme.

At the scripting level, scsh also has an Awk design, also implemented
as a macro that can be embedded inside general Scheme code.

Scripts can be written as standalone Scheme source files, with a leading
        #!/usr/local/bin/scsh -s
trigger line.

** Scsh as a systems-programming language
Scsh additionally provides the low-level access to the operating system
normally associated with C. The current release provides full access to Posix,
plus important non-Posix extensions, such as complete sockets support.
"Complete Posix" means: fork, exec & wait, sockets, full read, write, open &
close, seek & tell, complete file-system access, including stat,
chmod/chgrp/chown, symlink, FIFO & directory access, tty & pty support, file
locking, pipes, select, file-name pattern-matching, time & date, environment
variables, signal handlers, and more.

In brief, you can now write Unix systems programs in Scheme instead of C.
For example, we have implemented an extensible HTTP server at MIT entirely
in scsh.

As important as full access to the OS is the manner in which it is provided.
Scsh integrates the OS support into Scheme in a manner which respects the
general structure of the language. The details of the design are discussed
in a joint MIT Lab for Computer Science/University of Hong Kong technical
report, "A Scheme Shell," also to appear in a revised format in the *Journal
of Lisp and Symbolic Computation." This paper is also available by ftp:

** Scsh is a portable programming environment
Scsh is designed for portability. It is implemented on top of Scheme 48,
a byte-code-interpreter Scheme implementation. The Scheme 48 virtual machine
can be compiled on any system with a C compiler; the rest of Scheme 48 is
machine-independent across 32-bit processors. Scsh's OS interface is
also quite portable, providing a consistent interface across different
Unix platforms. We currently have scsh implementations for:
        Darwin/Mac OS X

Scsh code should run without change across these systems.
Porting to new platforms is usually not difficult.

* Obtaining and installing scsh
You can get a copy of scsh via anonymous ftp, from
The tar file includes a detailed manual and a paper describing
the design of the system.

For the lazily curious, we also have the manual separately available as
Just click 'n view.

You *should* be able to build scsh on the standard platforms with exactly five
commands: gunzip, tar, cd, ./configure, and make. The configure script figures
out the special flags and switches needed to make the build work (thanks to
the GNU project for the autoconfig tool that makes this possible).

After doing the make, you can start up a Scheme shell and try it out
by saying
See the manual for full details on the command-line switches.

If it's harder than this, and your system is standard, we'd like to know
about it.

* Getting in touch
There are two main ways to join in scsh-related discussion: the mailing-list
and the netnews group
These two forums should be equivalent, being bi-directionally gatewayed
at MIT, but due to technical problems it's better to read them both.

Bugs can be reported to
or via the Scsh project's bugs section on SourceForge:

If you do not netnews hierarchy, or wish to join the mailing
list for other reasons, send mail to

* The World-Wide What?
We even have one of those dot-com cyberweb things:
We now manage the project using SourceForge:

* New in this release

** Scsh is now based on Scheme 48 0.53
    With the move from Scheme 48 version 0.36 to version 0.53 in this
    release the underlying system received a massive update. The most
    significant changes include:
        User level threads
        Advanced garbage collector
        Improved foreign function interface to C

    The most significant change for Scsh users is the addition of a
    user-level thread system. Scsh provides various features to deal
    with this new power in a system programming environment: An event
    based interface to interrupts, thread local process state and
    thread-safe system calls.

** A manual for Scheme 48 has been included
    Richard Kelsey, the author of Scheme 48, has graciously allowed us
    to retrofit the current Scheme 48 manual for inclusion in this scsh

** Interfaces to dot-locking, crypt and syslog
    Scsh now provides advisory file locking via the dot-locking scheme
    and a direct binding to the crypt function. Furthermore we added
    a complete, system-independent and thread-safe interface to syslog.

** API changes
    Some features of the previous releases are currently not
    supported as we did not have the time to implement them. Please tell
    us, if you can't get along without them. Here is a listing of these
    currently dereleased features:
        ODBC support

    The following procedures received new names in this release:
        sleep (now process-sleep)
        sleep-until (now process-sleep-until)

    network-info, service-info and protocol-info now return #f on non-success.

    The default directory for creating temporary files has changed: It's
    now the value of $TMPDIR if set and /var/tmp otherwise.

    The nth procedure is still there but is now officially obsolete. It
    will go away in a future release.

** HTML version of the manual
    There is now a HTML version of the scsh manual generated by tex2page

** Bugfixes
    Most of the known bugs of version 0.5.3 have been fixed. See the
    project page on SourceForge for a list of the remaining known bugs.

* Thanks

We would like to thank the members of local-resistance cells for the
Underground everywhere for bug reports, bug fixes, design review and comments
that were incorporated into this release. We really appreciate their help,
particularly in the task of porting scsh to new platforms.
        Friedrich Dominicus
        Jay Nietling
        Tim Bradshaw
        Robert Brown
        Eric Marsden
        Paul Emsley
        Pawel Turnau
        Hannu Koivisto
        Andy Gaynor
        Francisco Vides Fernandez
        Tim Burgess
        Brian Denheyer
        Harvey Stein
        Eric Hilsdale
        Andreas Bernauer
        Reini Urban
        Peter Biber
        Roland Weiss
        Richard GŁnther
        Dirk Staneker

We'd like to thank everyone else for their patience; we are sorry that
it took more than two years from the start of the port to this release.

Brought to you by the Scheme Underground. Go forth and write elegant systems
        -Olin Shivers, Brian Carlstrom, Martin Gasbichler & Mike Sperber

Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.