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:
parent
cd47ff6c12
commit
a46c405889
166
RELEASE
166
RELEASE
|
@ -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.
|
||||||
|
|
||||||
|
There's a whole chapter on regexps in the new manual; it has full details.
|
||||||
|
|
||||||
** New meta-arg second-line syntax
|
The previous AWK and field-reader system is provided in a
|
||||||
Simpler grammar.
|
backwards-compatibility package. See package obsolete-awk-package
|
||||||
|
in scsh-package.scm.
|
||||||
|
|
||||||
** New -sfd <fdes> command line switch
|
** New libraries
|
||||||
Scripts can be read from stdin or other open file descriptors.
|
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.
|
||||||
|
|
||||||
** Starting up programs with the "-e <entry-point>" command-line
|
These libraries make basic list and string hacking very straightforward.
|
||||||
switch and with the (DUMP-SCSH-PROGRAM <file-name> <entry-point>)
|
|
||||||
are now equivalent in that both pass a list of command-line arguments
|
|
||||||
that includes the program name. The two start-up methods were not
|
|
||||||
the same in the previous release. NOTE: THIS IS A BACKWARDS-INCOMPATIBLE
|
|
||||||
CHANGE IN DUMP-SCSH-PROGRAM FROM THE PREVIOUS RELEASE.
|
|
||||||
|
|
||||||
** Etc.
|
** Renaming
|
||||||
Solaris 2 on i386 support, AIX 4 support, HP-UX now uses dld for
|
We are shifting from a reduce-foo convention to a more standard
|
||||||
faster loading, a few small networking bug fixs, better error
|
foo-fold convention. This has caused the following renamings:
|
||||||
reporting, bug fixes, more efficient handling of closing unrevealed
|
reduce-char-set => char-set-fold
|
||||||
file descriptors at exec() with CLOEXEC, ...
|
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
|
||||||
|
|
|
@ -629,10 +629,10 @@ 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}
|
||||||
|
|
||||||
\begin{code}
|
\begin{code}
|
||||||
;;; Print every line longer than 80 chars.
|
;;; Print every line longer than 80 chars.
|
||||||
|
|
|
@ -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.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue