

01-01-25  --- Release ksh93k+  ---
01-01-25  allow arithmetic expressions with float%int and treat them
	  as ((int)float)%int rather than as an error. 
01-01-19  read -n1 was not working and has been fixed.
01-01-17  ksh now handes the case in which a here document in command
	  substitution $() is terminated by the trailing ).  Previously,
	  a new-line was needed at the end of the delimiter word. 
01-01-02  A bug in which a KEYBD trap would cause a multi-line token
	  to be processed incorrectly has been fixed.
00-12-10  Arithmetic integer constants can now have L and U suffices. 
00-12-10  A bug in the processing of arithmetic expressions with compound
	  variables when the -n option is on has been fixed.
00-12-08  A bug in M-f and M-b from emacs mode has been fixed.  This
	  bug only occurs when ksh93 is compiled without MULTIBYTE enabled.
00-11-29  A bug in which jobs -p would yield 0 for background
	  jobs run in a script has been fixed.
00-11-21  A bug in integer arrays in which the number of elements is
	  incorrect when the ++ operator is applied to a non-existing
	  element has been fixed.  For example, integer x; ((x[3]++)).
00-11-20  A timing bug in which the shell could reset the terminal
	  group to the wrong value in the case that the a new process
	  changes the terminal group during startup has been fixed.

00-10-27  --- Release ksh93k  ---
00-10-27  Using tab for completion now works only when applied
	  after a non-blank character at the end of the current line.
	  In other case a tab is inserted.
00-10-27  A bug in the emacs edit mode for ^X^E has been fixed.
	  The ^X^E sequence is supposed to invoke the full editor
	  on the current command.
00-10-18  A bug in which expansions of the form ${var//pattern/string}
	  did not work correctly when pattern was '/' or "/" has
	  been fixed.
00-10-18  The output format for indexed arrays in compound variables
	  has been modified so that it can be used as input.
00-10-18  Assignments with name references (typeset -n) will no
	  implicitly unreference an existing name reference.
00-10-17  A bug the += append operator when a single array element
	  is appended to a variable that is not an array has been fixed.
00-10-16  A bug in which the SIGCONT signal was being sent to
	  each process will kill -0 or kill -n 0 has been fixed.
00-10-12  The arithmetic evaluation portion has been rewritten to
	  perform a number of optimizations.
00-10-10  A bug in which name prefix matching ${!name.*} was not
	  checking name to see if it was a name reference has been fixed.
00-09-26  A bug in the multibyte version in which the width of for
	  non-printing characters was not correct has been fixed.
00-09-12  Made changes to get multibyte editing work on UWIN for windows
00-09-12  A bug in which multibyte characters would be displayed incorrectly
	  has been fixed.
00-08-08  Removed build dependency on iswprint() and iswalph().
00-07-20  In some cases the read builtin would read more than a single
	  line from a pipe on standard input and therefore leave the seek
	  position in the wrong location.
00-07-05  If the directory / is on the path, a / will not be inserted
	  between the directory and the file name during path searching
	  to avoid searching // for systems that treat this specially.
00-06-26  A bug in which on rare occasions wait could return before all
	  jobs have completed has been fixed.
00-06-21  A bug in which backspace did not work correctly during the
	  R replace directive in vi-mode has been fixed.
00-06-12  Added variable name completion/expansion/listing  to the set of
	  completions.  Variable name completions begin with $ or "$ followed
	  by a letter. 
00-05-09  --- Release ksh93j  ---
00-05-09  Modified command substitution to avoid using /tmp files when
          run on read-only file systems. 
00-04-17  Modified printf to handle '%..Xc' and '%..Xs' options where X
	  is not an alpha character.  Previous versions core dumped with this.
00-04-10  Changes to multibyte editing code were made to use standard
	  ISO C functions rather than methods devised before the standard.
00-04-09  Add %H options to printf to output strings with <"'&\t> properly
	  converted for use in HTML and XML documents.
00-04-07  Modified getopts builtin to handle \f...\f in usage string
	  by invoking specified function.
00-04-04  Added self generating man pages for bg, fc, fg, disown, jobs,
	  hist, let, ., and ulimit.
00-03-30  The append operator += has been added and can be used
	  for all assignments, strings, arrays, and compound variables.
00-03-30  Code was modified in several places to support automatic
	  generation of C locale dictionaries.
00-03-28  A bug in which the set and trap commands invoked with --name
	  type arguments would terminate the invoking script  has
	  been fixed.
00-03-27  A bug in which the library path variable was not updated  
	  correctly on some systems as described in the 'g' point
	  release has been fixed. 
00-03-07  printf now returns a non-zero exit status when one of
          its arguments cannot be converted to the given type. 
00-03-05  The return value and error message for a command that
          was found on the path but was not executable was set
          incorrectly.
00-03-05  A prototype for ioctl() was removed from the vi edit mode.

00-01-28  --- Release ksh93i  ---
00-01-28  Most of the built-in commands and ksh itself are now
          self documenting.  Running command --man will produce
          screen output.  Running command --html produces the
          man page in html format.
00-01-28  The getopts builtin can process command description
          strings to produce man pages.
00-01-28  A bug in which a script could terminate when getopts
          encountered an error when invoked inside a function
          has been fixed.
00-01-28  When a symbolic link was specified as the name of
          the script to invoke by name, the value of $0 was
          set to the real file name rather than the link name
          in some cases and this has been fixed.
00-01-28  A bug in which the precision given as an argument
	  to printf was not working has been fixed.

99-03-31  --- Release ksh93h  ---
99-03-31  The PATH search algorithm has been modified to look
	  for a file named .fpath in each bin directory and if
	  found, to search for functions in this directory if
	  it cannot find the command in that directory.
99-03-31  When performing pathname expansion, the shell checks
	  to see whether each directory it reads is case sensitive
	  or not, and performs the matching accordingly.
99-03-31  The %T format for printing formatted date/time.
99-03-31  The emacs and vi modes now handle arrow keys when
          they use standard ANSI escape sequences.
99-03-31  The TAB key can be used for completion in emacs and viraw mode.
99-03-31  A bug in setting .sh.editchar during the KEYBD trap
	  for the MULTIBYTE option was fixed in release ksh93h.
99-03-31  A bug in shcomp for compilation of unary operators with [[...]]
	  has been fixed.
99-03-31  A bug in which the value of $? was changed when executing
	  a keyboard trap has been fixed. 
99-03-31  The handling of SIGCHLD has been changed so that the
	  trap is not triggered while executing trap commands
	  to avoid recursive trap calls.
99-03-31  A bug in which a local variable in a function declared readonly
	  would generated an error when the function went out of
	  scope has been fixed.
99-03-31  A bug in which \<new_line> entered from the keyboard
	  with the KEYBD trap enabled has been fixed.
99-03-31  The error message for a misplaced ((, for example print ((3),
	  was often garbled and has been fixed.
99-03-31  A bug in the KEYBD trap in which escape sequences of the form
	  <ESC>[#~ were not being handled as a unit has been fixed.
99-03-31  A bug in which ksh would consider expressions like [[ (a) ]]
	  as syntax errors has been fixed.
99-03-31  A function defined as foo() without a function body
	  was not reported as a syntax error.
99-03-31  A bug in which ksh could run out of file descriptors when
	  a stream was repeatedly opened with exec and read from
	  has been fixed.

98-04-30  --- Release ksh93g  ---
98-04-30  The pipefail option has been added.  With pipefail
	  enabled, a pipeline will not complete until all
	  commands are complete, and the return value will
	  be that of the last command to fail, or zero if
	  all complete successfully.
98-04-30  The name-value pair library uses the cdt library rather
	  than the hash library.  This change should be transparent
	  to applications.
98-04-30  On the U/WIN version for Window 95 and Windows NT,
          when a directory beginning with a letter followed by
          a colon is given to cd, it is assumed to be an absolute
          directory
98-04-30  When an executable is found on a given path,
	  the appropriate library path variable is prepended
	  with a corresponding library directory.
98-04-30  A bug in which a name reference could be created to
	  itself and later cause the shell to get into an infinite
	  loop has been fixed.
98-04-30  A bug in shcomp relating to compound variables was fixed.
98-04-30  A bug introduced in ksh93e in which leading 0's in -Z
	  fields caused the value to be treated as octal for arithmetic
	  evaluation has been fixed.
98-04-30  A bug when a name reference with a shorter name than
          the variable it references was the subject of a compound
	  assignment has been fixed. 
98-04-30  A bug which in which assignment to array variables in
	  a subshell could effect the parent shell has been
	  fixed.
98-04-30  read name?prompt was putting a 0 byte at the end of the
	  prompt on standard error.
98-04-30  A bug in [[ string1 > string2 ]] when ksh was run with -x
	  has been fixed.
98-04-30  A bug in which the escape character was not processed
	  correctly inside {...} when brace expansion is enabled
	  has been fixed, for example {\$foo}.
98-04-30  A bug in line continuation in here-documents has been
	  fixed.
98-04-30  The default base when not specified with typeset -i is
	  10 in accordance with the documentation.  Previously,
	  the value was determined by the first assignment.   
98-04-30  A parsing bug in which a # preceded alphanumeric
	  characters inside a command substitution caused
	  a syntax error to be reported has been fixed.
98-04-30  A bug in which a decimal constant represented as 10#ddd
	  where ddd was more than five digits generated a syntax
	  error has been fixed.
98-04-30  A bug in here document expansion in which ${...} expansions
	  were split across buffer boundaries has been fixed.
98-04-30  The sh_fun() function now takes third argument which
	  is an argument list for the invoked discipline function
	  or built-in.
98-04-30  A callback function can be installed which will give
          notification of file duplications and file closes.
98-04-30  When ksh is compiled on systems that do not use fork()
	  current option settings where not propagated to sub-shells.

97-06-30  --- Release ksh93f  ---
97-06-30  Hostnames in addition to host addresses can be given in
	  /dev/tcp/host/port virtual file names.
97-06-30  File name completion and expansion now quotes special
	  characters in file names from both emacs and vi edit modes.
97-06-30  An empty for list behave like a for list with null expansions.
	  It produces a warning message with sh -n.
97-06-30  The code has been modified to work with EBCDIC as well as ASCII.
97-06-30  A bug which would cause the secondary prompt to be
	  displayed when a user entered a literal carriage
	  return has been fixed.
97-06-30  A bug which caused ksh read -s name to core dump was
	  fixed.
97-06-30  A bug with the expansion of \} and \] inside double
	  quoted strings that also contained variable expansions
	  has been fixed
97-06-30  Changes in the ksh93e point release caused autoload
	  functions invoked from within command substitution
	  to fail.  This has been fixed.
97-06-30  A bug in the processing of here-documents that could
	  prevent variable substitution to occur after $(...) command
	  substitution for long here documents has been fixed.
97-06-30  A bug caused by a race condition that could cause SIGTERM
	  to be ignored by a child process has been fixed.
97-06-30  A bug which prevented the startup of a coprocess immediately
	  after killing a running coprocess has been fixed.
97-06-30  ulimit foobar, where foobar is not an arithmetic
	  expression, now gives an error message as it did with ksh88
	  instead of setting the file size limit to 0.
97-06-30  A bug which could cause an interactive shell to terminate when
	  the last process of a pipeline was a POSIX function was fixed.
97-06-30  A bug which could cause command substitution of a shell script
	  to core dump has been fixed.
97-06-30  A security hole was fixed in suid_exec.
97-06-30  Arithmetic functions such as pow() that take more than
	  one argument, did not work if arguments other than the
	  first contained parenthesized sub-expression.
97-06-30  The error message from a script containing an incomplete
	  arithmetic expression has been corrected.
97-06-30  A bug which caused a core dump on some machines when
	  the value of a name reference contained a positional
	  parameter and the name reference was not defined inside
	  a function has been fixed.
97-06-30  Arithmetic expressions now correctly handle hexidecimal
	  constants.
97-06-30  A bug in which integer variables could be expanded
	  with a leading 10# when declared with typeset -i
	  multiple times has been corrected.
97-06-30  A bug in which IFS wasn't correctly restored when
	  set within command substitution has been fixed.
97-06-30  The _ character is now considered as part of a word
	  with the M-f and M-b emacs directives as it was in ksh88.
97-06-30  A bug in brace pattern expansions that caused expressions
          such as {foo\,bar,bam} to expand incorrectly have been fixed.


96-07-31  --- Release ksh93e  ---
96-07-31  The math functions, atan2, hypot, fmod, and pow were added.
96-07-31  When a shared library is loaded, if the function lib_init()
	  is defined in the library, it is invoked the first time that
	  the library is loaded with builtin -f library.
96-07-31  The k-shell information abstraction database option, KIA,
          has been revamped.
96-07-31  Empty command substitutions of the form $() now work.
	  whence -v foo now gives the correct result after calling
	  builtin -d foo. 
96-07-31  A bug in right to left arithmetic assignment for which
	  the arithmetic expression (( y = x = 1.5 )) did not
	  yield 1 for y when x was declared typeset -i was fixed.
96-07-31  printf has been fixed to handle format  containing \0
	  and/or \0145 correctly.  In addition, characters following
	  %b in the format string are no longer displayed when
	  the operand contains \c.
96-07-31  A bug in printf that could cause the %E format to
	  produce unnormalized results has been fixed.
96-07-31  A bug which causes some arithmetic expressions to be
	  incorrectly evaluated as integer expressions rather
	  that floating point has been fixed.
96-07-31  Functions defined inside a subshell no longer remain
	  defined when the subshell completes.
96-07-31  The error message from sh -c ';echo foo' has been
	  corrected.
96-07-31  The format for umask -S has been changed to agree
	  with the specification in the POSIX standard.
96-07-31  A bug that caused side effects in subscript evaluation
	  when tracing was enabled for subscripts using ++ or --
	  has been fixed.
96-07-31  To conform to the Posix standard getopts has been changed
	  so that the option char is set to ? when it returns with
	  a non-zero exit status.
96-07-31  The handling of \} inside ${name...} has been fixed so
	  that the \ quotes the }.
96-07-31  A bug that caused the read builtin to resume execution
	  after processing a trap has been fixed.
96-07-31  [[ -s file ]] has been fixed so that if file is open
	  by ksh, it is flushed first.
96-07-31  In some cases attributes and sizes for non exported
	  variables weren't being reset before running a script.
96-07-31  The value of TMOUT was affected by changes make to
	  it in a subshell.
96-07-31  The jobs command did not reflect changes make by
	  sending the CONT signal to a command.
96-07-31  The error message for ksh -o unknown was incorrect.
96-07-31  Functions invoked as name=value name, did not use
	  values from the calling scope when evaluating value.
96-07-31  A bug in which the shell would reexecute previously
	  executed code when a shell script or coprocess was
	  run in the background has been fixed.
96-07-31  A bug in which an empty here-document would leave
	  a file descriptor open has been fixed.
96-07-31  A bug in which $(set -A array ...) would leave a
	  side effect has been fixed.
96-07-31  A discipline function for a global variable defined
	  within a function defined with the function keyword,
	  incorrectly created a local variable of the same name
	  and applied the discipline to it.

95-08-28  --- Release ksh93d  ---
95-08-28  The \ character was not handled correctly in replacement
	  patterns with ${x/pattern/replace}.
95-08-28  A bug with read in which the line did not end with
	  a new-line has been fixed.
95-08-28  A bug in file name generation which sometimes
	  appended a . for filenames that ended in / has
	  been fixed.
95-08-28  If a process is waited for after a status has
	  been returned by a previous wait, wait now
	  returns 127.
95-08-28  A bug with hist (fc) -e which prevented a command
	  to re-executed after it had been edited has been fixed.
95-08-28  A bug which prevented quoting from removing the meaning
	  of unary test operators has been fixed.
95-08-28  A bug with typeahead and KEYBOARD traps with the
          MULTIBYTE option set has been fixed.
95-08-28  Builtin functions can take a third argument which is
          a void*.
95-08-28  The nv_scan() function can restrict the scope of a walk
          to the top scope.

95-04-31  --- Release ksh93c  ---
95-04-31  The expansion of "$@" was incorrect when $1 was the null
	  string.
95-04-31  A bug which could incorrectly report a syntax error in
	  a backquoted expression when a $ was preceded by \\
	  has been fixed.
95-04-31  A bug which prevented the shell from exiting after
	  reporting an error when failing to open a script
	  has been fixed.
95-04-31  A bug that could lead to memory corruption when a
	  large here document that required parameter or command
	  substitution was expanded has been fixed.
95-04-31  A bug that could cause a core dump on some systems
	  after ksh detected an error when reading a function
	  has been fixed.
95-04-31  A bug which could cause a coprocess to hang when
	  reading from a process that has terminated has been fixed.
95-04-31  A bug which caused a script to terminate when set -e
	  was on and the first command of and && or || list
	  failed has been fixed.
95-04-31  A bug with here documents inside $(...) when the delimiter
	  word is an identifier has been fixed.
95-04-31  A bug which caused $0 to display the wrong value when
	  a script was invoked as an argument to the . command
	  and the eval command has been fixed.
95-04-31  A bug that could cause the built-in sleep to hang
	  has been fixed.
95-04-31  A bug introduces in 12/28/93b which caused the backslash
	  to be removed when it was followed by digit inside double
	  quotes in some instances has been fixed.
95-04-31  A bug which could cause a core dump if ksh was invoked with
	  standard input closed has been fixed.
95-04-31  A bug which could cause a core dump if typeset -A was
	  specified for an existing variable has been fixed.
95-04-31  Variables that were unset but had attributes such as readonly
	  and export were not listed with readonly, export and typeset.
95-04-31  Several problems with signals have been fixed.
95-04-31  A bug which prevented ulimit -t from working has been fixed. 
	  Also, a bug in which failed ulimits could cause a core dump
	  has also been fixed.
95-04-31  A bug in expansion of the form ${name/#pattern/string} and
	  ${name/%pattern/string} has been fixed.
95-04-31  A bug which caused read -r on a line that contained only
	  blanks to get a non-null value has been fixed.
95-04-31  A bug introduced in the 'a' point release in which
	  ${x='\\'} expanded to \ when x was unset has been fixed.
95-04-31  A bug which prevented a trap on EXIT from being executed
	  when the last command in a script was a function invocation
	  has been fixed.
95-04-31  A bug which caused an interactive shell ignore input when
	  standard error was redirected to a file with exec,
	  and then restored with exec 2>&1 has been fixed.
95-04-31  An interactive shell turns on monitor mode even when
	  standard error has been redirected to a file.
95-04-31  A bug which could cause standard input to be incorrectly
	  positioned for the last command of a script has been fixed.
95-04-31  A bug in the edit modes which allowed walking back in
	  the history file for more than HISTSIZE commands has
	  beed fixed.
95-04-31  A bug which could cause a core dump if variable TMPDIR was
	  changed between two command substitutions has been fixed.
95-04-31. A bug which prevented a trap on EXIT from being cleared
	  has been fixed.
95-04-31  A bug fixed for the v directive in vi MULTIBYTE has been
          fixed.
95-04-31  Code to for IFS handling of multibyte characters has
          been added.
95-04-31  The displaying of multibyte strings in export, readonly,
          typeset, and execution traces has been fixed.
95-04-31  Variables inside functions are now statically scoped.
	  The previous behavior was never documented.
95-04-31  Variables inside functions are now statically scoped.
          The previous behavior was never documented.
95-04-31  A few changes have been made to the name-value library
          that affect built-ins that use disciplines.  The
          changes allow disciplines to be shared by variables
          and should make it possible to add new disciplines
          without recompilation.
95-04-31  The name-value library interface has undergone significant
          change for this revision.  See the new nval.3 man page.

94-12-31  --- Release ksh93b  ---
94-12-31  Variables inside functions are now statically scoped.
          The previous behavior was never documented.
94-12-31  If IFS contains two consecutive identical characters belonging
	  to the [:space:] class, then this character is treated as
	  a non-space delimiter so that each instance will delimit
	  a field.  For example, IFS=$'\t\t' will cause two consecutive
	  tabs to delimit a null field.
94-12-31  The getopts command has a -a name option that specifies a
	  name that will be used for usage messages.
94-12-31  A bug which caused unset RANDOM to dump core has been
	  fixed.
94-12-31  A bug which prevented return for terminating a profile
	  or ENV file has been fixed.
94-12-31  A bug which prevented standard input from being
	  directed to /dev/null for background jobs when
	  monitor mode was turned off has been fixed.
94-12-31  Statements of the form typeset -options var[expr]=value
	  did not perform substitutions on expr as expected.
94-12-31  A bug which prevented the shell from sending a HUP
	  signal to some background jobs that were not disowned
	  has been fixed.
94-12-31  A bug which allowed a script to trap signals that are
	  ignored at the time that the shell was invoked by exec
	  has been fixed.
94-12-31  A bug which could cause a core dump when a discipline
	  function was unset within a discipline was fixed.
94-12-31  The typeset builtin now accepts a first argument of
	  + or - for compatibility with ksh88.
94-12-31  For compatibility with ksh88, the results of expansions
	  of command arguments will treat the extended character
	  match characters ()|& as ordinary characters.
94-12-31  A bug which caused read to fail on a file that was
	  open for read/write with <> when the first operation
	  was print or printf has been fixed.
94-12-31  When a job is suspended, it is put on the top of
	  the job list as required by the POSIX standard.
94-12-31  The value of OPTARG when an option that required
	  an argument but didn't have one was incorrect in the
	  case the the option string began with a :.
94-12-31  A bug which caused the terminal to get into a bad
	  state with some KEYBD traps in vi-mode has been fixed.
94-12-31  A bug which caused an invalid trap to cause a script
	  to terminate, rather than just return an error, has
	  been fixed.
94-12-31  Backreferencing sub-expressions in patterns and replacement
	  strings now works.
94-12-31  A bug in chmod which caused the -R option to fail has
	  been fixed.
94-12-31  More signal names have been added for Solaris

94-06-30  --- Release ksh93a  ---
94-06-30  An expansion bug which causes portions of a word after
	  a $((...)) expansion that contains a nested $var expansion
	  to be lost has been fixed.
94-06-30  A bug that caused a core dump when a script that did not
	  have PWD set and did a cd inside command substitution
	  has been fixed.
94-06-30  A bug which caused a core dump on some machines when
	  the LANG variable was assigned to has been fixed.
94-06-30  A bug which incorrectly handled set disciplines that
	  performed arithmetic evaluation when the discipline
	  was called from the arithmetic evaluator has been fixed.
94-06-30  A bug caused by an EXIT trap inside a function that
	  was executed in a subshell was fixed.
94-06-30  If foo is a function, and not a program, then command foo
	  now reports that foo isn't found rather than invoking foo.
94-06-30  The previous version incorrectly listed -A as an
	  invocation option.  The -A option is only for set. 
94-06-30  A bug was fixed which caused ksh to loop when execution trace
	  was enabled and the PS4 prompt required command substitution.
94-06-30  A bug which could cause the job control switch character
	  to be disabled when a script that enabled monitor mode
	  terminated was fixed.
94-06-30  A bug in the macro expansion global replacement operator //,
	  when the pattern began with a [ or +( has been fixed.
94-06-30  A bug which prevented ~ expansion from occurring when
	  it was terminated with a colon inside an assignment
	  has been fixed.
94-06-30  A bug in the dot command which prevented autoload functions
	  from working has been fixed.
94-06-30  A bug which caused a variable to be unset if the
	  its value were expanded inside a set discipline has
	  been fixed.
94-06-30  Whence -a now longer reports that a defined function
	  is undefined.
94-06-30  A bug on some systems in which $0 would be incorrect
	  in scripts invoked by name has been fixed.
94-06-30  Here documents with an empty body now work.
94-06-30  A bug which disabled argument passing and resetting
	  of options for a script invoked by name inside a
	  function has been fixed.
94-06-30  A bug in which an EXIT trap set the caller of a function
	  would be executed if a command called inside a function
	  was not found has been fixed.
94-06-30  A bug which allowed a script to trap signals that are
	  ignored at the time that the shell was invoked has
	  been fixed.
94-06-30  A bug which caused 2<&1- when applied to a shell built-in
	  to leave standard input closed has been fixed.
94-06-30  A bug which caused the shell to incorrectly parse
	  $() command substitutions with nested case statements
	  has been fixed.

