453 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			453 lines
		
	
	
		
			16 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| Scsh 0.6.6 Release notes					-*- outline -*-
 | ||
| 
 | ||
| We are pleased to release scsh version 0.6.6. The main focus of this
 | ||
| release is support for the upcoming packaging proposal and the removal
 | ||
| of any code which did not conform to scsh's BSD-style license. In
 | ||
| addition, some bugs 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.6.  (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
 | ||
|  Argument processing more robust
 | ||
|  Bug fixes
 | ||
| New in 0.6.5
 | ||
| New in 0.6.4
 | ||
| New in 0.6.3
 | ||
| New in 0.6.2
 | ||
| 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 
 | ||
| syof 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
 | ||
|     GNU Hurd
 | ||
| 
 | ||
| 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
 | ||
| =====================
 | ||
| 
 | ||
| ** Argument processing more robust
 | ||
|    Any number of whitespaces may now occur between the arguments to
 | ||
|    the VM
 | ||
| 
 | ||
| ** Bug fixes
 | ||
|    FIELD-READER returns (values EOF '()) on an empty port
 | ||
|    Fixed STRING-CONTAINS from SRFI-13
 | ||
| 
 | ||
| * New in 0.6.5
 | ||
| ==============
 | ||
| 
 | ||
| ** New platform: GNU Hurd
 | ||
|    Andreas V<>gele ported scsh to GNU Hurd.
 | ||
| 
 | ||
| ** ./configure option to set default scsh library directories 
 | ||
|    The ./configure script now accepts the option --with-lib-dirs-list
 | ||
|    to specify a list of default scsh library directories. In
 | ||
|    previous versions of scsh this list was hardwired to
 | ||
|    /usr/local/lib/scsh/modules.
 | ||
| 
 | ||
| ** Support for DESTDIR for easier packaging
 | ||
|    The install target of the Makefile now respects the environment
 | ||
|    variable DESTDIR to allow package maintainers to use a staging
 | ||
|    directory.
 | ||
| 
 | ||
| ** New SRFI
 | ||
|    This release adds support for SRFI 42.
 | ||
| 
 | ||
| ** Switch to load exec scripts from library path
 | ||
|    The new switch -lel searches the library path for a file and loads
 | ||
|    the file into the exec package.
 | ||
| 
 | ||
| ** Removed scheme/infix/
 | ||
|    The directory scheme/infix/ had a non-free copyright licence and
 | ||
|    has been removed.
 | ||
| 
 | ||
| ** Bug fixes
 | ||
|    - SEEK currently works on unbuffered ports only. Check this in the
 | ||
|      implementation and oopsify it in the manual.
 | ||
|    - Adjust documentation of some low-level regexp procedures
 | ||
|    - Removed message argument form errno-error
 | ||
|    - After fork/pipe, make the ports returned by the pipe the
 | ||
|    current-in/output-ports
 | ||
|    - Get the names of MAKE-STRING-PORT-FILTER and
 | ||
|    MAKE-CHAR-PORT-FILTER right in the doc
 | ||
|    - Fixed memory leak in scheme_cwd
 | ||
|    - Fixed memory leak in format_date
 | ||
|    - Avoid calling SOCKET-OPTION twice in case of an error
 | ||
|    - Fix for (rx (|)) by Peter Wang
 | ||
|    - Fix for (posix-string->regexp "$") by Peter Wang
 | ||
|    
 | ||
| ** API changes
 | ||
|    None known.
 | ||
| 
 | ||
| * New in 0.6.4
 | ||
| ==============
 | ||
| 
 | ||
| ** Switches to load exec scripts
 | ||
|    The new switch -le loads a file into the exec package, the new
 | ||
|    switch -de loads the "-s" script into the exec package.
 | ||
| 
 | ||
| ** New SRFIs
 | ||
|    This release adds support for SRFI 25, 26, 27, 28 and 30.
 | ||
| 
 | ||
| ** Bug fixes
 | ||
|    - Other select bug
 | ||
|    - Timeout for select is in seconds, not milliseconds
 | ||
|    - Load package md5 before dumping scsh.image
 | ||
|    - Revised implementation of SRFI-19
 | ||
|    - -sfd switch called bogus procedures
 | ||
|    - Ooopsify write-string/partial   
 | ||
|    - Clean up get_groups
 | ||
|    - Check for "." in file-name-{sans-}extension
 | ||
|    - Bug fix for let-match: variables may be #f
 | ||
|    - Fix some problems with WAIT-FOR-CHANNELS
 | ||
|    - Fixes in the time zone code
 | ||
|    - Fix a bug in SEND-MESSAGE: There is such a thing as an empty datagram
 | ||
|    - Renamed string-filter to make-string-port-filter and char-filter to
 | ||
|      make-char-port-filter
 | ||
| 
 | ||
| ** API changes
 | ||
|    pause-until-interrupt has been removed because it is not compatible
 | ||
|    with the thread system
 | ||
| 
 | ||
| * New in 0.6.3
 | ||
| ==============
 | ||
| 
 | ||
| ** Shorter startup times
 | ||
|    By a couple of small fixes we could diminish the startup
 | ||
|    time by 10-30%.
 | ||
| 
 | ||
| ** stripped-scsh.image
 | ||
|    In addition to the standard heap image scsh.image, scsh now ships
 | ||
|    with an additional image stripped-scsh.image. This image contains
 | ||
|    the same code as the standard image but has almost all debugging
 | ||
|    information removed. It is therefore much smaller (2.5 MB vs. 4.5
 | ||
|    MB) which also allows shorter startup times. The image is intended
 | ||
|    for use in scripts but not for interactive development. See the
 | ||
|    manual for more information.
 | ||
| 
 | ||
| ** MD5 support
 | ||
|    The package md5 contains a bunch of procedures to compute MD5
 | ||
|    checksums.
 | ||
| 
 | ||
| ** New SRFIs
 | ||
|    This release adds support for SRFI 25, 26, 27, 28 and 30.
 | ||
| 
 | ||
| ** API changes
 | ||
|    select and select! are supported again.
 | ||
|    Note however, that we recommend to use the new select-ports and
 | ||
|    select-port-channels procedures instead whenever possible.
 | ||
|    New interface to the uname function.
 | ||
|    New direct interface to the directory stream operations
 | ||
|    New structure scheme-with-scsh which combines the exports of the
 | ||
|      modules scsh and scheme, avoiding duplicates
 | ||
|    New procdures to work directly on file-info records
 | ||
|    The repl procedure has been removed
 | ||
|    New procedures connect-socket-no-wait, connect-socket-successful?
 | ||
|    Add lookup-external from recent S48
 | ||
| 
 | ||
| ** Bugfixes
 | ||
|    LET-MATCH, IF-MATCH, and COND-MATCH now behave according to the
 | ||
|    documentation.
 | ||
|    Many bug fixes for the SRE system, specifically for dynamic
 | ||
|    submatches.
 | ||
|    PORT->SOCKET uses dups both ports of the socket
 | ||
|    Added missing process resource alignments
 | ||
|    No reaping for stopped children
 | ||
|    Initialize t.c_lflag before reading it.
 | ||
|    Fix to allow single character here strings.
 | ||
|    Add a whole bunch of S48_GC_PROTECT against s48_extract_integer.
 | ||
|    Added MAP, FOR-EACH, MEMBER, ASSOC to SRFI 1 interface
 | ||
|    Fixed a subtle bug in the macro for the << redirection
 | ||
|    Use "compare" und "rename" to compare symbols in lots of macros
 | ||
|    Fixed the close method for string-input-ports
 | ||
|    ... and many others.
 | ||
| 
 | ||
| * New in 0.6.2
 | ||
| ==============
 | ||
| 
 | ||
| ** 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
 | ||
| 
 |