261 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			261 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
Scsh 0.6.0 Release notes					-*- outline -*-
 | 
						||
 | 
						||
We are pleased to release scsh version 0.6.0.  The new release is
 | 
						||
based on a newer version of Scheme 48 than the previous releases. The
 | 
						||
update of the underlying system is a massive switch and provides many
 | 
						||
new features, most notably a sophisticated thread system. We tried to
 | 
						||
make as less changes as possible to the API, see Section "API changes"
 | 
						||
for details. Unfortunately, due to the number of changes that were
 | 
						||
necessary to the internal structures, this release will probably
 | 
						||
contain some bugs. Don't hesitate to report bugs, we rely on your feedback!
 | 
						||
 | 
						||
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.6.0.  (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 based on Scheme 48 0.53  
 | 
						||
  Interface to dot-locking, crypt and syslog
 | 
						||
  API changes
 | 
						||
  Bugfixes
 | 
						||
Thanks
 | 
						||
 | 
						||
 | 
						||
* What is scsh
 | 
						||
==============
 | 
						||
Scsh is a broad-spectrum systems-programming environment for Unix embedded
 | 
						||
in R5RS 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.scsh.net/pub/scsh/papers/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.scsh.net/pub/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.scsh.net/pub/scsh/0.6/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
 | 
						||
    ./go
 | 
						||
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 should be equivalent, being bi-directionally gatewayed 
 | 
						||
at MIT, but due to technical problems it's better to read them both.
 | 
						||
 | 
						||
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.scsh.net
 | 
						||
We now manage the project using SourceForge:
 | 
						||
    http://sourceforge.net/projects/scsh/
 | 
						||
 | 
						||
* New in this release
 | 
						||
====================
 | 
						||
 | 
						||
** Scsh is now based on Scheme 48 0.53  
 | 
						||
  With the move from Scheme 48 version 0.36 to version 0.53 in this
 | 
						||
  release the underlying system received a massive update. The most
 | 
						||
  significant changes include:
 | 
						||
    User level threads
 | 
						||
    Advanced garbage collector
 | 
						||
    Improved foreign function interface to C
 | 
						||
 | 
						||
  The most significant change for Scsh users is the addition of a
 | 
						||
  user-level thread system. Scsh provides various features to deal
 | 
						||
  with this new power in a system programming environment: An event
 | 
						||
  based interface to interrupts, thread local process state and
 | 
						||
  thread-safe system calls.
 | 
						||
 | 
						||
** A manual for Scheme 48 has been included
 | 
						||
  Richard Kelsey, the author of Scheme 48, has graciously allowed us
 | 
						||
  to retrofit the current Scheme 48 manual for inclusion in this scsh
 | 
						||
  release.
 | 
						||
 | 
						||
** Interfaces to dot-locking, crypt and syslog
 | 
						||
  Scsh now provides advisory file locking via the dot-locking scheme
 | 
						||
  and a direct binding to the crypt function. Furthermore we added
 | 
						||
  a complete, system-independent and thread-safe interface to syslog.
 | 
						||
 | 
						||
** API changes
 | 
						||
  Some features of the previous releases are currently not
 | 
						||
  supported as we did not have the time to implement them. Please tell
 | 
						||
  us, if you can't get along without them. Here is a listing of these
 | 
						||
  currently dereleased features:
 | 
						||
    select
 | 
						||
    select!
 | 
						||
    ODBC support
 | 
						||
    bufpol/line
 | 
						||
 | 
						||
  The following procedures received new names in this release:
 | 
						||
    sleep (now process-sleep)
 | 
						||
    sleep-until (now process-sleep-until)
 | 
						||
 | 
						||
  network-info, service-info and protocol-info now return #f on non-success.
 | 
						||
 | 
						||
  The default directory for creating temporary files has changed: It's
 | 
						||
  now the value of $TMPDIR if set and /var/tmp otherwise.
 | 
						||
 | 
						||
  The nth procedure is still there but is now officially obsolete.  It
 | 
						||
  will go away in a future release.
 | 
						||
 | 
						||
** HTML version of the manual
 | 
						||
  There is now a HTML version of the scsh manual generated by tex2page
 | 
						||
 | 
						||
** Bugfixes
 | 
						||
  Most of the known bugs of version 0.5.3 have been fixed. See the
 | 
						||
  project page on SourceForge for a list of the remaining known bugs.
 | 
						||
 | 
						||
 | 
						||
* 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
 | 
						||
    Andreas Bernauer
 | 
						||
    Reini Urban
 | 
						||
    Peter Biber
 | 
						||
    Roland Weiss
 | 
						||
    Richard G<>nther
 | 
						||
    Dirk Staneker
 | 
						||
 | 
						||
	
 | 
						||
We'd like to thank everyone else for their patience; we are sorry that
 | 
						||
it took more than two years from the start of the port to this release.
 | 
						||
 | 
						||
Brought to you by the Scheme Underground. Go forth and write elegant systems
 | 
						||
programs.
 | 
						||
    -Olin Shivers, Brian Carlstrom, Martin Gasbichler & Mike Sperber
 | 
						||
 |