193 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
| Scsh is two
 | |
| ===========
 | |
| 
 | |
| Scheme shell version 0.1 was released to the Net exactly two years ago
 | |
| today, Halloween 1994. We are pleased to release scsh version 0.4.3 to
 | |
| mark scsh's second birthday. 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.4. To read this document with emacs outline
 | |
| mode, say M-x outline-mode.
 | |
| 
 | |
| * What is scsh
 | |
| ==============
 | |
| Scsh is a broad-spectrum systems-programming environment for Unix embedded
 | |
| in R4RS Scheme. 
 | |
| 
 | |
| ** 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.
 | |
| 
 | |
| ** Scsh as a systems-programming language
 | |
| -----------------------------------------
 | |
| Scsh additionally provides the low-level access to the operating system
 | |
| normally associated with C. With the exception of signal handlers, 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, 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-swiss.ai.mit.edu/pub/su/scsh/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,
 | |
|     CXUX,
 | |
|     FreeBSD,
 | |
|     HP-UX,
 | |
|     IRIX,
 | |
|     Linux,
 | |
|     NetBSD,
 | |
|     NeXTSTEP,
 | |
|     Solaris,
 | |
|     SunOS,
 | |
|     Ultrix
 | |
| 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-swiss.ai.mit.edu/pub/su/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-swiss.ai.mit.edu/pub/su/scsh/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
 | |
|     ./scshvm -o ./scshvm -i ./scsh/scsh.image
 | |
| 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@martigny.ai.mit.edu
 | |
| and the netnews group 
 | |
|     comp.lang.scheme.scsh
 | |
| These two forums are exactly equivalent, being bi-directionally gatewayed 
 | |
| at MIT.
 | |
| 
 | |
| Bugs can be reported to
 | |
|     scsh-bugs@martigny.ai.mit.edu
 | |
| 
 | |
| If you do not receive the alt netnews hierarchy, or wish to join the mailing
 | |
| list for other reasons, send mail to
 | |
|     scsh-request@martigny.ai.mit.edu
 | |
| 
 | |
| 
 | |
| * The World-Wide What?
 | |
| ======================
 | |
| 
 | |
| We even have one of those URL things: 
 | |
|     http://www-swiss.ai.mit.edu/scsh/
 | |
| 
 | |
| 
 | |
| * New in this release
 | |
| =====================
 | |
| 
 | |
| ** Signal handlers
 | |
|   We finally have signal handlers; with this Scsh now has all of Posix.
 | |
| 
 | |
| ** Static heap linker
 | |
|   The static heap linker converts a Scheme 48 bytecode image as
 | |
|   embodied in a .image file to a C representation. This C
 | |
|   code is then compiled and linked in with a virtual machine. One
 | |
|   pleasant side effect of this is reduced startup times. 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
 | |
|     Scheme bindings for isatty(), ttyname(), ctermid(), and fcntl().
 | |
| 
 | |
| ** Regular expression compilation
 | |
|     - MAKE-REGEXP now actually does something useful.
 | |
|     - AWK has been modified to use it, precompiling all of its
 | |
|       patterns outside the main loop.
 | |
|     - Unfortunately, things are still pretty slow. We'll work on it.
 | |
| 
 | |
| ** New meta-arg second-line syntax
 | |
|     Simpler grammar.
 | |
| 
 | |
| ** New -s<fdes> command line switch
 | |
|     Scripts can be read from stdin or other open file descriptors.
 | |
| 
 | |
| ** Etc.
 | |
|   Solaris 2 on i386 support, AIX 4 support, HP-UX now uses dld for
 | |
|   faster loading, a few small networking bug fixs, better error
 | |
|   reporting, bug fixes, more efficient handling of closing unrevealed
 | |
|   file descriptors at exec() with CLOEXEC, ...
 | |
| 
 | |
| 
 | |
| * Thanks
 | |
| ========
 | |
| 
 | |
| We would like to thank Michael Becker, Glenn Barry, Travis Broughton,
 | |
| Robert E. Brown, Charlie Conklin, Franklin Chen, Jin S. Choi, Douglas
 | |
| S. J. De Couto, Brian F. Dennis, Sean Doran, Kevin Esler, Lutz Euler,
 | |
| Lewis Girod, Rolf-Thomas Happe, David Hull, Steven L. Jenkins, Patrick
 | |
| May, Jay Nietling, Tod Olson, Michel Schinz, Cotton Seed, Bill
 | |
| Sommerfeld, Michael Sperber, Steven L. Tamm, Ed Tobin, Victor Zandy,
 | |
| and others for bug reports, bug fixes, and comments that were
 | |
| incorporated into this release. We really appreciate their help,
 | |
| particularly in the task of porting scsh to new platforms.
 | |
| 
 | |
| We'd like to thank everyone else for their patience; this release seemed like
 | |
| a long time coming.
 | |
| 
 | |
| Brought to you by the Scheme Underground scsh team. Go forth and write
 | |
| elegant systems programs.
 | |
|     -Olin Shivers & Brian Carlstrom
 | |
|      Cambridge
 | |
|      31 October, 1996
 |