263 lines
8.9 KiB
Plaintext
263 lines
8.9 KiB
Plaintext
Scsh 0.5.2 Release notes -*- outline -*-
|
|
|
|
We are pleased to release scsh version 0.5.2. 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.2. (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).)
|
|
|
|
This release is the first new release of scsh in over a year. We've been
|
|
using it, and have had no problems. However, we only recommend eager users
|
|
download it. We'll upgrade it to a 0.5.3 release after a week or two, when
|
|
this release has been shaken out.
|
|
|
|
|
|
* What is scsh
|
|
==============
|
|
Scsh is a broad-spectrum systems-programming environment for Unix embedded
|
|
in R4RS Scheme.
|
|
|
|
** 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
|
|
NeXTStep
|
|
Solaris
|
|
SunOS
|
|
Ultrix
|
|
Win32
|
|
|
|
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
|
|
|
|
If you do not receive the alt 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 URL things:
|
|
http://www-swiss.ai.mit.edu/scsh/
|
|
|
|
|
|
* New in this release
|
|
=====================
|
|
** Scsh is now "open source."
|
|
We finally got around to tacking an ideologically hip copyright
|
|
onto the source. (Not that we ever cared before what you did with
|
|
the system...) The Scheme 48 authors have also graciously retrofitted
|
|
a BSD-style open-source copyright onto the underlying Scheme 48 0.36
|
|
platform for us. The whole system is now open source, top-to-bottom.
|
|
|
|
Take all the code you like; we'll just write more.
|
|
|
|
** CVS repository now public-readable
|
|
Here's what you do:
|
|
CVS_RSH=ssh
|
|
cvs -d kowloon-bay.ai.mit.edu:/projects/express/scsh-cvs checkout scsh
|
|
|
|
** New char-sets and char-set operations
|
|
See the manual for more information on using character sets
|
|
for text processing. Also, see the ccp package in scsh/scsh/lib
|
|
for a new library providing character->character partial maps,
|
|
which are also useful for general string processing.
|
|
|
|
** New regular expression system
|
|
There's a whole, new regexp package in scsh. There's a new,
|
|
s-expression-based notation for regexps, called SRE's. The new
|
|
notation has been integrated into the AWK macro and field-parser functions.
|
|
The older Posix notation is still supported for backwards compatibility.
|
|
|
|
There's a whole chapter on regexps in the new manual; it has full details.
|
|
|
|
The previous AWK and field-reader system is provided in a
|
|
backwards-compatibility package. See package obsolete-awk-package
|
|
in scsh-package.scm.
|
|
|
|
** New libraries
|
|
The SRFI-1 list library is available, in the list-lib package.
|
|
There is a large, powerful string-processing library available
|
|
in the string-lib package. See the directory scsh/scsh/lib/ for
|
|
documentation and source.
|
|
|
|
These libraries make basic list and string hacking very straightforward.
|
|
|
|
** Renaming
|
|
We are shifting from a reduce-foo convention to a more standard
|
|
foo-fold convention. This has caused the following renamings:
|
|
reduce-char-set => char-set-fold
|
|
reduce-port => port-fold
|
|
The older names are still bound, but are deprecated and will likely
|
|
go away in a future release.
|
|
|
|
String utilities INDEX and RINDEX are gone. Use the string-lib procedures
|
|
instead.
|
|
|
|
** 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.
|
|
|
|
Alan Bawden
|
|
Jim Blandy
|
|
Per Bothner
|
|
Tom Breton
|
|
Christopher Browne
|
|
Sean Doran
|
|
Ray Dillinger
|
|
Allyn Dimock
|
|
Scott Draves
|
|
Lutz Euler
|
|
Kevin Esler
|
|
Jeremy Fitzhardinge
|
|
Noah Friedman
|
|
Martin Gasbichler
|
|
Andy Gaynor
|
|
Ian Grant
|
|
Eric Hanchrow
|
|
Karl Hegbloom
|
|
Johann Hibschman
|
|
Ian Horswill & the Northwestern Scheme wizards
|
|
Gary Houston
|
|
Graham Hughes
|
|
Jarmo Hurri
|
|
Lars Kellogg-Stedman
|
|
Andre Koehoerst
|
|
Shriram Krishnamurthi
|
|
Jakob Lichtenberg
|
|
Eric Marsden
|
|
Peter C. Olsen
|
|
Willliam Pippin
|
|
David Rush
|
|
Michael Schinz
|
|
Manuel Serrano
|
|
Mark Shirle
|
|
Bill Somerfeld
|
|
Mike Sperber
|
|
Harvey J. Stein
|
|
Pawel Turnau
|
|
Rob Warnock
|
|
Kenneth R. Westerback
|
|
|
|
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
|
|
Cambridge
|
|
29 September 1999
|