RELEASE -- prepared release notes for 0.5.2

ccp-pack.scm added to lib
*.tex "foldl" -> "fold" fixup
What's with list-lib?
This commit is contained in:
shivers 1999-09-17 01:29:02 +00:00
parent cd47ff6c12
commit a46c405889
3 changed files with 120 additions and 62 deletions

166
RELEASE
View File

@ -1,10 +1,19 @@
We are pleased to release scsh version 0.5.2 to celebrate Independence Day. Scsh 0.5.2 Release notes -*- outline -*-
The new release has many bug fixes, improvements and new features.
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.
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. To read this document with emacs outline
mode, say M-x outline-mode.
* What is scsh * What is scsh
============== ==============
@ -32,13 +41,18 @@ Scsh isn't Scheme-like; it is Scheme.
At the scripting level, scsh also has an Awk design, also implemented At the scripting level, scsh also has an Awk design, also implemented
as a macro that can be embedded inside general Scheme code. 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 as a systems-programming language
----------------------------------------- -----------------------------------------
Scsh additionally provides the low-level access to the operating system Scsh additionally provides the low-level access to the operating system
normally associated with C. The current release provides full access to Posix, normally associated with C. The current release provides full access to Posix,
plus important non-Posix extensions, such as complete sockets plus important non-Posix extensions, such as complete sockets support.
support. "Complete Posix" means: fork, exec & wait, sockets, full read, write, "Complete Posix" means: fork, exec & wait, sockets, full read, write, open &
open & close, seek & tell, complete file-system access, including stat, close, seek & tell, complete file-system access, including stat,
chmod/chgrp/chown, symlink, FIFO & directory access, tty & pty support, file chmod/chgrp/chown, symlink, FIFO & directory access, tty & pty support, file
locking, pipes, select, file-name pattern-matching, time & date, environment locking, pipes, select, file-name pattern-matching, time & date, environment
variables, signal handlers, and more. variables, signal handlers, and more.
@ -76,6 +90,7 @@ Unix platforms. We currently have scsh implementations for
Solaris, Solaris,
SunOS, SunOS,
Ultrix Ultrix
[Brian- can you edit this list]
Scsh code should run without change across these systems. Scsh code should run without change across these systems.
Porting to new platforms is usually not difficult. Porting to new platforms is usually not difficult.
@ -124,73 +139,116 @@ list for other reasons, send mail to
* The World-Wide What? * The World-Wide What?
====================== ======================
We even have one of those URL things: We even have one of those URL things:
http://www-swiss.ai.mit.edu/scsh/ http://www-swiss.ai.mit.edu/scsh/
* New in this release * 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.
** Signal handlers Take all the code you like; we'll just write more.
We finally have signal handlers. Go wild.
** Static heap linker ** CVS repository now public-readable
The static heap linker converts a Scheme 48 bytecode image as Here's what you do:
embodied in a .image file to a C representation. This C CVS_RSH=ssh
code is then compiled and linked in with a virtual machine. One cvs -d kowloon-bay.ai.mit.edu:/projects/express/scsh-cvs checkout scsh
pleasant side effect of this is reduced startup times and heap sizes.
Another good thing is that immutable parts of the image can be shared
between processes. see the script scsh/static.scm
** Last few bits of Posix ** New char-sets and char-set operations
Scheme bindings for isatty(), ttyname(), ctermid(), and fcntl(). 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.
** Regular expression compilation ** New regular expression system
- MAKE-REGEXP now actually does something useful. There's a whole, new regexp package in scsh. There's a new,
- AWK has been modified to use it, precompiling all of its s-expression-based notation for regexps, called SRE's. The new
patterns outside the main loop. notation has been integrated into the AWK macro and field-parser functions.
- Unfortunately, things are still pretty slow. We'll work on it. The older Posix notation is still supported for backwards compatibility.
** New meta-arg second-line syntax There's a whole chapter on regexps in the new manual; it has full details.
Simpler grammar.
** New -sfd <fdes> command line switch The previous AWK and field-reader system is provided in a
Scripts can be read from stdin or other open file descriptors. backwards-compatibility package. See package obsolete-awk-package
in scsh-package.scm.
** Starting up programs with the "-e <entry-point>" command-line ** New libraries
switch and with the (DUMP-SCSH-PROGRAM <file-name> <entry-point>) The SRFI-1 list library is available, in the list-lib package.
are now equivalent in that both pass a list of command-line arguments There is a large, powerful string-processing library available
that includes the program name. The two start-up methods were not in the string-lib package. See the directory scsh/scsh/lib/ for
the same in the previous release. NOTE: THIS IS A BACKWARDS-INCOMPATIBLE documentation and source.
CHANGE IN DUMP-SCSH-PROGRAM FROM THE PREVIOUS RELEASE.
** Etc. These libraries make basic list and string hacking very straightforward.
Solaris 2 on i386 support, AIX 4 support, HP-UX now uses dld for
faster loading, a few small networking bug fixs, better error ** Renaming
reporting, bug fixes, more efficient handling of closing unrevealed We are shifting from a reduce-foo convention to a more standard
file descriptors at exec() with CLOEXEC, ... 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 * Thanks
======== ========
We would like to thank Michael Becker, Glenn Barry, Travis Broughton, We would like to thank the members of local-resistance cells for the
Robert E. Brown, Charlie Conklin, Franklin Chen, Jin S. Choi, Douglas Underground everywhere for bug reports, bug fixes, design review and comments
S. J. De Couto, Brian F. Dennis, Sean Doran, Kevin Esler, Lutz Euler, that were incorporated into this release. We really appreciate their help,
Lewis Girod, Dan Hagerty, Rolf-Thomas Happe, David Hull, Steven L. particularly in the task of porting scsh to new platforms.
Jenkins, Patrick May, Richard Kelsey, Jay Nietling, Tod Olson, Stephen
Pascoe, Jonathan Rees, Michel Schinz, Cotton Seed, Bill Sommerfeld, [Brian- will you add your set of names to this list?]
Michael Sperber, Steven L. Tamm, Ed Tobin, Victor Zandy, and others Alan Bawden,
for bug reports, bug fixes, and comments that were incorporated into Jim Blandy,
this release. We really appreciate their help, particularly in the Per Bothner,
task of porting scsh to new platforms. Tom Breton,
Christopher Browne,
Ray Dillinger,
Allyn Dimock,
Scott Draves,
Lutz Euler,
Jeremy Fitzhardinge,
Noah Friedman,
Martin Gasbichler,
Andy Gaynor,
Ian Grant,
Eric Hanchrow,
Karl Hegbloom,
Ian Horswill & the Northwestern Scheme wizards
Graham Hughes,
Lars Kellogg-Stedman,
Andre Koehoerst,
Shriram Krishnamurthi,
Jakob Lichtenberg,
Eric Marsden,
Willliam Pippin,
David Rush,
Michael Schinz,
Manuel Serrano,
Mark Shirley
Bill Somerfeld,
Mike Sperber,
Harvey J. Stein,
Pawel Turnau,
We'd like to thank everyone else for their patience; this release seemed like We'd like to thank everyone else for their patience; this release seemed like
a long time coming. a long time coming.
Brought to you by the Scheme Underground scsh team. Go forth and write Brought to you by the Scheme Underground. Go forth and write elegant systems
elegant systems programs. programs.
-Olin Shivers & Brian Carlstrom -Olin Shivers & Brian Carlstrom
Cambridge Cambridge
14 June 1997 29 September 1999

View File

@ -629,8 +629,8 @@ of input stream.
(#t (max max-len (string-length line))))\end{code} (#t (max max-len (string-length line))))\end{code}
\begin{code} \begin{code}
;;; (This could also be done with PORT-FOLDL:) ;;; (This could also be done with PORT-FOLD:)
(port-foldl (current-input-port) read-line (port-fold (current-input-port) read-line
(lambda (line maxlen) (max (string-length line) maxlen)) (lambda (line maxlen) (max (string-length line) maxlen))
0)\end{code} 0)\end{code}

View File

@ -324,12 +324,12 @@ run/sexp* $\equiv$ read $\circ$ run/port*
run/sexps* $\equiv$ port->sexp-list $\circ$ run/port*\end{code} run/sexps* $\equiv$ port->sexp-list $\circ$ run/port*\end{code}
\end{desc} \end{desc}
\defun{port-foldl}{port reader op . seeds} {\object\star} \defun{port-fold}{port reader op . seeds} {\object\star}
\begin{desc} \begin{desc}
This procedure can be used to perform a variety of iterative operations This procedure can be used to perform a variety of iterative operations
over an input stream. over an input stream.
It repeatedly uses \var{reader} to read an object from \var{port}. It repeatedly uses \var{reader} to read an object from \var{port}.
If the first read returns eof, then the entire \ex{port-foldl} If the first read returns eof, then the entire \ex{port-fold}
operation returns the seeds as multiple values. operation returns the seeds as multiple values.
If the first read operation returns some other value $v$, then If the first read operation returns some other value $v$, then
\var{op} is applied to $v$ and the seeds: \var{op} is applied to $v$ and the seeds:
@ -340,9 +340,9 @@ reading a new value from the port, and so forth.
For example, \ex{(port->list \var{reader} \var{port})} For example, \ex{(port->list \var{reader} \var{port})}
could be defined as could be defined as
\codex{(reverse (port-foldl \var{port} \var{reader} cons '()))} \codex{(reverse (port-fold \var{port} \var{reader} cons '()))}
An imperative way to look at \ex{port-foldl} is to say that it An imperative way to look at \ex{port-fold} is to say that it
abstracts the idea of a loop over a stream of values read from abstracts the idea of a loop over a stream of values read from
some port, where the seed values express the loop state. some port, where the seed values express the loop state.