313 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			313 lines
		
	
	
		
			11 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
Scsh 0.6.2 Release notes					-*- outline -*-
 | 
						|
 | 
						|
We are pleased to release scsh version 0.6.2.  This release
 | 
						|
incorporates many SRFIs into scsh. The enhanced module language of the
 | 
						|
recent Scheme 48 releases is now also part of scsh. In addition most
 | 
						|
of the known bugs of the previous version have been fixed.
 | 
						|
 | 
						|
 | 
						|
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.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).)
 | 
						|
 | 
						|
* 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
 | 
						|
  SRFIs
 | 
						|
  port->socket
 | 
						|
  New forms in the module language
 | 
						|
  API changes
 | 
						|
  PDF version of the manual
 | 
						|
  Bugfixes
 | 
						|
New in 0.6.1
 | 
						|
New in 0.6.0
 | 
						|
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
 | 
						|
    OpenBSD
 | 
						|
    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 manage the project using SourceForge:
 | 
						|
    http://sourceforge.net/projects/scsh/
 | 
						|
 | 
						|
* New in this release
 | 
						|
=====================
 | 
						|
 | 
						|
** SRFIs
 | 
						|
   In addition to SRFIs 1, 8, 13, 14 and 23 scsh now features SRFIs 2,
 | 
						|
   5, 6, 7, 9, 11, 16, 17 and 19. See http://srfi.schemers.org/ for a
 | 
						|
   detailed description. The SRFIs are available in packages srfi-N
 | 
						|
   where N is the number of the SRFI.
 | 
						|
 | 
						|
** port->socket
 | 
						|
   New procedure port->socket to turn a port into a socket object was
 | 
						|
   added to the network code.
 | 
						|
 | 
						|
** New forms in the module language
 | 
						|
   The module language supports the new forms modify, subset and
 | 
						|
   with-prefix from Scheme 48 version 0.57.
 | 
						|
 | 
						|
** API changes
 | 
						|
   Fork, fork/pipe, fork/pipe+ take an optional argument
 | 
						|
   continue-threads? to determine whether all threads should continue
 | 
						|
   to run in the child.
 | 
						|
 | 
						|
   exec-path-list is now a preseved thread fluid
 | 
						|
 | 
						|
** PDF version of the manual
 | 
						|
   There is now a PDF version of the manual generated by pdflatex.
 | 
						|
 | 
						|
** Bugfixes
 | 
						|
   - Added default argument to tty-info as described in the manual
 | 
						|
   - Conversion to s48_value in tty1.c
 | 
						|
   - Fixed another hygiene problem in SRE
 | 
						|
   - Plugged space leak in bind-listen-accept-loop
 | 
						|
   - Aligned CWD and umask in various file operations
 | 
						|
   - Better releasing of port locks
 | 
						|
   - Corrected exception of time
 | 
						|
   - Set-cloexec to #t for unrevealed ports.
 | 
						|
   - Included scsh paper in the distribution.
 | 
						|
   - Fixed accept for AF_UNIX
 | 
						|
   - (setenv var #f) now deletes var from environment
 | 
						|
   - Quoted { and } within literal strings of regexps
 | 
						|
 | 
						|
* New in 0.6.1
 | 
						|
==============
 | 
						|
 | 
						|
** API changes
 | 
						|
  For sre's, BOW, EOW, WORD, and WORD+ (which were already unsupported
 | 
						|
  in 0.6.0 on most platforms) are gone for good.
 | 
						|
 | 
						|
** Bugfixes
 | 
						|
  Most of the known bugs of version 0.6.0 have been fixed, many thanks for
 | 
						|
  the precise reports! See the project page on SourceForge for a list
 | 
						|
  of the remaining known bugs. Here is a brief overview of the fixes:
 | 
						|
 | 
						|
  - GC_PROTECT'ed the necessary variables (specifically, where >1 arg to
 | 
						|
    a function 'may GC') (Thanks to Steven Jenkins for dealing with this)
 | 
						|
  - Fixed various race conditons in the signal handling and process reaping code
 | 
						|
  - Fixed bug in set-process-group
 | 
						|
  - If $HOME is unset, consult (user-info (user-uid)) for the value of 
 | 
						|
    home-directory
 | 
						|
  - Fix external-call-from-callback problem leading to spurious
 | 
						|
        gc-protection-mismatch exceptions.
 | 
						|
  - Let s48-do-gc return 0 so the PreScheme compiler will emit the correct
 | 
						|
        signature of the function.
 | 
						|
  - scsh/linux/tty-consts.scm: num-ttychars seems to be 32 not 19.
 | 
						|
  - scsh/top.scm: Return 0 exit status for -c and -e.
 | 
						|
  - *.c: Replaced // comments.
 | 
						|
  - scsh/syslog1.c: Remove LOG_LPR from list of syslog levels.
 | 
						|
  - scsh/network1.c: Pass SYSCALL argument to ERRNO-ERROR.
 | 
						|
  - scsh/syscalls1.c: Disable timer interrupts before execve
 | 
						|
  - scsh/network.scm: Correct name extraction in bind-socket
 | 
						|
  - Added export for with-error-output-port
 | 
						|
  - Install HTML version of manual under $(libdir)
 | 
						|
  - ./configure is more rebost wrt $(srcdir)
 | 
						|
  - Fixed installation of the S48 manual
 | 
						|
  - Replaced several /tmp by /var/tmp 
 | 
						|
  - Catch EISDIR in delete-filesys-object
 | 
						|
  - flush-all-ports is now non-blocking
 | 
						|
 | 
						|
* New in 0.6.0
 | 
						|
==============
 | 
						|
 | 
						|
** 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
 | 
						|
 | 
						|
* 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.
 | 
						|
 | 
						|
	
 | 
						|
Brought to you by the Scheme Underground. Go forth and write elegant systems
 | 
						|
programs.
 | 
						|
    -Olin Shivers, Brian Carlstrom, Martin Gasbichler & Mike Sperber
 | 
						|
 |