#sccs	"@(#)ksh/doc:RELEASE	1.1"

This is a list of changes that have been made since the June 29th
version of ksh.  Several enhancements have been added. Certain
seldomly used features and some redundant features have been removed.
The rest are bug fixes.  Some of the code has been reorganized and
the in-line editing and history code has been put into a separate
library so that other programs can use it.  The code for BSD style
job control for S5R2 systems with the SXT driver has been included but
type-ahead does not work with it so it is not recommend that it be
used unless the driver is modified.  The default compilation
excludes this code.

1.	The PS1 parameter is now expanded for parameter substitution before
	printing it.

2.	The substring built-in has been removed.  The # and % operators
	of parameter substitution should be used instead.  Two new
	operators, ## and %% are added to parameter substituion to delete
	the largest matching substring on the left and right.  For
	compatability, a substring function has been included. 

3.	There is a new option, markdirs, which when enabled with set -o
	causes any generated file names which are names of directories,
	to have a / added to the end.

4.	The R, X, S, t and T options have been added to the vi edit mode.
	The <ESC>_ command in the vi has been modified to allow a number
	which is the word number of the previous command.  Deleted text
	is now remembered from command to command.  The * command of emacs
	and vi will not add a trailing * if there are file name generation
	characters already in the word.

5.	A test -L pathname has been added which returns true if pathname
	is a symbolic link.  On systems without symbolic lines, the
	result is always false.

6.	All readonly variables cannot be unset.  PWD is now readonly.

7.	The history file now puts a magic number in the beginning.  Old style
	ksh history files are recognized and read correctly, and esh
	history files are recognized and removed.  The history file is no longer
	limited to 32,000 bytes.

8.	All functions are now saved in the history file and can therefore be
	listed with the typeset -f built-in.  A built-in alias functions has
	been added whose value is 'typeset -f'.

9.	The code size has been reduced slightly make it easier to port to 16-bit
	machines.  The makefiles now automatically configure for PC/IX.
	There is a version of the stdio package that can be used with ksh
	to further reduce the code size.

10.	The shell no longer forks when invoked as 'sh -c simple-command'.  This
	should improve performance.

11.	Arrays can now contain up to 512 elements.  This is increased from
	128 in the previous version.

12.	A new option, -s, has been added to the set builtin to sort the
	positional parameters $*.

13.	The ignoreeof option can now be set for non-login shells.

14.	Traps can now be set by name as well as by number.  An action of -
	clears traps.  A new trap, ERR, can be set which gets invoked when
	a command has a non-zero exit value.

15.	If the value of an alias ends in white-space, then the word after
	the alias will also be checked for alias susbstitution.  A builtin
	alias nohup='nohup ' has been added.

16.	The IFS parameter is now used whenever a command argument requires
	command or parameter substituion or when processing a read.  This
	should improve compatibility with the Bourne shell.

17.	If the last argument of set is -- then $* is cleared and $# is set
	to zero.  Previously there was no way to clear an argument list.

18.	Errors with shell built-ins no longer cause the script to terminate
	they just cause the command to terminate with a non-zero exit code.
	
19.	Bugs fixed in all versions.
	a.	Here documents inside command substitution removed the
		/tmp file too soon and didn't work.  This  worked correctly
		in previous editions and has been fixed again.

	b.	The trap on 0 was not executed after functions aborted
		due to an interrupt.  This has been fixed so that the
		trap is always executed after a function completes.

	c.	A line of the form echo anything;kill $$ from within a
		script, caused the shell script to die before the output
		is flushed.  The buffer will always be flushed correctly.

	d.	A command substituion of the form `cd xxx` no longer has
		the side effect of changing the users working directory.
		Command substitution of most built-ins is performed in
		the current shell environment.

	e.	echo ${x[*]};echo ${x[9]};echo ${x[*]} produced a bad
		subscript error.  This has been fixed.

	f.	The rsh option now starts correctly and the ENV file now
		executes without restriction for a restricted shell.

	g.	Several corrections have been made to the manual page.

	h.	The ignoreeof option was fixed to work correctly with login
		shells that were invoked as -sh -c command.

	i.	Directories can no longer be executed as . scripts.

	j.	Whence -v with no arguments no produces an error message
		rather than referencing address zero.

	k.	The cd -  built-in no longer references address zero when
		the OLDPWD variable is not defined.

	l.	The shell variable $0 now correctly reports the name of the
		function within the scope of a function.

	m.	A bug in the shell which caused it to abort when very long
		lines in the history file were scanned while in an edit
		mode has been fixed.

	n.	If a while loop had standard input redirected and a built-in
		command re-directed standard input from within the command, then
		the standard input of the while loop got incorrectly positioned.
		This problem has been fixed.

	o.	A simple command entered as, < file command, now checks
		command to see if it is an alias.

	p.	The set -e option now exits if built-ins return non-zero
		exit codes.

	q.	Subscripted variables did not work correctly when used as
		subscripts.  Now, any valid arithmetic expression should work
		as a subscript.

	r.	Commands that fail in the vi edit mode now reset the repeat
		count.

	s.	A trap on exit no longer effects the exit value of a shell
		procedure.

	t.	The -t option of the shell will now cause commands of the form
		command1;command2 to terminate after command1.

	u.	The values of $0 and $* are now set correctly when executing
		sh -c 'command' args ...

	v.	Information about quoting was being discarded when evaluation
		command substitution so that the command echo `echo \$x` would
		print out the value of x rather than $x.  This has been fixed.
		This bug is also in the Bourne shell.

	w.	Comment lines ending in \ no longer cause line continuation

	x.	Processes started as process |& are now listed with the jobs
		command.

	y.	A built-in command or a null command with the same file
		descriptor redirected too many times ( >x >y >x ... ) caused
		the shell to run out of file descriptors and abort.  This has
		been fixed.

	z.	Here documents of the form cat <<!
		${x-"abc"}
		!
		left the 8th bin turned on for abc if x wasn't set.  This was
		also a bug in the Bourne shell.

	aa.	Whence produced the wrong result when a version of a program
		existed in your current directory and there was a tracked
		alias elsewhere.  It now works correctly.

20.	Bug fixes BSD only.

	a.	On BSD 4.2, a command substitution of the form x=`eval /bin/date`
		did not work correctly.

	b.	The ulimit command now correctly handles the -t option.  The
		previous version treated time as measured in milliseconds as
		was incorrectly described in the BSD 4.2 manual.

	c.	The cd built-in now keeps present working directory correctly
		when crossing symbolic link boundaries.

	d.	Buffering when standard input is a pipe did not work correctly
		because of an incorrect return value in lseek.  The problem
		has been worked around.

	e.	Added 4.2 BSD signals are now handled by the shell.
