$Id: README,v 1.22 94/06/24 15:50:34 budd Exp $

Second Beta release of ``The Macro Implementation of SNOBOL4''
	(aka "BTL SNOBOL4", MAINBOL) for Un*x.

This is a port of the original SIL (SNOBOL4 Implementation Language)
"macro" version of SNOBOL4 with the `C' language as a target.

SNOBOL4, while known promarily as a string language excells at any
task involving symbolic manipulations.  It provides run time typing,
garbage collection, user data types, on the fly compilation.  It's
primary weakness is it's simple syntax, and lack of "structured
programming" constructs.  However I consider the spareness of SNOBOL4
syntax a strength when compared to some "modern" agglomerations such
as perl.

****************************************************************

This material is in the public domain.  You may use and copy this
material freely. This privilege extends to modifications, although any
modified version of this system given to a third party should clearly
identify your modifications as well as the original source.

The responsibility for the use of this material resides entirely with
you.  We make no warranty of any kind concerning this material, nor do
we make any claim as to the suitability of SNOBOL4 for any
application.

****************************************************************

Documentation;

For a good SNOBOL4 tutorial look in the Catspaw "vanilla snobol"
distribution.

doc/snobol4.1
	man page for snobol4 (uses (ANY('nt') 'roff') -man macros)
	only describes changes from the "green book".

doc/snobol4.0
	nroff (text) output of snobol4.1

doc/ports.doc
	status of ports to various systems.

doc/porting.doc
	information on porting to a new system,
	in particular the usage of Makefile variable
	which can be set in a config.m4 file.

doc/goals.doc
	a description of the overall goals,
	and the goals for this release.

TODO
	my identified tasks / wish list.

TODO.soon
	my top priority tasks (hopefully small in any release)

See the Catspaw vanilla.arc or vanilla.tar for a DOS/PC port of
	SNOBOL4, many demo programs, SNOBOL4 language documentation,
	and ordering information for books & products from Catspaw!

Status;
	All features on SNOBOL4 are implemented,
		arithmetic exceptions are not caught.

	May run slowly;
		genc.sno itself runs "only" 6x slower than under
		Catspaw SPARC (Macro) SPITBOL.  This is a respectable
		ratio for the two implementations!

		However programs which make extensive use of matching
		may run much slower (up to 20x slower than SPITBOL).

		The pattern scanner and some pattern matching routines
		get split up into many small, mutually recusrsive
		routines!! gcc inlining may resolve this.

I/O;
	named files can be opened by supplying an optional fourth
		argument to INPUT() and OUTPUT(), like in Catspaw SNOBOL4.
	If the first character is '|' the remainder of the string
		will be treated as a shell command.
	by default;
		INPUT is attached to unit 5, and standard input.
		OUTPUT is attached to unit 6, and standard output.
		PUNCH is attached to unit 7, and standard error!!!

Command line args;

	see man page

Acknowledgments;

	First and foremost, I would like to thank Ralph Griswold, for
	all his invaluable help and time digging up old documentation!
	(as well as his work of 30 years ago, designing and
	implementing the language)!

	I would also never have suceeded without Mark Emmer of
	Catspaw's help as well as his excellent SPARC SPITBOL
	product!!

The following have also provided help, encouragement, support, input,
historical background, testing, etc (in chronological order);

	Bill Henneman
	Andrew Koenig
	Doug McIlroy
	Robert Dewar
	Alan Martin
	Jerry Leichter
	Scott Marovich
	Jonathan Chandross
	Randolph J. Herber
	Jules Gilbert
	Phillip Lee Thomas
	Martin. D. Waller
	Burkhard Meissner
	John McHugh
	Chrystopher Nehaniv
	Arne Larsson

To build;

Select a config file (see doc/ports.doc) from the config directory,
and link to config.m4.

		If you cannot find a config file for your system, try
		"posix.m4", and if that fails (ie; sysconfig() is not
		available), try "generic.m4" (but beware -- timings may
		not be correct)!!

	ln -s config/sunos4.m4 config.m4
	make

The tar does not contain any binaries; THEY SHOULD NOT BE NEEDED
(unless you touch the source files) As all generated files are
provided.  The generated files are NOT system dependant!!!

Changes from "beta1" distribution;
	Now have man page (describes all extensions)!!!
	Tested on more systems (FreeBSD, IBM, LINUX, SGI, VMS).
	GCC inlining features used to advantage.
		Source code ordered for better inlining.
		SNOBOL4 compile phase may run 4x faster than beta1.
		Some programs may execute 1.5x faster.
	Now using m4 to create Makefile2. Too many problems with cpp.
	Many more example configs.  Use "include" to eliminate commonality.
	Implemented include files (-INCLUDE or -COPY) per SPITBOL.
	Implemented case folding (&CASE and -CASE) per SPITBOL.
	Implemented pipe opens (if filename starts with '|').
	Input no longer space padded, &TRIM no longer on by default.
	Default input line size now 1024 (was 80).
	Compiler input line size now 124 (was 72).
	NUL's no longer translated to space on output.
	Kit includes "isnobol4.c" re-ordered for better inlining results.
	8-bit clean; &ALPHABET is 256 bytes long.
	Comments and control lines now legal after ';'
	Turned off stack underflow checking (should improve performance).
	"Poor-Man's LOAD" -- support for linked in external functions.
	Small "snolib.a" library of loadable functions.
	Small library of S(P)ITBOL compatibility functions in snolib/*.sno
	Upper and lower case letters available as keywords &LCASE/&UCASE.
	Even more characters accepted as start-of-line comment chars.
	Generated code for boolean is cleaner.
	Should build cleanly on AIX, Irix.
	Resolved problems for build on VMS (using gcc only)
		see lib/vms for library routines.  no BUILD.COM supplied yet.
	Cleaned up rebus (still supplied seperately).

If you make any changes/fixes/improvements, or port it to a new
system, please send them to me (please include "timing.out" and tell
me the system type, CPU clock speed, C compiler & version)!!

If you are interested in getting mailings about new releases, send me
mail.  I'm interested in knowing what people are using SNOBOL4 for!

Phil Budne <phil@cs.bu.edu>
