Change Log of SR Implementations

This file lists some of the more important changes made between successive
versions of SR.

0.9.1	 8-Oct-87
	new writes(), speedups, more

0.9.2	23-Oct-87
	var/const syntax, /*comments*/, hex and octal constants

0.9.3	 4-Nov-87
	reorder srl arguments, added new() and free() functions

0.9.3b	12-Nov-87
	add doc/report, new version of srm, new srtex program

0.9.3c	 4-Dec-87
	new flush() function

0.9.3d	14-Dec-87
	fix problem with array constants

0.9.3e	17-Dec-87
	fix global enums

0.9.4a	28-Dec-87
	major mods toward dynamic virtual machines
	also srl cleanup, minor bug fixes, misc cleanup

0.9.5 	 8-Jan-88
	dynamic virtual machines are partially working
	externals (nee Cops) are mostly working
	both still need documentation, vsuite tests, more code work

0.9.6	28-Jan-88
	finished externals (sans "any")
	extend mods from Ron
	coding style cleanup
	no more copy-in of "res" parameters
	made runtime I/O errors fatal
	revised report, new appendix 3 (2/2)

0.9.7	 25-Feb-88
	finished implementation of virtual machines
	changed back to old, faster context switch method (using new code)
	implemented nonblocking input (Note: burns CPU)
	no return values from flush(),close(),write(),writes(),put(),putline()
	agetc() removed
	input position after a read() format error is no longer reset
	revised installation documentation to explain the srmap file

0.9.7a	 26-Feb-88
	don't burn the CPU during I/O waits
	execute main routine's finalization code

0.9.8	 3-Mar-88
	getline & putline removed
	read(s) reads a whole line
	numargs() no longer counts argv[0]
	open(pathname,mode) returns fp
	revised SR report

0.9.8a	 7-Mar-88	**** BETA TEST RELEASE ****
	check_sp() in timer interrupts
	re-call sprintf if endangered by timer
	some lint cleanup
	revised installation & porting documentation

0.9.9	21-Mar-88
	fix core dumps from "write(int)" and similar constructs
	fix intermittent "misdelivered mail" aborts of multi-machine programs
	fix rare, intermittent "stack overflow" on slower vaxes
	also some other fixes

	Cleanup of read(v) where v is bool or int:  now detects more int format
	errors, and consumes trailing whitespace through the first newline.


1.0.0	23-Mar-88	**** FIRST OFFICIAL RELEASE ****
	fix "connect: system call interrupted" abort of multi-machine progs.

1.0.1	17-May-88
	sr:  fix invisibility of imported enumeration constants.
	sr:  fix malfunction from bad format in cprintf call.
	sr:  generate proper static func decls in <res>.h; allows gcc backend.
	sr:  allow whitespace longer than lex's token limit.
	srl: accept "file.a" file name.
	srl: allow path in -o option.
	rts: ensure that all VM's terminate;  kill them if necessary.
	rts: diagnose vm death due to signal such as segmentation violation.
	rts: change default clock interval to 10ms for faster message passing.
	rts: fix spelling error in rts error message.
	srm: correctly skip string constants.
	srm: allow whitespace longer than lex's token limit.
	vsuite: fix vsuite to pass when back end compiler is gcc.

1.0.2	20-May-88
	sr:  use ANSI C approaches for tricky macros under #ifdef __STDC__.
	sr:  minor perturbation of nget() function (scan.l) to avoid gcc bug.
	sr:  correctly declare two reply_stmt functions as static.

1.0.3	20-Jun-88
	add nap() and age() builtin functions
	rename runtime externals to all begin with sr_, avoiding user confusion
	numerous minor aesthetic improvements (formatting, name changes, etc.)
	some source code reorganization
	rts: pass SRXDEBUG flags to remote virtual machines
	rts: make just one connection between any two VMs; fixes hangs, aborts
	rts: temporary trace code (but disabled) in socket.c
	sr:  properly put in classes any ops brought in via "extend"

1.0.3a	21-Jun-88
	sr:  fix declarations in srgen.h for new sr_ names
	rts: fix bug in new code for connecting VMs

1.0.4	11-Oct-88
	sr: add P, V, sem keywords
	sr,srl: use "resource.b" files instead of communal "Bodies" file
	rts: fix nap() wrong if SRCLOCK set
	rts: remove temp trace code from socket.c
	srm: new, smarter version
	srgrind: added to distribution
	vsuite: test srx CALLME function; new srm tests
	vsuite: added "dining philosophers" example

1.0.5	28-Oct-88
	sr: add missing cast to ensure int conversion of char is always positive
	sr: allow "sem a,b,c" and "op a,b,c:typename"
	sr: allow "op x(...), y(...), z(...)", and similarly for externals
	sr: allow "ptr any" with semantics similar to "void *" of ANSI C
	sr: fix "ptr ptr int" and some other pointer problems
	sr: make -d give USEFUL output;  -D gives old voluminous stuff
	sr,srx: allow write() of pointer
	srx: fix bug to allow parallel creation of virtual machines
	vsuite: added "mbrot" example & "ptr any" test, enhanced other ptr tests

1.0.5a	December 12, 1988
	srl: remove "re-srl"
	sr: parenthesize divisors to avoid generating /* combination
	sr: fix string copy generation when R side size unknown

1.0.6	February 24, 1989
	sr: provide pointer arithmetic a la C
	sr: diagnose call to builtin, or any flavor send, inside co statement
	srl: add -r option to specify alternate runtime library
	rts: give a count in the "processes blocked" termination message
	rts: change sr_invk_proc to sr_invoke
	srm: allow overwrite of previous Makefile if empty; fix fill2 bug
	srtex: fix return code

1.0.6a	February 27, 1989
	sr: allow incr/decr of pointers

1.0.7	March 21, 1989
	support HP 9000s800 (Spectrum) and 9000s300 (Bobcat) running HP-UX
	remove use of alloca() in favor of explicit allocation / deallocation
	sr: new compiler debugging code
	sr: diagnose illegal send or builtin call inside co statement
	rts: rewrite nap & I/O code to block instead of poll

1.0.8	March 23, 1989
	sr: allow "else" on input statement
	sr: allow "st" to introduce synch expression ("and" is still OK too)
	sr: allow quantifier on process, e.g. process p(i:=1 to 3)
	sr: allow send inside co statement; fix co invoke of null
	sr: generate better code for input statements
	sr: clean up patching of intermediate code
	sr: clean up several areas involving semaphores
	rts: use tail pointers for invocation and process lists
	rts: abort on reply from final
	srvi: set sgid bit when making a new directory

1.0.8a	March 30, 1989
	change assembler interface slightly
	add Decstation 3100 support
	minor bug fixes here & there

1.0.8b	April 18, 1989
	fix return inside else, etc.

1.0.8c  May 25, 1989
	add revised HP Spectrum code for new interface
	add "timeslicing" (actually loop counting) to force context switches

1.0.9	June 2, 1989	****** BETA TEST VERSION *****
	change 'x' to be a character literal instead of a string literal
	tighten up typechecking re strings, predefs, scalars
	fix obscure iop bug

1.0.9a	July 18, 1989 
	add "srl -L" to control max loop iterations between context switches
	fix uses of NULL in non-pointer context
	correct pointer types in bind() and connect() calls
	remove unnecessary context switch
	fix quantifier bug
	change method of checking circularities in imports
	fix srtex usage message
	rename sun.s to m68k.s because it's also used for the NeXT
	diagnose failure to select an architecture when building machine.s

1.1.0	July 24, 1989	****** SECOND OFFICIAL RELEASE *****
	add Sun4 support
	clean up a few lint problems
	tidy up the documentation
