Scsh 0.5.3 Release notes -*- outline -*- We are pleased to release scsh version 0.5.3. The new release has many bug fixes, improvements and new features. 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.5.3. (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 "open source." Scsh is now on Win32 Scsh is now on Mac OS X CVS repository will be public-readable New char-sets and char-set operations New regular expression system New libraries Renaming Bugfixes Thanks * What is scsh ============== Scsh is a broad-spectrum systems-programming environment for Unix embedded in R4RS 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: ftp://ftp-swiss.ai.mit.edu/pub/su/scsh/scsh-paper.ps ** 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: AIX BSD/OS CXUX FreeBSD HP-UX IRIX Linux NetBSD Solaris SunOS Ultrix Win32 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 ftp://ftp-swiss.ai.mit.edu/pub/su/scsh/scsh.tar.gz 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 ftp://ftp-swiss.ai.mit.edu/pub/su/scsh/scsh-manual.ps 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 ./scshvm -o ./scshvm -i ./scsh/scsh.image 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 scsh@zurich.ai.mit.edu and the netnews group comp.lang.scheme.scsh These two forums are exactly equivalent, being bi-directionally gatewayed at MIT. Bugs can be reported to scsh-bugs@zurich.ai.mit.edu or via the Scsh project's bugs section on SourceForge: http://sourceforge.net/projects/scsh/ If you do not netnews hierarchy, or wish to join the mailing list for other reasons, send mail to scsh-request@zurich.ai.mit.edu * The World-Wide What? ====================== We even have one of those dot-com cyberweb things: http://www.swiss.ai.mit.edu/ftpdir/scsh/ We now manage the project using SourceForge: http://sourceforge.net/projects/scsh/ * New in this release ===================== ** Scsh is now on Win32 Scsh will now build and run using Cygwin 1.1. This was tested on Windows NT 4.0 and Windows 2000, but presumably things could work on other Cygwin platforms such as Win95 or Win98. Cygwin is available from: http://sourceware.cygnus.com/cygwin/ ** Scsh is now on Mac OS X Scsh does now support Darwin and thus Mac OS X. This was simply achived by treating Darwin as a BSD platform. ** CVS repository is now publically accessable The scsh sources have moved to scsh.sourceforge.net, and the the CVS repository is publically readable. Here's the magic: cvs -d:pserver:anonymous@cvs.scsh.sourceforge.net:/cvsroot/scsh co scsh cvs -d:pserver:anonymous@cvs.scsh.sourceforge.net:/cvsroot/scsh co scsh-0.6 (The 0.6 source tree builds with a modern Scheme 48 and thread support. It has not been released.) ** New libraries Scsh now provides the SRFI-1, SRFI-13 and SRFI-14 libraries, giving portable support for list, string and character-set operations. These libraries make basic list and string hacking very straightforward. ** Database access via ODBC Brian Carlstrom, Sam Thiebault and Olin Shivers have designed and implemented a portable interface to relational databases. The code back-ends to ODBC drivers for portability. ** Bugfixes Over a year's worth of bug fixes. In particular, the old problems with the signal system blowing up builds on some of the more obscure Unix systems have been fixed. * 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 We'd like to thank everyone else for their patience; this release seemed like a long time coming. Brought to you by the Scheme Underground. Go forth and write elegant systems programs. -Olin Shivers, Brian Carlstrom, Martin Gasbichler & Mike Sperber