The Scheme Underground Network Package

I have written a set of libraries for doing Net hacking from Scheme/scsh. It includes:
An smtp client library.
Forge mail from the comfort of your own Scheme process.
rfc822 header library
Read email-style headers. Useful in several contexts (smtp, http, etc.)
Simple structured HTML output library
Balanced delimiters, etc.
The SU Web server
This is a complete implementation of an HTTP 1.0 server in Scheme. The server contains other standalone packages that may separately be of use: The server has three main design goals:
Extensibility
The server is in fact nothing but extensions, using a mechanism called "path handlers" to define URL-specific services. It has a toolkit of services that can be used as-is, extended or built upon. User extensions have exactly the same status as the base services.

The extension mechanism allows for easy implementation of new services without the overhead of the CGI interface. Since the server is written on top of the Scheme shell, the full set of Unix system calls and program tools is available to the implementor.

Mobile code
The server allows Scheme code to be uploaded for direct execution inside the server. The server has complete control over the code, and can safely execute it in restricted environments that do not provide access to potentially dangerous primitives (such as the "delete file" procedure.)
Clarity
I wrote this server to help myself understand the Web. It is voluminously commented, and I hope it will prove to be an aid in understanding the low-level details of the Web protocols.

The S.U. server has the ability to upload code from Web clients and execute that code on behalf of the client in a protected environment.

Some simple documentation on the server is available.

Obtaining the system

The network code is available by ftp. To run the server, you need our 0.4 release of scsh which has just been released. Beyond actually running the server, the separate parser libraries and other utilites may be of use as separate modules.
Olin Shivers / shivers@ai.mit.edu