*** empty log message ***
This commit is contained in:
parent
5d8af0d1f5
commit
f471aa500d
173
RELEASE
173
RELEASE
|
@ -1,10 +1,74 @@
|
|||
This is a release of scsh, release 0.4.0.
|
||||
Scsh is a Unix shell that is embedded within R4RS Scheme.
|
||||
It provides high-level shell notation and full access to
|
||||
the Unix system calls. The current implementation is built
|
||||
on top of Scheme 48, version 0.36.
|
||||
Scsh is one
|
||||
===========
|
||||
|
||||
We currently have scsh running on:
|
||||
Scheme shell version 0.1 was released to the Net exactly a year ago today,
|
||||
Halloween 1995. We are pleased to release scsh version 0.4 to mark scsh's
|
||||
first birthday. 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.4. To read this document with emacs outline
|
||||
mode, say M-x outline-mode.
|
||||
|
||||
* 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 realised 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.
|
||||
|
||||
** Scsh as a systems-programming language
|
||||
-----------------------------------------
|
||||
Scsh additionally provides the low-level access to the operating system
|
||||
normally associated with C. With the exception of signal handlers, the current
|
||||
release provids 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, 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://swiss-ftp.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,
|
||||
CXUX,
|
||||
HP-UX,
|
||||
|
@ -15,47 +79,90 @@ We currently have scsh running on:
|
|||
Solaris,
|
||||
SunOS,
|
||||
Ultrix
|
||||
It's not hard to port scsh to new systems.
|
||||
Scsh code should run without change across these systems.
|
||||
Porting to new platforms is usually not difficult.
|
||||
|
||||
You can get a copy of scsh via anonymous ftp, from the following:
|
||||
ftp://clark.lcs.mit.edu/pub/su/scsh/scsh.tar.gz
|
||||
|
||||
* Obtaining and installing scsh
|
||||
===============================
|
||||
You can get a copy of scsh via anonymous ftp, from
|
||||
ftp://swiss-ftp.ai.mit.edu/pub/su/scsh/scsh.tar.gz
|
||||
These tar files include a detailed manual and a paper describing
|
||||
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://clark.lcs.mit.edu/pub/su/scsh/scsh-manual.ps
|
||||
ftp://swiss-ftp.ai.mit.edu/pub/su/scsh/scsh-manual.ps
|
||||
Just click 'n view.
|
||||
|
||||
The current release is primarily useful for writing shell scripts
|
||||
and doing general systems programming.
|
||||
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).
|
||||
|
||||
Real interactive use needs a parser for an sh-like syntax, job control,
|
||||
and the gnu readline library. If you're interested in hacking
|
||||
on these things, drop us a line at scheme-underground@ai.mit.edu.
|
||||
We've got designs for most of this stuff; we're just short on time
|
||||
and bodies.
|
||||
If it's harder than this, and your system is standard, we'd like to know
|
||||
about it.
|
||||
|
||||
New in this release:
|
||||
- The scsh network package, a complete interface for Berkeley-style sockets.
|
||||
We are going to keep the code for our higher-level protocols (ftp, telnet,
|
||||
http, and so forth) close to home for one more release.
|
||||
|
||||
- The awk loop and field parser package.
|
||||
* Getting in touch
|
||||
==================
|
||||
There are two main ways to join in scsh-related discussion: the mailing-list
|
||||
scsh@martigny.ai.mit.edu
|
||||
and the netnews group
|
||||
alt.lang.scheme.scsh
|
||||
These two forums are exactly equivalent, being bi-directionally gatewayed
|
||||
at MIT.
|
||||
|
||||
These two packages are documented in the reference manual.
|
||||
Bugs can be reported to
|
||||
scsh-bugs@martigny.ai.mit.edu
|
||||
|
||||
Lots of plans for the next release: libraries with network protocol code,
|
||||
the html parser and the server kit, module switches on the command line,
|
||||
threads -- we'll do our best.
|
||||
If you do not receive the alt netnews hierarchy, or wish to join the mailing
|
||||
list for other reasons, send mail to
|
||||
scsh-request@martigny.ai.mit.edu
|
||||
|
||||
We thank Brent Benson, Travis V. Broughton, Brian Dennis, Noah Friedman Mike
|
||||
Gunter, Shriram Krishnamurthi, John P. Lewis, Tom Lord, Scott Schwartz, and
|
||||
Bill Sommerfeld, Michael Sperber, Axel Wienberg, for bug reports, bug fixes,
|
||||
and comments that were incorporated into this release.
|
||||
|
||||
Brought to you by the Scheme Underground scsh team.
|
||||
* New in this release
|
||||
=====================
|
||||
|
||||
** New system calls.
|
||||
select, file locking, full tty device control, ptys, set-file-times,
|
||||
process timing, seek & tell. We still don't have signal handlers; with this
|
||||
exception, Scsh now has all of Posix.
|
||||
|
||||
** Automatic reaping of exited subprocesses.
|
||||
You may wait on a subprocess zero, one, or more times without filling
|
||||
up the kernel's process table or generating an error.
|
||||
|
||||
** New delimited-input reader procedures.
|
||||
You may read input delimited by a newline character (read-line),
|
||||
a blank-line (read-paragraph), or a character from an arbitrary
|
||||
set (read-delimited). These procedures have native-code support
|
||||
for reading from Unix input sources, and are quite fast.
|
||||
|
||||
** Better support for writing standalone scripts.
|
||||
It's much easier to write standalone scripts now. Scripts can use
|
||||
the new command-line switches to open dependent modules and load
|
||||
dependent source code. Scripts can also be written in the Scheme 48
|
||||
module language.
|
||||
|
||||
** Etc.
|
||||
Control of I/O buffering policy, better error reporting, bug fixes,
|
||||
here-strings, sub-second time precision, ...
|
||||
|
||||
|
||||
* Thanks
|
||||
========
|
||||
|
||||
We thank Travis Broughton, Charlie Conklin, Jin S. Choi, Brian F. Dennis,
|
||||
Patrick May, Bill Sommerfeld, Michael Sperber, Steven L. Tamm, Ed Tobin, and
|
||||
others for bug reports, bug fixes, and comments that were incorporated into
|
||||
this release. We really appreciate their help, particularly in the task of
|
||||
porting scsh to new platforms.
|
||||
|
||||
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 scsh team. Go forth and write
|
||||
elegant systems programs.
|
||||
-Olin Shivers & Brian Carlstrom
|
||||
Cambridge & Sunnyvale
|
||||
Cambridge
|
||||
31 October, 1995
|
||||
|
|
Loading…
Reference in New Issue