From 3950ffe2a485479f6561c27364d3d7df5a21d124 Mon Sep 17 00:00:00 2001 From: Igor Pashev Date: Sun, 24 Jun 2012 22:28:35 +0000 Subject: Imported Upstream version 93u+ --- lib/package/ast-ksh.html | 5346 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 5346 insertions(+) create mode 100644 lib/package/ast-ksh.html (limited to 'lib/package/ast-ksh.html') diff --git a/lib/package/ast-ksh.html b/lib/package/ast-ksh.html new file mode 100644 index 0000000..4bcc35d --- /dev/null +++ b/lib/package/ast-ksh.html @@ -0,0 +1,5346 @@ + + + + + + + ast-ksh package + + + + + +
+ +

+

ast-ksh package

+The AT&T Software Technology ast-ksh package from AT&T Research +contains ksh and support libraries. This is the minimal set of +components needed to build ksh. +Components in this package: +

+

+ + + +
+ksh93    libast    libcmd    libcoshell    libdll    libsum
+

+This package is a superset of the following package: ksh; you won't need this if you download ast-ksh. +The software is covered by this license: +

+Individual components may be covered by separate licenses; +refer to the component source and/or binaries for more information. +

+A recent +release change log +is also included. +

+


ksh93

+KSH-93 is the most recent version of the KornShell Language +described in +"The KornShell Command and Programming Language," +by Morris Bolsky and David Korn of AT&T Bell Laboratories, ISBN 0-13-182700-6. +The KornShell is a shell programming language, +which is upward compatible with "sh" (the Bourne Shell), +and is intended to conform to the IEEE P1003.2/ISO 9945.2 Shell and +Utilities standard. +KSH-93 provides an enhanced programming environment in +addition to the major command-entry features of the BSD +shell "csh". With KSH-93, medium-sized programming tasks can be +performed at shell-level without a significant loss in performance. +In addition, "sh" scripts can be run on KSH-93 without modification. +

+The code should conform to the IEEE POSIX 1003.1 standard and to the +proposed ANSI-C standard so that it should be portable to all +such systems. Like the previous version, KSH-88, +it is designed to accept eight bit character sets +transparently, thereby making it internationally compatible. +It can support multi-byte characters sets with some characteristics +of the character set given at run time. +

+KSH-93 provides the following features, many of which were also inherent +in KSH-88: +

    +
  • +Enhanced Command Re-entry Capability: The KSH-93 history +function records commands entered at any shell level and stores +them, up to a user-specified limit, even after you log off. +This allows you to re-enter long commands with a few keystrokes +- even those commands you entered yesterday. +The history file allows for eight bit characters in +commands and supports essentially unlimited size histories. +
  • +In-line Editing: In "sh", the only way to fix mistyped +commands is to backspace or retype the line. KSH-93 allows you +to edit a command line using a choice of EMACS-TC or "vi" +functions. +You can use the in-line editors to complete filenames as +you type them. +You may also use this editing feature when entering +command lines from your history file. +A user can capture keystrokes and rebind keys to customize the +editing interface. +
  • +Extended I/O Capabilities: KSH-93 provides several I/O +capabilities not available in "sh", including the ability to: +
      +
    • +specify a file descriptor for input and output +
    • +start up and run co-processes +
    • +produce a prompt at the terminal before a read +
    • +easily format and interpret responses to a menu +
    • +echo lines exactly as output without escape processing +
    • +format output using printf formats. +
    • +read and echo lines ending in "\". +
    +
  • +Improved performance: KSH-93 executes many scripts faster +than the System V Bourne shell. A major reason for this is +that many of the standard utilities are built-in. +To reduce the time to initiate a command, KSH-93 allows +commands to be added as built-ins at run time +on systems that support dynamic loading such as System V Release 4. +
  • +Arithmetic: KSH-93 allows you to do integer arithmetic in any +base from two to sixty-four. You can also do double +precision floating point arithmetic. +Almost the complete set of C language operators are available +with the same syntax and precedence. +Arithmetic expressions can be used to as an argument expansion +or as a separate command. +In addition there is an arithmetic for command that works +like the for statement in C. +
  • +Arrays: KSH-93 supports both indexed and associative arrays. +The subscript for an indexed array is an arithmetic expression, +whereas, the subscript for an associative array is a string. +
  • +Shell Functions and Aliases: Two mechanisms - functions and +aliases - can be used to assign a user-selected identifier to +an existing command or shell script. +Functions allow local variables and provide scoping +for exception handling. +Functions can be searched for and loaded on first reference the +way scripts are. +
  • +Substring Capabilities: KSH-93 allows you to create a +substring of any given string either by specifying the starting +offset and length, or by stripping off leading +or trailing substrings during parameter substitution. +You can also specify attributes, such as upper and lower case, +field width, and justification to shell variables. +
  • +More pattern matching capabilities: KSH-93 allows you to specify +extended regular expressions for file and string matches. +
  • +KSH-93 uses a hierarchal name space for variables. +Compound variables can be defined and variables can +be passed by reference. In addition, each variable +can have one or more disciplines associated with +it to intercept assignments and references. +
  • +Improved debugging: KSH-93 can generate line numbers on execution +traces. Also, I/O redirections are now traced. +There is a DEBUG trap that gets evaluated before each command +so that errors can be localized. +
  • +Job Control: On systems that support job control, including +System V Release 4, KSH-93 +provides a job-control mechanism almost identical to that of +the BSD "csh", version 4.1. +This feature allows you +to stop and restart programs, and to move programs between the +foreground and the background. +
  • +Added security: +KSH-93 can execute scripts which do not have read permission +and scripts which have the setuid and/or setgid set when +invoked by name, rather than as an argument to the shell. +It is possible to log or control the execution of setuid and/or +setgid scripts. +The noclobber option prevents you from accidentally erasing +a file by redirecting to an existing file. +
  • +KSH-93 can be extended by adding built-in commands at run time. +In addition, KSH-93 can be used as a library that can +be embedded into an application to allow scripting. +
+Documentation for KSH-93 consists of an "Introduction to KSH-93", +"Compatibility with the Bourne Shell" and a manual page and a +README file. In addition, the "New KornShell Command and Programming +Language," book is available from Prentice Hall. + +

+


release change log

+
+
+All recorded changes follow.
+
+
+

+


ksh93 changes

+
+
+12-02-29  --- Release ksh93u+ ---
+12-02-29  A bug which could lead to a core dump when more that four shared
+	  libraries were added with the builtin command has been fixed.
+12-02-29  Fixed a few bugs which caused SIGCHLD to be blocked preventing
+	  background jobs from being reaped until a foreground job was run.
+12-02-27  A bug in which sh -c for a simple command caused a fork() has been
+	  fixed.
+12-02-27  A timing bug on systems such as AIX that doesn't support vfork()
+	  that could cause the exist status to get lost has been fixed.
+12-02-22  A private file descriptor that was not close-on-exec for a command
+	  substitution and has been fixed.
+12-02-14  A bug in which ^Z did not stop a pipeline when the last component
+	  was a shell built-in has been fixed.
+12-02-14  getconf("PATH") used to initialize ed(1) path.
+12-02-13 +In earlier version read from standard input would fail when called
+	  from the KEYBD trap.  Now read options -N, -n, and -t should work
+	  when called from a KEYBD trap.
+12-02-13  If FCEDIT is not set and fc is invoked without the -e option,
+	  ed will be invoked if found instead of /bin/ed. 
+12-02-10  Another bug in the saving and restoring of IFS in a subshell
+	  that caused a core dump has been fixed.
+12-02-08  A bug in which .sh.fun disciplines could be cleared after a
+	  function completes has been fixed.
+12-02-08  A bug in job control in which the foregroup process group was not
+	  set correctly after restarting a stopped pipeline has been fixed.
+12-02-07  A bug in which numbers with leading zeros could be treated as
+	  octal constants outside of ((...)) has been fixed.
+12-02-06  A bug in arithmetic with compound variables containing multiple
+	  array elements has been fixed.
+12-02-02  A bug in the ulimit option table was fixed.
+12-01-26  A bug in which a set command that did not change monitor could
+	  effect the behavior of the monitor when monitor mode is on is fixed.
+12-01-21 +You can now test whether the shell implements a math function using
+	  typeset -f .sh.math.name, where name is the name of the function.
+12-01-21  A bug in which typeset -L and typeset -R did not handle multibyte
+	  characters correctly has been fixed.
+12-01-20  A bug that could cause the shell to hang waiting for an incorrect
+	  job pid has been fixed.
+12-01-19  A memory leak which occured for a nested command subtiution has been
+	  fixed.
+12-01-17  A bug in which typeset -u PS1 could enable the uppercase attribute
+	  for some other variables, for exampe, HISTFILE has been fixed.
+12-01-16  A bug in which .sh.match was not correct after a substring match when
+	  the replacement string contained a substring match has been fixed.
+12-01-12 +Files that are sourced from profile files are now read and executed
+	  one command at a time so that alias definitions take effect as they
+	  do for profile files.
+12-01-12  A bug in which whence -p would find a function if one existed and
+	  there was no command of that name on PATH.
+12-01-11  Change b_* prototype (int, char**, void*) => (int, char**, Shbltin_t*).
+12-01-05  A bug in which read was not terminating for a signal that had a trap
+	  set has been fixed.
+12-01-01  A timing problem with >; has been fixed.
+12-01-01  A macro expansion memory leak has been fixed.
+11-12-26  A bug in array assignments of the form arr=( $arr[i] ...) in which
+	  arr was not unset before the assignment has been fixed. 
+11-12-20  A number of code changes were made based on the results of errors
+	  indicated by static code analysis.
+11-12-13  In vi edit mode a lteral <TAB> can now be entered by preceding it
+	  with a backshash.
+11-12-13  When tab is entered for completion after a ' or ", the ' and "
+	  characters are no longer deleted.
+11-12-07  A bug in which a program in the current direcotry with a . in the
+	  name could fail to execute when both PATH and FPATH end with :. has
+	  been fixed.
+11-12-07  I fixed a bug in which a variable expansion in a large here-document
+	  could be expanded to a null string.
+11-12-06  An optimization to read was added in the case the the read command
+	  was redirected from a file.
+11-12-06  Changes were made to make the line limit for read unlimited by
+	  default.
+11-12-05  A bug in which unsetting an array variable did not completely clear
+	  the variable in some cases has been fixed.
+11-12-02 +The printf alternative character # when applied to the %q format will
+	  quote argument in a form suitable for a field in a .csv format file.
+11-12-02 +A -S option was added to read to be able to read .csv format files.
+11-11-28  A bug in which redirection of standard error in a function called from
+	  command substitution caused standard error to be lost has ben fixed.
+11-11-21  [[ (-n foo) ]] no longer requires a space before (.
+11-11-11  The readonly attribute for a variable now applies to compound
+	  assignments to that variable.
+11-11-07  Changes were made to reduce the stack size to allow deeper function
+	  recursion.
+11-10-10 +Added alternate flag to printf %H for encoding of URI's.
+11-10-10  A bug which could lead to a core dump when the shell was invoked
+	  with more than twenty five open files has been fixed.
+11-10-06  A bug in the scoping of name references in functions called by other
+	  functions has been fixed.
+11-10-05  A bug in which wait on a pid may return the exit status of an
+	  earlier background job with that pid instead has been fixed.
+11-09-22  A bug in which a read timed out with TMOUT did not always restore
+	  the terminal state has been fixed.
+11-09-21  An optimization that allowed the last command in a script to use
+	  the same process id as the script has been eliminated.
+11-09-21  Added letoctal option that enables the let command to recognize
+	  octal constants starting with 0.
+11-09-20  A bug in which ${var.} could cause a core dump has been fixed.
+11-09-20  A bug with SHOPT_EDPREDICT when neither vi or emacs was enabled for
+	  lines beginning with # when in a multibyte locale has been fixed.
+11-09-20  A bug in emacs edit mode with SHOPT_EDPREDICT that would cause
+	  history searches matching comments lines to generate predictions
+	  has been fixed.  Only user typed comment lines generate predictions.
+11-09-20  A bug in emacs edit mode with a search that matches a comment line
+	  that could cause a core dump has been fixed.
+11-09-16  A bug in which a command name ending in .. could cause the shell to
+	  abort has been fixed.
+11-09-16  The characters ! + - % and @ in file names are no longer escaped with
+	  file name completion.
+11-09-13  The let command no longer treats numbers starting with 0 as octal
+	  constants.  
+11-09-08  A bug in which printf "%R" could cause a core dump for invalid shell
+	  patterns has been fixed.
+11-08-09  With set -u, ${var#pattern} reported that var was unset for special
+	  variables.
+11-08-03  A bug in which the shell did not preserve the exit status for a
+	  coprocess has been fixed.
+11-08-02  A bug in the saving and restoring of IFS in command substitution that
+	  caused a core dump has been fixed.
+11-07-21  Modified the 10-08-27 bug fix so that background jobs started in for
+	  and while loops created interactively generate completion messages.
+11-07-20  I fixed a bug in here documents in which multi-byte characters that
+	  crossed buffer boundaries were not processed correctly.
+11-06-22  The shell compiler now supports process substitution.
+11-06-22 +Added code to support process substitution on systems that do
+	  not supply the /dev/fd directory.
+11-06-21  Fixed extraneous jobs Done messages when builtin is at the end of a
+	  pipeline.
+11-06-20  Fixed two regression tests.
+11-06-20  Fixed a bug introduced on last update.
+11-06-14  A bug with pipefail in which the shell would wait for background
+	  jobs to complete has been fixed.
+11-06-09  A bug which caused the options.sh regression test to fail on OS390
+	  Linux has been fixed.  The bug could also have affected other systems.
+11-06-07 +A number of changes to support the still undocuments namespace option
+	  have been added.
+11-06-06  A bug in which command substitution of eval would hang when it  had
+	  standard error redirected to standard output has been fixed.
+11-06-01  A bug in case statement fall through (;&) ignoring set -e was fixed.
+11-06-01  A bug in which creating a left or right justified upper or lowercase
+          variable with an empty string has been fixed.
+11-06-01  A bug in which the .paths directory wasn't read when a subshell was
+	  executed before any other command has been fixed.
+11-05-31  The shell now gives an error when a type variable is assigned to
+	  an array instance when the array has been declared a compound variable
+	  array.
+11-05-31  A bug in which typeset -m of an array instance did not remove the
+	  original instance has been fixed. 
+11-05-28  A bug in which typeset -m dest=src fails when src and are passed as
+	  name references was fixed.
+11-05-28  A bug in which typeset -m "c.board[1][i]=el", where el is a compound
+	  variable core dumps has been fixed.
+11-05-28  Two bugs in the display of arrays of compound variables with print -v
+	  have been fixed.
+11-05-27  A bug with command substitution with the shift jis locale has been
+	  fixed.
+11-05-25  A bug in which unset -f foo, called within function foo could cause
+	  the shell to core dump has been fixed.
+11-05-24  A bug in unsetting arrays of compound variables that could lead to
+	  a core dump has been fixed.
+11-05-24  A scoping bug in with typeset -m for variables passed as references
+	  has been fixed. 
+11-05-09  A bug in which 'typeset +p array[$i]' in a subshell could cause an
+	  exception has been fixed.
+11-05-03  Two more scoping bugs with name references and read -C were fixed.
+11-05-03  A potential race condition which occurs when here-documents are
+	  processed in asynchronous blocks has been eliminated.
+11-05-02  Another scoping bug with name references defined in a function has
+	  been fixed.
+11-05-02  A bug in which the shell discards saved exit status of a job if it is
+	  followed by a subshell execution has been fixed.
+11-04-28  The shell now checks for numerical overflows with process ids.
+11-04-28  Another scoping bug with compound variables defined by name references
+	  inside a function has been fixed.
+11-04-28  A bug which caused a core dump on 32 bit systems with the basic.sh
+	  regression test has been fixed.
+11-04-27  A scope binding error for name references has been fixed.
+11-04-27  Assignment of compound variable to compound array element by name
+	  is now working.
+11-04-26  I fixed a bug with SHOPT_FIXEDARRAY compilation that could cause
+	  an a core dump for not fixed arrays.
+11-04-25  A bug in the references to two dimensional compound arrays has
+	  been fixed.
+11-04-20  A bug in which a name reference to a multidimentional index array
+	  index, nameref x=foo[3][4], did not work correctly has been fixed.
+11-04-18  Changes were added to allow fixed size arrays of variable sized
+	  objects when the SHOPT_FIXEDARRAY compile option defined on 10-09-28.
+11-04-18  A bug in which name references to array elements could fail has
+	  been fixed.
+11-04-15 +A compile option, SHOPT_2DMATCH, has been added which causes
+	  .sh.match to be a two dimensional array after ${var//pat/str} 
+	  where the first dimension is the pattern number and the second is
+	  the match instance.
+11-04-11  A bug in which readonly var, where var is exported could cause var
+	  to be unset has been fixed.
+11-04-06  A tokenizer bug in which ${x/{3}(\d)/ } would cause in infinite
+	  loop has been fixed.
+11-04-05  A bug in which ${!x.} could cause a core dump has been fixed.
+11-04-04  A bug in which cleaning out the history file could terminate before
+	  keeping all the recent history events has been fixed.
+11-03-29  A bug in which ${#array[@]} was 1 rather than 0 after issuing
+	  typeset array[7] has been fixed.
+11-03-29  The subscript out or range message for fixed arrays has been fixed.
+11-03-29  A bug in which suspend could cause a core dump has been fixed.
+11-03-24  For the showme option added 09-09-09, commands beginning with a ;
+	  inside an arithmetic for loop, no longer produce syntax errors.
+11-03-18  A bug in _WINIX ~domain/user expansion has been fixed.
+11-03-16  A bug in the pipefail option which could cause a script to hang
+	  has been fixed.
+11-03-12  The shell no longer treats ${##pattern} as a syntax error.
+11-03-11  A bug in typeset -u on systems that don't supply the towctrans()
+	  function has been fixed.
+11-03-11  A bug in which a compound assignment of the form var[sub]=(...)
+	  would evaluate sub for each assignment has been fixed.
+11-03-07  A bug in which reassigning a compound variable to an associative
+	  array index could incorrectly increase the count of the number
+	  of elements has been fixed.
+11-03-04 +The tilde expansion on windows has been modified to handle user
+	  names of the form domain/user so that ~domain/user now expands
+	  to the home directory of that domain user.
+11-03-03  A bug in which the width of the prompt was calculated incorectly
+	  which cause the wrong line length for edit commands has been fixed.
+11-03-02  A bug in which a global variables set from within a function inside
+	  a subshell can leave side effects in parent shell has been fixed.
+11-03-01  A bug in which whence -a could dump core when the first match
+	  was due to : in PATH and the program was in the current directory.
+11-02-28  A bug in emacs mode with SHOPT_EDPREDICT (added on 10-05-20) which
+	  disabled prediction on a line starting with # when the cursor was not
+	  at the end of line has been fixed.
+11-02-28  The output format for compound variables with set has been fixed.
+11-02-25  A bug which could lead to a core dump occurred when a shell script
+	  without #! is invoked by name from a parent shell that has name
+	  references defined and the script creates name references of the
+	  same name.
+11-02-21  The shell now fails with a syntax error when a here-document in a
+	  command substition is not completed before the closing ), for
+	  example, $( foobar <<! )
+		here_doc
+	  !.
+11-02-18  A bug in which the value of $0 in a function defined by name()
+	  was changed to name has been fixed.
+11-02-17  A bug in which the declaration typeset var[100] did not work
+	  correctly has been fixed. 
+11-02-15  A bug in which [[ -v sh.match ]] did not work correctly has been
+	  fixed.
+
+11-02-08  --- Release ksh93u  ---
+11-02-08  A bug in which opening standard output after it has been closed with
+	  exec 1>&- doesn't work has been fixed.
+11-02-07  A bug on some systems for which a command subtitution could hang
+	  has been fixed.
+11-01-28  A bug in file name completion for files containing both multibyte
+	  characters shell special characters has been fixed.
+11-01-18  The .sh.match variable now shows elements that do not match as
+	  as not set rather than an empty string.
+11-01-18  A bug with typeset -m of an array into an element of an indexed
+	  array has been fixed.
+11-01-13  A bug in handling of arrays of compound variables inside ((...)) which
+	  reported a syntax error been fixed.
+11-01-10  A bug in arithmetic assignment operators of the form op= for array
+	  variables when the same array was referenced on the left and the
+	  right hand side with different indices has been fixed.
+11-01-10  A bug in which the output of time was lost when { time...;} 2>&1
+	  occurred inside command substition has been fixed.
+11-01-07  [[ -v sh.match[i] ]] was returning false when sh.match[i] was set.
+11-01-05  Added and modified warning messages with sh -n.
+11-01-02  Fixed bugs with typeset -l/-u/-M and arrays.
+10-12-28  Fixed a bug with typeset -l/-u/-M values in arithmetic expressions.
+10-12-26  Fixed a time parsing bug in sleep and localeconv() initialization.
+10-12-23  Prevented the shell from generating a core dump when it sends itself
+	  a termination signal because the last command terminated with that
+	  signal.  This prevents a core dump to be overwritten by the shell.
+10-12-22  A bug in the expansion of  ${A[@]} ${B[@]}, introduced in 10-12-01
+	   when A="" B=B has been fixed.
+10-12-21 +Use MS_3D in b_vpath() for setting win32 WoW mount defaults.
+10-12-17  A bug in the expansion of ${var:i:j} which caused a core dump when
+	  i > ${#var} has been fixed.
+10-12-16 +sleep now treats . as decimal point even in locales that use comma.
+10-12-16 +typeset -M mapname was added to generalize on toupper and tolowwer
+	  mapping as provided with wctrans(). 
+10-12-10  A bug in which typeset -l displayed namespaces as well as lower case
+	  variables has been fixed.
+10-12-06  A bug in which a pipeline could terminate prematurely for a pipeline
+	  whose right hand side is a builtin, and whose left hand side ends in
+	  a simple command that has standard output redirected has been fixed.
+10-12-06  A bug in hexfloat assignments when the right hand side is a string
+          variable starting with 0x has been fixed.
+10-12-01  A bug in the expansion of ${$1+"$@"} which causes the last positional
+	  parameter to disappear when it is empty has been fixed.
+10-12-01  A number of changes were made to reduce the startup time.
+10-11-29  When wait is interrupted by a signal that is caught, it now exits
+	  with a non-zero exit status.
+10-11-29  When a variable is used directly in an arithmetic expression,
+	  leading zeros no longer cause the value to be treated as an
+	  octal constant.  This was true in previous versions for justified
+	  variables.
+10-11-29  An incorrect warning message was eliminated with the -n option for
+	  arithmetic expressions with associative arrays.
+10-11-29  Some changes were made to slightly reduces startup time.
+10-11-24  A bug in which a name reference is make to arr[0] when arr is not
+	  an array has been fixed.
+10-11-23  If a type definition is made without a compound variable assignment it
+	  produces an error message and no longer shows up as a defined type. 
+10-11-22  The handling of  inside [...] for for shell and ~(E) patterns has
+	  been fixed.
+10-11-22  A patch was made to pfsh to handle an error case.
+10-11-22 +Modified types defined in namespace so that they do not clash with
+	  types in other namespaces.  Types can be referenced using
+	  .namespace.typename.
+10-11-22  A bug which caused functions addressed as .namespace.funct to not
+	  work has been fixed.
+10-11-22  A bug in which if nr was a name reference to an unset associative
+	  array subscript, then ${!nr} did not output the subscript correctly
+	  has been fixed.
+10-11-18  A bug in which shcomp -n was not processing double quotes correctly
+	  has been fixed.
+10-11-18  Fixed a bug in which typeset -T foo; typeset -T could cause a
+	  core dump.
+10-11-17  Fixed a bug in which the error message for set -u could come out
+	  garbelled.
+10-11-17  Modified the parser so that typeset -a var=(...) no longer checks
+	  the first index for aliases and reserved words.
+10-11-17  A bug in which a subshell command consisted of only a for or until
+	  command has been fixed.
+10-11-16  Fixed a bug in which typeset -u would display namespace variables
+	  as well as upper case variables.
+10-11-16  A bug which could cause a core dump when unsetting a type variable
+	  when there are references to type elements has been fixed.
+10-11-15  A bug which could cause a core dump when unsetting a compound
+	  array variable when there are references to array subscripts has
+	  been fixed.
+10-11-15  A bug in which using typeset -m to move an indexed array instance
+	  to another array could cause the array to display incorrectly has
+	  been fixed.
+10-11-12  A bug in which the unset discipline function for a type is called
+	  when the type is initialized has been fixed.
+10-11-12  The sequences \< and \> are now preserved after patterns containing
+	  ~(E) in ${var/pattern/string} expansions.
+10-11-11  A bug in typeset -m when the variables were compound arrary instances
+	  has been fixed.
+10-11-10  A bug in output of a compound variable with types containing types
+	  has been fixed.
+10-11-10  Fixed ``name=value export [-p]'' to list environment.
+10-11-09  shtests resets SIGPIPE to SIG_DFL for all tests.
+10-11-09  Fixed a bug in expansion of $"..." when used in assignments.
+10-11-09  Fixed a getaddrinfo() memory leak that didn't call freeaddrinfo()
+	  after an interrupt.
+10-11-08  Modified the behavior of set -u so that the shell terminates with
+	  error message when when var is unset with ${!var} and ${#var}.
+10-11-02  Fix a bug in which a signal received while in a subshell could be
+	  ignored.
+10-10-26  Fix a bug where terminal interrupt was ignored while in vi/emacs
+	  edit search mode.
+10-10-26  Fix $'a b'c to expand to 'ac'.
+10-10-26  Provide user defined round() if not in <math.h>.
+10-10-26  Fix bug where $((undefined_function(1))) dumped core.
+10-10-22  Provide user defined iszero() if not in <math.h>.
+10-10-22  Fixed a bug with BGX compile option that could cause the shell to
+	  hang.
+10-10-22  Fixed a bug with user define math function on systems for which
+	  char is unsigned.
+10-10-21  A bug in which function autoloaded in a function leaves a file open
+	  has been fixed.
+10-10-20  Modified the behavior of set -u so that the shell terminates when
+	  when var is unset with ${var op string} when op is #, % or /.
+10-10-20  Fixed a bug with the AUDIT option in which the audit file was not
+	  not close-on-exec.
+10-10-20 +Made a number of changes and fixes for the NAMESPACE compile option
+	  which as added on 10-06-09 but some problems still remain.
+10-10-15  Fixed a bug in which arithmetic functions (added on 10-03-24) did
+	  not work when the function definition was in the same compound
+	  command in which the function was referenced.
+10-10-13  A bug in which creating an associative array of compound variables
+	  with no members as an element of a compound variable did not work
+	  has been fixed.
+10-10-08  A bug in which killing the last command in a function defined
+	  with function name, terminated the calling script has been fixed. 
+10-10-08  A bug which could cause a core dump if IFS is unset inside a function
+	  has been fixed.
+10-10-07 +To reduce unwanted side effects, invoking typeset without the export
+	  option and without an assignment now causes the variables to be unset
+	  if the variable is inherited from the environment.
+10-10-06  The closing brace for ${ command } is now a token no matter what
+	  character follows it.
+10-10-04  The change for $'...' expansion on 10-08-09 did not expand parameters
+	  contained in the error message and this has been fixed.
+10-10-04  A bug in which a declaration of indexed array (-a_ in a type
+	  definition would be displayed as a compound indexed array (-C -a)
+	  has been fixed.
+10-09-30  The C99 math function ldexp has been added.
+10-09-30  A bug with two dimensional arrays with expansion of the form
+	  ${ref[0..5]} where ref is a nameref to array[i] has been fixed.
+10-09-29  A bug in which an eval with redirections invoked from a dot script
+	  would not restore the file has been fixed.
+10-09-29  A bug in which loading a function from FPATH could leave a file
+	  descriptor open has been fixed.
+10-09-28 +A new compile option SHOPT_FIXEDARRAY has been added and is being
+	  evaluation.  It allows fixed sized indexed arrays be to defined
+	  using "typeset array[dim1][dim2]...[dimn]".  Fixed sized arrays
+	  are used the same way indexed arrays are.  Currently, only fixed
+	  arrays of fixed objects (float, int, and justifies objects) are
+	  supported.
+10-09-22  A bug which could cause an exception when a function with static
+	  variables was redefined has been fixed.
+10-09-21  A bug in the processing of (command&) which created a job in the
+	  parent process has been fixed.
+10-09-21  A for loop optimization bug with arithmetic expression evaluation
+	  has been fixed.
+10-09-21  A bug in which a recursive function containing a pipeline could
+	  lead to an exception fixed after 8 levels of recursion has been
+	  fixed.
+10-09-18  A bug in which the count of elements in an array was wrong leading
+	  to an exception has been fixed.
+10-09-13  A bug which occurred when both xtrace and showme options where
+	  specified in which the xtrace option disabled showme has been fixed.
+10-09-13  A bug in which creating a reference to an array variable with any
+	  elements could cause subsequent array elements to be treated as
+	  compound variables has been fixed.
+10-09-09  A bug which caused ((c.ar[x][y])) to be treated as a syntax error
+	  has been fixed.
+10-09-08  A bug in the processing of references to multidimensional arrays
+	  in arithmetic expressions has been fixed.
+10-09-08  A bug in the handling of multi-dimensional arrays which caused
+	  the number of elements in each dimension to be incorrect has
+	  been fixed.
+10-09-07  The change for messages on 10-08-09 did not handle message in
+	  assignments and this has been fixed.
+10-09-07  A bug in the indentation of compound variables in arrays when
+	  output with print -v has been fixed.
+10-09-07  A rare bug with indexed arrays when assigned a null string that could
+	  cause a core dump has been fixed.
+10-09-03  A number of changes were made for jobs pools.
+10-08-31  typeset -p was modified to output name references after other
+	  variables so that the output could be used as input.
+10-08-31  A bug with typeset -p in which variables with attributes but
+	  without attributes were not displayed correctly has been fixed.
+10-08-27 +When running a subshell, the current pool is unset.
+10-08-27  A bug in which jobs started from within for or while lists in
+	  interactive shells could generate completion messages has been fixed.
+10-08-25  Fixed a couple of bugs related to job pools. 
+10-08-24 +[[ -e /dev/xxx/ ]] can be used to check whether special files of
+	  those names are handled by the shell.
+10-08-24  A bug in the running of a compiled dot script in which only the
+	  first command was executed has been fixed.
+10-08-23  A bug which sometimes caused a core dump with a configure script
+	  has been fixed.
+10-08-20  A bug in command substitution which caused a configure script to
+	  hang has been fixed.
+10-08-19  Eliminated unnecessary ; from output of compound variable with
+	  typeset -p.
+10-08-17  Fixed a bug in command substitution in which under certain
+	  circumstances a file whose size is a power of 2 plus one, and the last
+	  character was not a new-line, could cause memory corruption.
+10-08-13 +Added static discipline functions to type similar to C++ static
+	  class functions.
+10-08-11  A bug in time when applied to a pipeline in which the shell did
+	  not wait for all elements of the pipeline to complete has been fixed.
+10-08-11  Restored sh_fmtq() quoting to not quote NAME= in NAME=VALUE.
+10-08-09 +Modified the expansion of message strings, $"...", so that they
+	  are expanded each time they are referenced rather than expanding
+	  them when the script is compiled or read in.
+10-08-06 +The process id for jobs in job pools is now of the form poolname.n
+	  where n is the jobid in that pool.  Commands that accept job names
+	  or numbers now understand names in this format.
+10-08-05  A bug in which an assignment from within an arithmetic expression
+	  inside a function would create a local variable has been fixed.
+10-08-04  A bug in the expanding of variables whose names contain multibyte
+	  characters has been fixed.
+10-08-04  A bug which caused an exception when processing scripts compiled
+	  with shcomp -n has been fixed.
+10-08-02  Tests using very small buffer sizes uncovered a number of bug most
+	  connected with here documents which have been fixed.
+10-07-27  The format modifier , used for digit grouping with d and f formats
+	  has been documented.
+10-07-26  cd '' now produces and error rather than changing to the current
+	  directory.
+10-07-26  A bug in multi-byte locales which the last character of a
+	  multi-byte character is a  or pattern character which could occur
+	  when the character was the last character of a command substitution
+	  has been fixed.
+10-07-23  Another bug in the processing of ${var:offset;len} in multi-byte
+	  locales when len is larger than the number of characters has been
+	  fixed.
+10-07-23  Many coding changes have been made to eliminate most of the uses
+	  of global variables in the shell code.
+10-07-22  Fixed a bug in which discipline functions were not being invoked
+	  when it was invoked as ref.discipline where ref was a name reference
+	  to an array instance.
+10-07-22  Fixed a bug in which discipline functions were not being invoked it
+	  was invoked on a two dimensional array, i.e., arr[5][9].discipline.
+10-07-19  Fixed a buffering problem which occurred when running a script with
+	  ssh and the parent ssh process is killed.
+10-07-14  Modified the parser to treat ((...)) inside [[...]] as ( (...) ) to
+	  that it is a nested (...).
+10-07-09  A bug in the handling of process substitution inside command
+	  substitution as part of a pipeline has been fixed.
+10-07-07  A bug in the output for compound variables containing
+	  multi-dimensional arrays has been fixed.
+10-07-06  ksh now recovers from changes made by bash to the history file without
+	  loosing history commands.
+10-06-25  A bug in which a large here document containing command substitutions
+	  of a dynamically loaded function that contained a here document
+	  could get truncated has been fixed.
+10-06-24  If after executing a script found in FPATH, if a function, builtin,
+	  or type name corresponding to that script is not defined, the shell
+	  now outputs an error message and returns value 126.
+10-06-23  Floating point functions that happened to return integer values
+	  were being treated as if the function returned integers so that
+	  integer division could be used instead of floating point division.
+10-06-22  Fixed a bug in earlier ksh93u in which an arithmetic assignment to a
+	  variable in the global scope would instead create a local variable if
+	  the variable had an attribute but did not have a value.
+10-06-18  Modified trap handling so that if the same signal is received when
+	  executing the handler, it is deferred until the handler completes.
+10-06-16  Fixed a bug in which ulimit -v was setting the the cpu limit
+	  on Linux.
+10-06-14 +The command 'typeset -T' now generates the list of type definitions
+	  in a format that can be used as input to the shell.
+10-06-09  Put in patch from Solaris for output quoting with %q.
+10-06-09 +Made changes to the NAMESPACE compile option so that it now seems
+	  to work.  With this option, namespace <name> { command;} will
+	  run command in the namespace .name so that all variables and
+	  functions created by command are accessible outside the name
+	  space via .name.var and .name.fun.  Variables and functions that
+	  are not in the namespace are not modified when running command.
+10-06-07  Change most internal interfaces to take Sh_t* argument.
+10-06-03 +Types can be loaded on first reference by putting definitions in
+	  PFPATH.
+10-06-03 +The shell is now able to parse commands which use type statements
+	  before the typeset -T command to define the type executes.
+10-06-03  A bug in the quoting for name reference declarations which did
+	  not properly handle [ and ] in subscripts for associative arrays.
+10-06-02  A bug in which a discipline function defined by a type instance to
+	  override the default was not being registered has been fixed.
+10-06-02  A bug in which read -C of an associative array of compound variables
+	  was not working has been fixed.
+10-06-02  A bug in which the error message for an unset parameter with set -u
+	  did not contain the name of the variable has been fixed.
+10-06-01  A bug in typeset -m for moving an indexed array instance to a variable
+	  has been fixed.
+10-06-01  A bug in which caused memory to be freed twice when unset was called
+	  for an indexed array that had get or set disciplines has been fixed.
+10-06-01  A bug in which the %b format of printf was not preserving NUL bytes
+	  with   has been fixed.
+10-06-01  A bug in the handling of name references to array variables in
+	  arithmetic expressions has been fixed.
+10-05-28  Fixed bugs in changing attributes for two dimensional arrays.
+10-05-28  Eliminated a few unreferenced variables and a reference to
+	  uninitialized memory.
+10-05-27  Rewrote the subshell code to avoid using pipes an many cases.
+10-05-24  Fixed a bug which cause an exception when both -l and -s were
+	  specified with typeset -i.
+10-05-21  Inputting of three dimensional indexed arrays with ( ( (...)...)...) 
+          was not working and has been fixed.
+10-05-21  A bug in which adding the attributes -Ai to a variable via a name
+	  reference could cause the value to display incorrectly has been fixed.
+10-05-21  A bug in which using $var inside ((...)) did not work when var was
+	  a hex float variable.
+10-05-20 +The compile option SHOPT_EDPREDICT has been added.  When this option
+	  is on, as you type a line beginning with a # the following characters
+	  are treated as a shell pattern and cause matching lines from the
+	  history file to be displayed as a numbered list as you type.
+	  You can scroll up and down this list or you can use <ESC>nTAB
+	  to make this the current line (n defaults to 1 of omitted) or
+	  <ESC>n<cr> to execute.
+10-05-20  A bug which caused an exception when multiple levels of composite
+	  functions in arithemtic expressions has been fixed.
+10-05-19  <<< with an empty string no longer gives an error.
+10-05-19  A bug in arithmetic evaluation when a name reference to an array
+	  instance was used has been fixed. 
+10-05-14  A bug in which the shell treats a valid index array assignment,
+	  typeset -a x=(foo (x=3;y=4) bar) as a syntax error has been fixed.
+10-05-13  A bug in creating name references to associative array variable
+	  after a lookup of one of its elements has been fixed.
+10-05-12  Two bugs in the handling of function static type variables in
+	  subshells have been fixed.  One could cause an exception and the
+	  other would leave side effects in the parent shell.
+10-05-10  A bug in which static variables in functions were not being saved and
+	  restored properly when running subshells has been fixed.
+10-05-05  A bug in which print -v did not work correctly when an operand was an
+	  indexed array element referring to a compound variable has been fixed.
+10-05-05  A change to improve performance by special casing empty string
+	  assignments to avoid repeated malloc() and free().
+10-05-05  A bug in which creating a name reference to a non-existent associative
+	  array element would create the array element has been fixed.
+10-05-04  A bug in which name references to static variables in the static
+	  scope were not found has been fixed.
+10-04-30  Do not use socketpair() on systems that implement ioctl(I_PEEK)
+	  on pipes.
+10-04-29 +When the current job pool is set, coprocess are run in a job pool.
+10-04-28  A type defined with a member foo that is an associative array without
+	  elements followed by an expansion ${bar.foo[a]} and an assignment
+	  bar.foo[a]=b, no longer indicates that ${#bar.foo[@]} has 0 members.
+10-04-27  Another bug in which a nested command substitution could hang if it
+	  generated too much data has been fixed.
+10-04-26  A type defined with a member that is an indexed array without elements
+	  would behave as if the 0th element of each instance was defined after
+	  a non-zero element was specified and this has been fixed.
+10-04-26  A bug in which types defined in a subshell were not undefined when
+	  the subshell completed has been fixed.
+10-04-23  For file completion in commmand line editing, file names starting
+	  with # are now escaped so that they are not treated as comments.
+10-04-23  A bug in which ${t.var:=value}, where t is an instance of a type
+	  variable, could assign value to the type variable rather than to
+	  the type instance has been fixed.
+10-04-23 +Added &| which can be used in place of | to have portions of a
+	  pipeline executed in the pool.
+10-04-22 +The .sh.pool variable was added for use with job pools.
+10-04-22  A bug in which a nested command substitution could hang if it
+	  generated too much data has been fixed.
+10-04-20  A bug which corrupted one byte of memory when read was called with
+	  reads that did not use a delimiter has been fixed.
+10-04-19  The display of a compound variable with an embedded array with
+	  attributes was sometimes not working correctly and has been fixed.
+10-04-16  A bug in which attributes were not be propagated to elements in
+	  an associative array has been fixed.
+10-04-15  A bug which caused scripts containing user defined math functions to
+	  fail to compile with shcomp has been fixed.
+10-04-15 +Job pools have been added with the SHOPT_COSHELL compilation option.
+	  A job pool allows a collection of background jobs to run either locally 
+	  or remotely and to be managed as a unit.  The command '& name ...'
+	  creates or uses a named job pool for subsequent background jobs.
+	  kill, wait, and jobs allow the pool name as operands.
+10-04-14  A bug in which a coprocess connection could terminate prematurely
+	  when running a nested subshell has been fixed.
+10-04-12 +Enumeration constants can be used in arithmetic expressions with the
+	  ==, != and = operators when the left hand side is an enum variable
+	  and the right hand side is an enumeration constant.
+10-04-07  A bug in which setting the trap on CHLD to ignore could cause
+	  an incorrect exit status has been fixed.
+10-04-06  A bug in which LINENO was not incremented for a here-document when
+	  the here-document word was followed by a comment has been fixed.
+10-04-06  The optimization that execs the last process of a script rather
+	  than creating a new process has been removed when a trap on
+	  interrupt has been set.
+10-04-06  Unsetting the 'C', 'A' or 'a' typeset attribute now produces an
+	  error message rather than generating an exception.
+10-04-06  A bug in which .sh.name contained the subscript and .sh.subscript
+	  was empty in some cases with discipline functions on array instances
+	  has been fixed.
+10-04-05  A bug in the edit modes where preceding the interrupt character with
+	  the literal next character did not work has been fixed.
+10-04-05  A bug in the creation of type instances of arrays which could cause
+	  an exception has been fixed.
+10-03-30  A bug in the display of a compound variable containing an indexed
+	  array of compound variables has been fixed.
+10-03-24 +Arithmetic functions can be defined using the shell function syntax,
+	  'function .sh.math.name x y z{...}' , where name is the function name
+	  invoked within ((...)) and x y z are long double arguments passed
+	  as name references.  y and z are used for functions with two and
+	  three arguments respectively.  The value of the function is the value
+	  of the long double .sh.value variable when the function returns.
+10-03-24  A bug in which integer division was mistakenly used when the
+	  numerator was a binary operator with the first operand floating
+	  point and the second integer, e.g. (.1**3)/3, has been fixed.
+10-03-24  The >; file operator was modified so that the temporary file is
+	  created in the same physical directory as file.
+10-03-23  A warning message was added to sh -n when $var was used inside
+	  ((...)) instead of var.
+10-03-19  fmin was added to the list of math function on the man page.
+10-03-19  Fixed the return value for unalias when the alias did not
+	  exist.
+10-03-19  A bug in which the SHLVL variable exported the value it had on
+	  input rather than the incremented value has been fixed.
+10-03-19  A bug which causes whence -q to go into an infinite loop has been
+	  fixed.
+10-03-19  Removed space between Stopped message and (SIGTTIN) and (SIGTTOUT).
+10-03-17  Modified profile shell execution so that when builtins that
+	  correspond to executable have extended attributes, they are
+	  executed by pfksh instead of being treated as built-ins.
+10-03-16  A bug in whence -a which produced duplicate lines of output has
+	  been fixed.
+10-03-16  A bug in the handling of process groups in monitor mode for
+	  command substitutions has been fixed.
+10-03-15  Fixed a bug in which read -u[fd] could cause the shell to core
+	  dump when fd was greater than open_max.
+10-03-15 +Modified the shell I/O so that the shell will not fail if the
+	  ulimit for open_max is increased as part of the script.
+10-03-12  A bug in which a here-document containing command substitutions
+	  that contained here-documents did not process correctly has been
+	  fixed.
+10-03-12  A bug in which the terminal is not restored to canonical mode
+	  after read times out when in a multibyte locale with no edit mode
+	  enabled has been fixed.
+
+10-03-05  --- Release ksh93t+  ---
+10-03-05  A variable unset memory leak has been fixed and tests/leaks.sh
+	  has been added to verify the fix.
+10-03-04  Documentation, comment, and diagnostic spelling typos corrected.
+10-02-14  Fix sh_getenv() initialization to cooperate with the 3d fs.
+10-02-12  A bug in which the get discipline function was not invoked for
+	  associative array subscripts for unset array elements has been fixed.
+10-02-12  A bug which could occur if the last line of a script was an eval
+	  that executed multiple commands has been fixed.
+10-02-02  A buffer overflow in read and another in binary type base64
+	  encoding were fixed.
+10-01-20  A bug in the evaluation of arithmetic expression in which the
+	  subscript was evaluated twice for $((foo[x++]++)) has been fixed.
+10-01-19  A workaround for a double-free of a trap in both a subshell and its
+	  parent has been added.
+10-01-18  A bug in type handling of typeset -H has been fixed.
+10-01-15  The "adding empty subscript" warning now only emitted with -x set.
+10-01-01  A bug in the parser in which '$((case i in i):;esac);:))' was not
+	  parsed correctly was fixed.
+10-01-01  A bug in the parser in which '$(( 2 , 3.6 ))' dumped core for locales
+	  with radix char , and thousands separator . has been fixed.
+09-12-28  A bug in the handling of SIGCLD on systems that generated SIGCLD
+	  while blocked waiting for process to complete has been fixed.
+09-12-24  ast setlocale() reworked to differentiate env var changes from user
+	  override.
+09-12-18  A bug with the SHOPT_BGX option set which disabled traps for signals
+	  < SIGCHLD when a trap for a signal > SIGCHLD was set has been fixed.
+09-12-18  A bug where [[ -v var ]] was incorrect for some variables (including
+	  LC_* vars) has been fixed.
+09-12-15  A bug that produced a syntax error when a multibyte character
+	  straddled a buffer boundary has been fixed.
+09-12-11  A bug where the subscript of an unset variable was not evaluated has
+	  been fixed.
+09-12-09  A bug where shcomp dumped core on certain syntax errors has been fixed.
+09-12-07  A bug where a parent shell environment var reset in a subshell removed
+	  the value in subsequent children of the parent shell has been fixed.
+09-12-04  A bug in which in some cases a trap in a function executed in
+	  a subshell could trigger twice has been fixed.
+09-12-03  A bug in which SHLVL exported with some attributes could cause
+	  the shell to abort at startup has been fixed.
+09-12-02  A bug with pipefail in which the shell could hang waiting for the
+	  writer to complete before the last reader command has been fixed.
+09-11-30  A bug in which a trap could be inherited by the first element of
+	  a pipeline when the command had more than 63 arguments that did
+	  not contain any macro expansions has been fixed.
+09-11-19  When read from a terminal was called from with a while or for loop,
+	  and an edit mode was on, a backspace or erase no longer will
+	  overwrite the prompt.
+09-11-17 +Change .paths parse to handle BUILTIN_LIB=foo BUILTIN_LIB=foo-1.2.
+09-11-17  Inside a function, typeset foo.bar will bind foo to global variable
+	  foo if local variable foo does not exist, instead of creating a 
+	  local variable.
+09-11-17  "read -n1" from the terminal has been fixed to read exactly one character.
+09-11-11  Job control now works for subshell commands, (...).
+09-11-11  If set -e is on for an interactive shell errors in special builtins
+	  now cause the shell to exit.
+09-11-11  A bug in which an interrupt handler processed during the read builtin
+	  when IFS did not contain a new line has been fixed.
+09-11-09  A bug in which a variable that has been unset in a subshell and then
+	  exported from that subshell does not show up in the environment
+	  has been fixed.
+09-11-02  ``,2'' is now a valid numeric constant for locales with
+	  decimal_point=','.
+09-11-02  A bug where "return" in .profile did not restore the shell state
+	  has been fixed.
+09-10-31  A bug that corrupted saved exit status when pids wrapped around has
+	  been fixed.
+09-10-26  A bug in { LANG LC_ALL LC_category } ordering has been fixed in -last.
+09-10-16  A bug where notification to libast that the environment has changed
+          has been fixed.
+09-10-12  A bug in which a function loaded in a subshell could leave side
+	  effects in the parent shell has been fixed.
+09-10-12  A bug in converting a printf %d operand to a number when the operand
+	  contains multiple subscripts for the same variable has been fixed.
+09-10-09  A bug in the handling of the escape character  in directory prefixes
+	  in command completion has been fixed.
+09-10-09  $PATH processing has been changed to delay dir stat() and .paths
+	  lookup until the directory is needed in the path search.
+09-09-28  Call the ast setlocale() intercept on unset too.
+09-09-24  A bug in which LANG=foo; LC_ALL=foo; unset LC_ALL; did not revert
+	  LC_CTYPE etc. to the LANG value has been fixed.
+09-09-17  A bug in which unsetting SVLVL could cause a script invoked by
+	  name without #! to core dump has been fixed.
+09-09-16  A bug in which a pipeline in a here-document could hang when the
+	  pipefail option was on has been fixed. 
+09-09-09  A bug in the processing of line joining in here documents which
+	  occurred when a buffer began with <escape><new-line> has been fixed.
+09-09-09 +A leading ; with commands in a brace group or parenthesis group
+	  no longer causes an error.  It now is used for the "showme" option.
+09-09-09  A bug in which a subshell containing a background process could
+	  block until the background process completed has been fixed.
+09-09-04  A bug in handing ${var[sub]}, where var is a nameref has been fixed.
+09-09-03  A bug which caused an index array to have the wrong number of elements
+	  when it was converted from a compound variable by adding an another
+	  element has been fixed.
+09-09-03  Specifying export for a compound variable now generates an error.
+09-09-02  $"..." localizations strings are no longer recognized inside `...`.
+09-09-01  A bug in the for loop optimizer in the handling of type static
+	  variables has been fixed.
+09-09-01  An error message is not displayed when * and @ are used as subscripts.
+09-09-01  Several bugs in the processing for types that included an associative
+	  array of another type has been fixed.
+09-09-01  A bug in the tracing of [[ a < b ]] and [[ a > b ]] has been fixed.
+09-08-26  The .sh.file variable was not being set for a script that was run
+	  by name and didn't start with #! and this has been fixed.
+09-08-25  A bug in which a function called to deeply from command substitution
+	  did not display an error message has been fixed.
+09-08-24 +When processing profiles, ksh93 now violates the POSIX standard and
+	  treats &> as a redirection operator similar to bash.
+09-08-23  A bug in the handling of the trap on SIGPIPE that could lead to a
+	  memory fault has been fixed.
+09-08-21  A bug in the handling of the comma operator in arithmetic expressions
+	  that could cause a core dump on some systems has been fixed.
+09-08-20  A bug in which a compound variable containing an array of a type
+	  that doesn't have any elements now expands correctly.
+09-08-19  A bug which disabled function tracing inside a function after
+	  a call to another function has been fixed.
+09-08-19  A bug in which initializing a compound variable instance to another
+	  compound variable by name has been fixed.
+09-08-18  A bug in which compound variable instances could be lost after
+	  an instance that invoked a type method discipline has been fixed.
+09-08-18  A bug in which a discipline function for a type applied to an
+	  array instance when invoked in a function ignored the subscript
+	  has been fixed.
+09-08-18  A scoping error with variables in arithmetic expression with
+	  type variables when reference with a name reference has been fixed.
+09-08-10  Several memory leaks were fixed primarily related to subshells.
+09-08-06  A bug in which setting the trap on CHLD to ignore could cause
+	  a script to hang has been fixed. 
+09-07-08  A bug in the processing of name reference assignments when it
+	  contained pattern expansions with quoting has been fixed.
+09-06-22 +The default width for typeset -X has been changed so that there
+	  should be no loss of precision when converting to a string.
+09-06-19  A bug in the printing of array elements for binary variables with
+	  printf %B has been fixed.
+09-06-19  A bug which caused a core dump with trap DEBUG set with an array
+	  assignment with no elements has been fixed.
+09-06-19  A bug with read with typeset -b -Z<num> has been fixed.
+09-06-19  Two bugs related to read -b for array variables has been fixed.
+09-06-19  A bug with typeset for compound variables containing arrays of
+	  compound variables has been fixed.
+09-06-18  A bug in appending a compound variable to a an indexed array of
+	  compound variables has been fixed.
+09-06-18  A bug which occurs when appending a compound variable to an indexed
+	  array element has been fixed.
+09-06-18  Setting VISUAL to a value other than one ending in vi or emacs will
+	  no longer unset the edit mode.
+09-06-17  A bug in typeset -m when moving a local compound variable to a
+	  global compound variable via a name reference has been fixed.
+09-06-17  A bug in appending to nodes of an array of compound variables when
+	  addressing them via nameref has been fixed.
+09-06-17  A bug in typeset -p var, when var is an array of compound variables
+	  in which the output only contained on array element has been fixed.
+09-06-17  The prefix expansion ${!y.@} now works when y is a name
+	  reference to an element of an array.
+09-06-16  Traps on signals that are ignored when the shell is invoked
+	  no longer display.  Previously they were ignored as required but
+	  would be listed with trap -p.
+09-06-12  A bug in vi edit mode in which hitting the up arrow key at the
+	  end of a line longer than 40 characters which caused a core dump
+	  has been fixed. 
+09-06-11  A bug in which "eval non-builtin &" would create two processes,
+	  one for the & and another for non-builtin has been fixed.
+09-06-08  When var is an identifier and is unset, ${var} no longer tries to
+	  run command substitution on the command var.
+09-06-08 +Process substitution arguments of the form <(command) can now be
+	  used following the < redirection operator to redirect from command.
+09-05-13  A bug in which redirections of the form 2>&1 1>&5 inside command
+	  substitution could cause the command substitution to hang has been
+	  fixed.
+09-05-12  To conform with POSIX, the -u option only checks for unset variables
+	  and subscript elements rather than checking for all parameters.
+09-05-12  A bug which could cause a core dump when a variable whose name
+	  begins with a . was referenced as part of a name reference inside
+	  a function has been fixed.
+09-05-01  A bug that caused a core dump when SIGWINCH was received and
+	  both vi and emacs mode were off has been fixed.
+09-04-22 +Default alias compound='typeset -C' added.
+09-04-15  A bug that caused ${...;} to hang for large files has been fixed.
+09-04-08  A change was made in the -n option which printed out an incorrect
+	  warning with <>.
+09-04-07  The emacs edit command M-_ and M_. and the vi command _ was fixed
+	  to handle the case there there is no history file.
+09-04-05  A bug in handling new-lines with read -n has been fixed.
+09-04-05  The ENV variable defaults the the file named by $HOME/.kshrc rather
+	  then to the string $HOME/.kshrc.
+09-03-31  A bug in which a nested command substitution with redirections could
+	  leave a file descriptor open has been fixed.
+09-03-24 +ksh now only uses the value of the _ variable on startup if it can
+	  verify that it was set by the invoking process rather than being
+	  inherited by some other ancestor.
+09-03-24 +When ksh is invoked without -p and ruid!=euid, and the shell is
+	  compiled without SHOPT_P_UID or ruid<SHOPT_P_UID, the shell now
+	  enables the -p option.  The previous version instead set the
+	  euid to the ruid as it does for set +p.
+09-03-24 +When SHOPT_P_UID is defined at compile time and the shell is started
+	  without -p and ruid!=euid and ruid>=SHOPT_P_UID then euid is set
+	  to ruid. A bug that did the wrong test (ruid<SHOPT_P_UID) was fixed.
+09-03-17 +The sleep(1) builtin now accept and ISO 8601 PnYnMnDTnHnMnS
+	  duration or date(1) compatible date/time operand.
+09-03-10  If a variable that was left or right justified or zero-filled was
+	  changed with a typeset statement that was left or right justified
+	  or zero-filled, then the original justification no longer affects
+	  the result.
+09-03-10  A bug in the handling of traps when the last command in a script
+	  is a subshell grouping command has been fixed.
+09-03-03  A bug in which an expansion of the form ${!prefix@} could generate
+	  an exception after the return from a function has been fixed.
+09-02-02  A bug in restricted mode in which the value of ENV could be
+	  changed from within a function has been fixed.
+09-02-02  A bug in which an erroneous message indicating that a process
+	  terminated with a coredump has been fixed.
+09-02-02  The exit status when exit was called without an argument from
+	  a signal handler was incorrect and has been fixed.
+09-02-02  A bug in which a function autoloaded in a subshell could cause
+	  a core dump when the subshell completed has been fixed.
+09-02-02  A bug in which 2>&1 inside a command substitution wasn't working
+	  correctly has been fixed.
+09-02-02  A bug in the call stack of arithmetic function with 2 args
+	  returning int has been fixed.
+09-01-30  A bug in which 'eval print \$0' inside a function was giving the
+	  wrong value for $0 has been fixed.
+09-01-28  A bug in which a command substitution could return an exit status
+	  of 127 when the pipefail option is enabled has been fixed.
+09-01-26  ksh93 now generates an error message if you attempt to create
+	  a global name reference to a local variable.
+09-01-26 +The [[ -v var ]] operator was modified to test for array elements.
+09-01-23 +The redirection operator <>; was added.  It is similar to <>
+	  except that if the command it is applied to succeeds, the file
+	  is truncated to the offset at the command completion.
+09-01-23  The default file descriptor for <> was changed to 1.
+09-01-20  A bug in which the exit status specified in an exit trap was
+	  not used when a process terminated with a signal has been fixed.
+09-01-19  A bug in which a signal whose default action is to terminate
+	  a process could be ignored when the process is running a sub-shell
+	  has been fixed.
+09-01-19  A bug in which sending SIGWINCH to a process that reads from a pipe
+	  could cause a memory fault has been fixed.
+09-01-16 +The -R unary operator was added to [[...]] and test to check whether
+	  a variable is a  name reference.
+09-01-16 +The -v unary operator was added to [[...]] and test to check whether
+	  a variable is set.
+09-01-14  The unset built-in was modified to return 0 exit status when
+	  unsetting a variable that was unset to conform with the POSIX
+	  standard.
+09-01-14  The unset built-in was modified to continue to unset variables
+	  after encountering a variable that it could not unset to
+	  conform to the POSIX standard.
+09-01-14  The parameter expansion ${x+value} no longer expands the value of
+	  the variable x when determining whether x is set or not.
+09-01-13  A bug in which background jobs and pipelines that were not waited
+	  for could, in rare instances, cause the shell to go into an infinite
+	  loop or fail has been fixed.
+09-01-06  A bug in indexed arrays of compound variables in which referencing
+	  non-existent sub-variable in an arithmetic expression could cause
+	  the sub-variable to be created has been fixed.
+09-01-05  A bug in which the  character did not escape extended regular
+	  expression pattern characters has been fixed.
+08-12-24  A bug in which killing the last element of a pipe did not cause
+	  a write to the pipe to generate a SIGPIPE has been fixed.
+08-12-19  A bug which could cause command substitution to hang when the
+	  last element of a pipeline in a command substitution was a built-in
+	  and the output was more that PIPE_BUFF.
+08-12-18  A bug which occurs when a here documented marker embedded in a
+	  command substitution occurs on a buffer boundary has been fixed.
+08-12-17  A bug in the output of typeset -p for variables that had attributes
+	  but did not have a value has been fixed.
+08-12-16  A bug in which a name reference to a name reference variable that
+	  references an array element has been fixed.
+08-12-16  A bug in which a variable given both the -A and -C attribute along
+	  with an initial assignment didn't work correctly has been fixed.
+08-12-10  The [[ -t fd ]] test was fixed to handle fd>9.
+08-12-10  A bug where function stack misalignment could cause a bus error
+	  has been fixed.
+08-12-09  Command completion was changed to use  to quote special characters
+	  instead of quoting the argument in single quotes.
+08-12-07  A bug in typeset -m which occurred when the target node was an
+	  associative array element has been fixed.
+08-12-07  A timing bug on some systems (for example darwin), that could
+	  cause the last process of a pipeline entered interactively to fail
+	  with an "Exec format error" has been fixed.
+08-12-04 +SHOPT_BGX enables background job extensions. Noted by "J" in
+	  the version string when enabled. (1) JOBMAX=n limits the number
+	  of concurrent & jobs to n; the n+1 & job will block until a
+	  running background job completes. (2) SIGCHLD traps are queued
+	  so that each completing background job gets its own trap; $! is
+	  set to the job pid and $? is set to the job exit status at the
+	  beginning of the trap. (3) sleep -s added to sleep until the time
+	  expires or until a signal is delivered.
+08-12-04  The sign of floating point zero is preserved across arithmetic
+	  function calls.
+08-12-04  A bug that caused print(1) to produce garbled stdout/stderr
+	  output has been fixed.
+08-12-04  A bug in which printf "%d "'<euro>'" did not output the
+          numerical value of the EURO symbol, 8354, has been fixed.
+08-11-24 + /dev/fd* and /dev/std* redirections are first attempted with
+	  open() to preserve seek semantics; failing that the corresponding
+	  file descriptors are dup()'d.
+08-11-20  A bug which could cause a core dump if a function compiled with
+	  shcomp was found has been fixed.
+08-11-20  A bug in which jobs were not cleared from the jobs table for
+	  interactive shells when the pipefail option is on has been fixed.
+08-11-11  A bug in which a field that was unset in a type definition and later
+	  set for an instance could appear twice when displaying the variable
+	  has been fixed.
+08-11-11  A bug in which running a simple command & inside a function would
+	  not return the correct process id has been fixed.
+08-11-10  A bug in which the exit status of a command could be lost if the pid
+	  was that of the most recent command substitution that had completed
+	  has been fixed.
+08-11-10  The maximum depth for subshells has been increased from 256 to 65536.
+08-11-06  A bug which could cause a core dump when the _ reference variable was
+          used as an embedded type with a compound assignment has been fixed.
+
+08-10-31  --- Release ksh93t  ---
+08-10-31  Variable scoping/initialization bugs that could dump core were fixed.
+08-10-24  The lexer now accepts all RE characters for patterns prefixed
+	  with a ksh ~(...) option expression.
+08-10-24 +For ${var/pat/sub}   in sub expands to the text matched by pat.
+08-10-18  A bug in array scoping that could dump core has been fixed.
+08-10-10  read -n and -N fixed to count characters in multibyte locales.
+08-10-10  A bug that mishandled _.array[] type references has been fixed.
+08-10-09 +${.sh.version} now contains a concatenation of the following (after
+	  'Version') denoting compile time features:
+		A	SHOPT_AUDIT
+		B	SHOPT_BASH
+		L	SHOPT_ACCT
+		M	SHOPT_MULTIBYTE
+08-10-09  A bug that caused subshell command substitution with redirection
+	  to hang has been fixed.
+08-10-08  Output errors, other than to stderr, now result in a diagnostic.
+08-10-08  ksh93 now supports types that contain arrays of other types as
+	  members.  Earlier versions core dumped in this case.
+08-10-05  A bug which caused the shell to emit a syntax error for an arithmetic
+	  statement of the form (( var.name[sub] = value)) has been fixed.
+08-10-01  A bug that caused subshell command substitution to hang has
+	  been fixed.
+08-09-29  When the -p export option of typeset is used with other options,
+	  only those variables matching the specified options are displayed.
+08-09-29  When the shell reads the environment and finds variables that are
+	  not valid shell assignments, it now passes these on to subsequent
+	  commands rather than deleting them.
+08-09-29  A bug in the display of compound variables containing an indexed
+	  array of compound variables has been fixed.
+08-09-29  A bug in the display of compound variables containing an associative
+	  array with a subscript containing a . in the name has been fixed.
+08-09-26  A core dump in the subshell environment restore has been fixed.
+08-09-24  $(...) has been fixed to properly set the exit status in $?.
+08-09-23  $(<...) with IFS=$'n' has been fixed to retain all but the last
+	  of multiple trailing newlines.
+08-09-23  The -p option to typeset when used with other attributes, restricts
+	  the output to variables with the specified attributes.
+08-09-22  A bug that sometimes lost the exit status of a job has been fixed.
+08-09-21  A bug that retained trailing command substitution newlines in
+	  cases where the command caused the shell to fork has been fixed.
+08-09-19  type, whence -v, and command -v were fixed to comply with POSIX
+	  by writing 'not found' diagnostics to the standard error.
+08-09-18  test and [...] were fixed to comply with POSIX in the case
+	  of test '(' binop ')' where binop is a valid binary test operator.
+08-09-16 +If a method discipline named create is specified when defining a
+	  type, this function will be called when an instance is created.
+08-09-15 +The variable _ is now set as a reference to the compound variable
+	  when defining a compound variable or a type.
+08-09-10  The shell now prints an error message when the type name specified
+	  for an indexed array subscript is not an enumeration type.
+08-09-10  A bug in which a subshell that spawned a background process could
+	  loose output that was produced after the foreground completed
+	  has been fixed.
+08-09-10  A timing bug on some systems that could cause coprocesses started by a
+	  subshell to not clean up and prevent other coprocesses has been fixed.
+08-09-09  The typeset -m option is now able to rename array elements from
+	  the same array.
+08-09-09  The exit status of 2 from the DEBUG trap causes the next command
+	  to be skipped.  An exit value of 255 from a DEBUG trap called from
+	  a function causes the function to return. 
+08-09-08  A bug in which a coprocess created in a subshell that did not
+	  complete when the subshell terminated could prevent a coprocess
+	  from being created in the parent shell has been fixed.
+08-09-05  An assignment of the form name1=name2 where name1 and name2
+	  are both compound variables causes name1 to get a copy of name2.
+	  name1+=name2 causes name2 sub-variables to be appended to name1.
+08-09-05  A bug in which unsetting a compound variable did not unset all
+	  the sub-variables has been fixed.
+08-09-01  A bug in the subshell cleanup code that could cause SIGSEGV has
+	  been fixed.
+06-08-26 +The SHLVL variable which is an environment variable used by bash
+          and zsh that gets incremented when the shell starts.
+08-08-25 +For an indexed array, a negative subscript now refers to offsets
+	  from the end so that -1 refers to the last element.
+08-08-24  An alignment error for shorts on 64 bit architectures has been fixed.
+08-08-22  If oldvar is a compound variable, typeset -C newvar=oldvar creates 
+	  newvar as a copy of oldvar.
+08-08-19 +The ALRM signal no longer cause the sleep builtin to terminate.
+08-08-13  When used in an arithmetic expression, the .sh.version variable  
+	  now produces a number that will be increasing for each release.
+08-08-11  A bug in which type instantiation with a compound assignment in
+	  a dot script in which the type is defined has been fixed. 
+08-08-07 +The -m option has been added to typeset to move or rename a
+	  variable.  Not documented yet.
+08-08-06  A bug in read when used in a loop when a prompt was specified
+	  when reading from a terminal has been fixed.
+08-08-01  A bug with the pipefail option in which a nested pipeline could
+	  cause an asynchronous command to block has been fixed.
+08-08-01  A for loop optimizer bug that treats .sh.lineno as an invariant
+	  has been fixed.
+08-07-30  A bug in which expanding compound variable that had a get discipline
+	  from with a here document could cause a syntax error has been fixed.
+08-07-18  A bug in which a nameref caused a local variable to be created
+	  rather than binding to an existing variable in the global scope
+	  has been fixed.
+08-07-17  A bug which occurred when a nameref was created from within a
+	  function that was  part of a pipeline has been fixed.
+08-07-14 +The compile option SHOPT_STATS was added. With this option the
+	  compound variable .sh.stats keeps usage statistics that could help
+	  with performance tuning.
+08-07-10 +The output of set now always uses a single line for each variable.
+	  For array variables, the complete set of values is now displayed.
+08-07-09 +The typeset -C option can be used with arrays to indicate that
+	  each element should default to a compound variable.
+08-07-08 +The %B format now outputs compound variables and arrays.  The
+	  alternate flag # can be used to cause output into a single line.
+08-07-03  When the window change signal, WINCH, is received, the current
+	  edit line is redrawn in place. 
+08-07-01  A bug in the handling of shared variables when inside an embedded
+	  type has been fixed.
+08-06-29  A bug in multiline edit mode which occurred when the prompt length
+	  was three characters or less has been fixed.
+08-06-23  A bug in which the SIGCLD was not be triggered when background
+	  jobs completed has been fixed.
+08-06-23  _KSH_VERSION added as a name reference to .sh.version.
+08-06-20  type now outputs 'special builtin' for special builtins.
+08-06-19  A couple of bugs in multi-dimensional arrays have been fixed.
+08-06-19  A bug in which a syntax error in a dot script could generated
+	  a syntax error in the next subsequent command has been fixed.
+08-06-17  Reduced the maximum function call depth to 2048 to avoid exceptions
+	  on some architectures.
+08-06-16  A bug in which printf "%B" could generate an exception when the
+	  specified variable was not set has been fixed.
+08-06-16 +When typeset -p is followed by variable names, it now displays
+	  the attributes names and values for the specific names.
+08-06-14  A bug that could effect the drawing of the screen from multiline
+	  emacs or gmacs mode when walking up the history file has been fixed.
+08-06-13  A bug in which a compound variable defined in a subshell could
+	  have side effects into the parent shell has been fixed.
+08-06-13  A number of bugs related to using .sh.level to set the stack from
+	  for DEBUG traps have been fixed.
+08-06-13 +The .sh.lineno variable has been added.  When .sh.level is changed
+	  inside a DEBUG trap, the .sh.lineno contains the calling line number
+	  for the specified stack frame.
+08-06-13  The .sh.level variable has been documented and now works.
+08-06-11 +The -C option has been added to read for reading compound command
+	  definitions from a file.
+08-06-11 +The . command is now permitted inside a compound command definition.
+	  The dot script can contain declaration commands and dot commands.
+08-06-09 +Add -C option to typeset so that typeset -C foo, is equivalent
+	  to foo=().
+08-06-09  Added -n warning message for typeset option orderings that are valid
+	  with ksh88 but not valid with ksh93, for example Lx5.
+08-06-09  A bug in which the return value for an assignment command containing
+	  a command substitution with that failed was zero when the assignment
+	  contained redirections has been fixed.
+08-06-09  A bug in the quoting of $ inside a ERE pattern ~(E)(pattern)
+	  has been fixed.
+08-06-06  A bug when processing `` command substitution with the character
+	  sequence \$' has been fixed.
+08-06-02 +When defining a type, the typeset -r attribute causes this field
+	  to be required to be specified for each instance of the type and
+	  does not allow a default value.
+08-06-02  Several bugs in which compound variables were modified by
+	  subshells have been fixed.
+08-05-22 +The ceil function has been added to the math functions.
+08-05-21  A bug in which a name reference defined in a function and passed
+	  as an argument to another function could cause an incorrect binding.
+08-05-21  A bug in freeing compound variables that are local to functions
+	  has been fixed.
+08-05-19 +The array expansions ${array[sub1..sub2]} and ${!array[sub1..sub2]}
+	  to expand to the value (or subscripts) for array between sub1 and
+	  sub2 inclusive.  For associative arrays, the range is based on
+	  location in the POSIX locale.  The .. must be explicit and cannot
+	  result from an expansion.
+08-05-15  The trap on SIGCLD is no longer triggered by the completion of
+	  the foreground job as with ksh88.
+08-05-14  A bug in the implementation of the editing feature added on 
+	  07-09-19 in emacs mode has been fixed.
+08-05-12  A bug in processing the test built-in with parenthesis has been
+	  fixed.
+08-05-12  The unset built-in now returns non-zero when deleting an array
+	  subscript that is not set.
+08-05-08 +Changing the value of HISTFILE or HISTSIZE will cause the old
+	  history file to be close and reopened with the new name or size.
+08-05-08  When FPATH is changed functions that were found via a path search
+	  will be searched for again.
+08-05-08  A parser bug in which reserved words and labels were recognized
+	  inside compound indexed array assignment after a new-line has
+	  been fixed.
+08-05-07  A bug in getopts when handling numerical option arguments has
+	  been fixed.
+08-05-07 +The typeset -S option was added for variables outside type
+	  definitions to provide a storage class similar to C static
+	  inside a function defined with function name.  When outside
+	  type definitions and outside a function, the -S option cause
+	  the specified variable so be unset before the assignment and
+	  before the remaining attributes are supplied.
+08-05-07  A bug that affected the cursor movement in multiline mode when
+	  a character was deleted from near the beginning of the any
+	  line other than the first.
+08-05-01  In multiline edit mode, the refresh operation will now clear
+	  the remaining portion of the last line.
+08-05-01  A bug in computing prompt widths for the edit modes for prompts
+	  with multibyte characters has been fixed.
+08-05-01  A bug in the multiline edit mode which could cause the current
+	  line to be displayed incorrectly when moving backwards from third
+	  or higher line to the previous line has been fixed.
+08-05-01  A bug in which options set in functions declared with the function
+	  name syntax were carried across into functions invoked by these
+	  functions has been fixed.
+08-04-30  A bug which could cause a coprocess to hang when the read end
+	  is a builtin command has been fixed.
+08-04-30 +The emacs and vi editors have been modified to handle window
+	  change commands as soon as they happen rather than waiting for
+	  the next command.
+08-04-28  A bug in which ${!x} did not expand to x when x was unset has been
+	  fixed.
+08-04-27  A bug in which the assignment x=(typeset -a foo=([0]=abc)) created
+	  x.foo as an associative array has been fixed.
+08-04-25  A bug in which $# did not report correctly when there were more
+	  than 32K positional parameters has been fixed.
+08-04-04  Choose the name _ as the sub-variable that holds type or instance
+	  specific data used by discipline functions.
+08-03-27  A bug in which the terminal group was not given back to the parent
+	  shell when the last part of a pipeline was handled by the parent shell
+	  and the other parts of the pipeline complete has been fixed. 
+	  The symptom was that the pipeline became uninterruptable.
+08-03-25  A bug in restricted mode introduced in ksh93s that caused scripts
+	  that did not use #! to executed in restricted mode has been fixed.
+08-03-25  A bug in which the pipefail option did not work for a pipeline
+	  within a pipeline has been fixed.
+08-03-24  A bug in which OPTIND was not set correctly in subshells has
+	  been fixed.
+08-03-24  A bug which could cause a memory exception when a compound variable
+	  containing an indexed array with only element 0 defined was expanded.
+08-03-20  A bug in which ${!var[sub].*} was treated as an error has been fixed.
+08-03-20  Associative array assignments of the form ([name]=value ...)
+	  now allow ; as well as space tab and new line to separate elements.
+08-03-18  A buffering problem in which standard error was sometimes
+	  not flushed before sleep has been fixed.
+08-03-17  A bug in which a signal sent to $$ while in a subshell would be
+	  sent to the subshell rather than the parent has been fixed.
+08-03-17 + A --default option added to set(1) to handle set +o POSIX semantics.
+	  set --state added as a long name alias for set +o.
+08-03-14  A bug in which using monitor mode from within a script could
+	  cause the terminal group to change has been fixed.
+08-03-10  The new ${...} command substitution will treat the trailing }
+	  as a reserved word even if it is not at the beginning of a command,
+	  for example, ${ date }.
+08-03-10  If the name of the ENV begins with /./ or ././ then the
+	  /etc/ksh.kshrc file will not be executed on systems that support
+	  this interactive initialization file.
+08-03-07  A bug in which ksh -i did not run the ENV file has been fixed.
+08-03-07  A bug in which ulimit did not always produce the same output as
+	  ulimit -fS has been fixed.
+08-03-04  A bug in multiline mode in emacs and vi mode which could cause the
+	  cursor to be on the wrong line when interrupt was hit has been fixed.
+08-03-03  The change made in ksh93s+ on 07-06-18 in which braces became
+	  optional for ${a[i]} inside  [[...]] was restored in the case
+	  where the argument can be a pattern.
+08-03-03  A bug in which creating a name reference to an associative array
+	  instance would fail when the subscript contained characters [ or
+	  ] has been fixed.
+08-02-29 +The redirection operator >; has been added which for non-special
+	  files, generates the output in a temporary file and writes the
+	  specified file only of the command has completed successfully.
+08-02-15  A bug in ${var/pattern/string} for patterns of the form ?(*) and +(*)
+	  has bee fixed.
+08-02-07  A bug in which test \( ! -e \) produced an error has been fixed.
+08-02-14 +The typeset -a option can now optionally be followed by the name
+	  of an enumeration type which allows subscripts to be enumerations.
+08-02-14 +The enum builtin which creates enumeration types has been added.
+08-02-12  The backoff logic when there are no more processes has been fixed.
+08-02-07  The -X option has been added to typeset.  The -X option creates
+	  a double precision number that gets displayed using the C99 %a
+	  format.  It can be used along with -l for long double.
+08-01-31  The -T option to typeset has been added for creating typed
+	  variables.  Also the -h and -S options have been added to
+	  typeset that are only applicable when defining a type.
+08-01-31  The prefix expansion operator @ has been added.  ${@name}
+	  expands to the type of name or yields the attributes.
+07-11-15  A bug in the macro expander for multibyte characters in which
+	  part of the character contains a file pattern byte has been fixed. 
+07-10-03  A bug in which : was not allowed as part of an alias name has been
+	  fixed.
+07-09-26  A bug in which appending a compound variable to a compound variable
+	  or to an index array didn't work has been fixed.
+07-09-19  In both emacs and vi edit mode, the escape sequence \E[A (usually
+	  cursor up, when the cursor is at the end of the line will fetch
+	  the most recent line starting with the current line.
+07-09-18  The value of ${!var} was correct when var was a reference to an
+	  array instance.
+07-09-18  The value of ${!var[sub]} was not expanding to var[sub] and this
+	  was fixed.  It also fixed ${name} where name is a name reference
+	  to var[sub].
+07-09-18 +It is now legal to create a name reference without an initialization.
+	  It will be bound to a variable on the first assignment.
+07-08-30 +A discipline function can be invoked as ${x.foo} and is equivalent
+	  to ${ x.foo;} and can be invoked as x.foo inside ((...)).
+07-07-09  A bug in which typeset -a did not list indexed arrays has been
+	  fixed.
+07-07-03 +The command substitution ${ command;} has been added.  It behaves
+	  like $(command) except that command is executed in the current
+	  shell environment.  The ${ must be followed by a blank or an
+	  operator.
+
+08-04-17  --- Release ksh93s+  ---
+08-04-17  A bug in which umask was not being restored correctly after a
+          subshell has been fixed.
+08-04-15  A bug in which sending a STOP signal to a job control shell started
+	  from within a shell function caused cause the invoking shell to
+	  terminate has been fixed.
+08-04-11  A bug which caused $(exec > /dev/null) to go into an infinite loop
+	  has been fixed.
+08-03-27  A bug in which typeset -LZ was being treated as -RZ has been fixed.
+08-03-06  A bug with ksh -P on systems that support the the profile shell,
+          in which it would exit after running a non-builtin has been fixed.
+08-01-31  A bug in which command substitution inside ((...)) could cause
+	  syntax errors or lead to core dumps has been fixed.
+08-01-17  A bug in which discipline functions could be deleted when invoked
+	  from a subshell has been fixed.
+08-01-17  A bug in which a command substitution consisting only of
+	  assignments was treated as a noop has been fixed.
+08-01-17  A bug in which discipline functions invoked from withing a
+	  compound assignment could fail has been fixed.
+08-01-16  Incomplete arithmetic assignments, for example ((x += )), now
+	  generate an error message.
+08-01-16  A bug in which a set discipline defined for a variable before
+	  an array assignment could cause a core dump has been fixed. 
+08-01-03  A bug in on some systems in which exit status 0 is incorrectly
+	  returned by a process that catches the SIGCONT signal is stopped 
+	  and then continued.
+07-12-13  A race condition in which a program that has been stopped and then
+	  continued could loose the exit status has been fixed.
+07-12-12  Code to check for file system out of space write errors for all
+	  writes has been added.
+07-12-11  A bug in the macro expander for multibyte characters in which
+	  part of the character contains a file pattern byte has been fixed. 
+07-12-06  A bug in the emacs edit mode when multiline was set that output
+	  a backspace before the newline to the screen has been fixed.
+07-12-04  A bug in which using <n>TAB after a variable name listing expansion
+	  in the edit modes would cause the $ to disappear has been fixed.
+07-11-28  A bug in which setting IFS to readonly could cause a subsequent
+	  command substitution to fail has been fixed.
+07-11-27  A work around for a gcc 4.* C99 "feature" that could cause a job
+	  control shell to go into an infinite loop by adding the volatile
+	  attribute to some auto vars in functions that call setjmp().
+07-11-27  A bug in which the shell could read ahead on a pipe causing the
+	  standard input to be incorrectly positioned has been fixed.
+07-11-27  A bug in which compound variable UTF-8 multibyte values were not
+	  expanded or traced properly has been fixed.
+07-11-21  A bug where an unbalanced '[' in a command argument was not treated
+	  properly has been fixed.
+07-11-15  A bug in which compatibility mode (no long option names) getopts(1)
+	  incorrectly set the value of OPTARG for flag options has been fixed.
+07-11-15  A bug in which "hash -- name" treated "--" as an invalid name operand
+	  has been fixed.
+07-11-15  typeset now handles "-t -- [-r] [--]" for s5r4 hash(1) compatibility.
+07-11-15  A bug in which the umask builtin mis-handled symbolic mode operands
+	  has been fixed.
+07-11-15  Bugs in which shell arithmetic and the printf builtin mis-handled the
+	  signs of { -NaN -Inf -0.0 } have been fixed.
+07-11-15 +The full { SIGRTMIN SIGRTMIN+1 ... SIGRTMAX-1 SIGRTMAX } range
+	  of signals, determined at runtime, are now supported.
+07-11-15  A bug in which creating an index array with only subscript 0 created
+	  only a simple variable has been fixed.
+07-11-14  A bug in which appending to an indexed array using the form
+	  name+=([sub]=value) could cause the array to become an associative
+	  array has been fixed.
+07-11-14  A bug in which typeset without arguments could coredump if a
+	  variable is declared as in indexed array and  has no elements has
+	  been fixed.
+07-11-14  A bug in which creating a local SECONDS variable with typeset in
+	  a function could corrupt memory has been fixed.
+07-11-14  A bug which could cause a core dump when a script invoked by name
+	  from a function used compound variables has been fixed.
+07-11-05  A bug in which printf %d "'AB" did not diagnose unconverted characters
+	  has been fixed.
+07-11-05  printf %g "'A" support added for all floating point formats.
+07-11-01  A bug in which typeset -f fun did not display the function definition
+          when invoked in a subshell has been fixed.
+07-10-29  The sleep builtin was fixed so that all floating point constants
+	  are valid operands.
+07-10-10  A bug in which the locale was not being restored after
+          LANG=value command has been fixed.
+07-09-20  A bug in which a nameref to a compound variable that was local
+	  to the calling function would not expand correctly when displaying
+	  is value has been fixed.
+07-09-19  A bug which cause cause a core dump if .sh.edchar returned
+	  80 characters or more from a keyboard trap has been fixed.
+07-09-14  A bug in which could cause a core dump when more than 8 file
+	  descriptors were in use has been fixed.
+07-09-10  A bug in which creating a name reference to an instance of
+	  an array when the array name is itself a reference has been fixed.
+07-09-10  The file completion code has been modified so that after an = in
+	  any word, each : will be considered a path delimiter.
+07-09-06  A bug in which subprocess cleanup could corrupt the malloc() heap
+          has been fixed.
+07-08-26  A bug in which a name reference to an associative array instance
+	  could cause the subscript to be evaluated as an arithmetic expression
+	  has been fixed.
+07-08-22  A bug in which the value of an array instance was of a compound
+	  variable was not expanded correctly has been fixed.
+07-08-14  A bug which could cause a core dump when a compound assignment was
+	  made to a compound variable element with a typeset -a attribute
+	  has been fixed.
+07-08-08  A bug in which a trap ignored in a subshell caused it to be
+	  ignored by the parent has been fixed.
+07-08-07  A bug in which the set command would generated erroneous output
+	  for a variable with the -RZ attribute if the variable name had been
+	  passed to a function has been fixed.
+07-08-02  A bug in which read x[1] could core dump has been fixed.
+07-08-02  A second bug in which after read x[sub] into an associative array
+	  of an element that hasn't been assigned could lead to a core dump
+	  has been fixed.
+07-07-31  A bug in which a pipeline that completed correctly could have
+	  an exit status of 127 when pipefail was enabled has been fixed.
+07-07-09 +The SHOPT_AUDIT compile option has been added for keyboard logging.
+07-06-25  In vi insert mode, ksh no longer emits a backspace character
+	  before the carriage return when the newline is entered. 
+07-06-25  A bug in which pipefail would cause a command to return 0
+	  when the pipeline was the last command and the failure happened
+	  on a component other than the last has been fixed.
+07-06-25  A bug in the expansion of ${var/pattern/rep} when pattern or rep
+	  contained a left parenthesis in single quotes has been fixed.
+07-06-18  The braces for a subscripted variable with ${var[sub]} are now
+	  optional when inside [[...]], ((...)) or as a subscript.
+07-05-28  A bug in brace expansion in which single and double quotes did
+          not treat the comma as a literal character has been fixed.
+07-05-24  The -p option of whence now disables -v.
+07-05-23  Several bug fixes in compound variables and arrays of arrays
+	  have been made.
+07-05-15  A bug in which the %B format of printf was affected  by the
+	  locale has been fixed.
+07-05-14  A bug in which  was not removed in the replacement pattern with
+	  ${var/pattern/rep} when it was not followed by  or a digit has
+	  been fixed.
+07-05-10  A bug in which ksh -R file core dumped if no script was specified
+	  has been fixed.  it not displays an error message.
+07-05-07  Added additional Solaris signals to signal table.
+07-04-30  A bug in which a pipeline with command substitution inside a
+	  function could cause a pipeline that invokes this function to
+	  hang when the pipefail option is on has been fixed.
+07-04-30 +Added -q to whence.
+07-04-18  A small memory leak with each redirection of a non-builtin has
+	  been fixed.
+07-03-08  A bug in which set +o output command line options has been fixed.
+07-03-08  A bug in which an error in read (for example, an invalid variable
+	  name), could leave the terminal in raw mode has been fixed.
+07-03-06  A bug in which read could core dump when specified with an array
+	  variable with a subscript that is an arithmetic expression has
+	  been fixed.
+07-03-06  Several serious bugs with the restricted shell were reported and
+	  fixed.
+07-03-02  If a job is stopped, and subsequently restarted with a CONT
+	  signal and exits normally, ksh93 was incorrectly exiting with
+	  the exit status of the stop signal number.
+07-02-26 +M-^L added to emacs mode to clear the screen.
+07-02-26  A bug in which setting a variable readonly in a subshell would
+	  cause an unset error when the subshell completed has been fixed. 
+07-02-19 +The format with printf uses the new = flag to center the output.
+07-02-19  A bug in which ksh93 did not allow multibyte characters in
+	  identifier names has been fixed.
+07-02-19  A bug introduced in ksh93 that causes global compound variable
+	  definitions inside functions to exit with "no parent" has been fixed.
+07-02-19  A bug in which using compound commands in process redirection
+	  arguments would give syntax errors <(...) and >(...) has been fixed.
+07-01-29  A bug which caused the shell to core dump which can occur when a
+	  built-in exits without closing files that it opens has been fixed.
+07-01-26  A bug in which ~(E) in patterns containing  that are not inside ()
+	  has been fixed.
+
+06-12-29  --- Release ksh93s  ---
+06-12-29  A bug in which the value of IFS could be changed after a command
+	  substitution has been fixed. 
+06-12-22 +/dev/(tcp|udp|sctp)/HOST/SEVRICE now handles IPv6 addresses on
+	  systems that provide getaddrinfo(3).
+06-12-19 +A -v option was added to read.  With this option the value of
+	  the first variable name argument will become the default value
+	  when read from a terminal device. 
+06-11-20  A bug in which "${foo[@]:1}}" expands a null argument (instead of
+	  no argument), when foo[0] is not empty has been fixed. 
+06-11-16  The discipline functions have been modified to allow each subscript
+	  to act independently.  Currently the discipline function will not
+	  be called when called from a discipline function of the same variable.
+06-11-14  A bug which could cause a core dump if a file descriptor for
+	  an internal file was closed from with a subshell has been fixed.
+06-10-30 +The redirections <# pattern, and <## pattern have been added.
+	  Both seek forward to the beginning of the next line that contains
+	  the pattern.  The <## form copies the skipped portion to standard
+	  output.
+06-10-26 +On systems that support stream control transport, the virtual file
+	  name /dev/sctp/host/port can now be used to establish connections.
+06-10-26 +The printf modifier # when used with d produces units in thousands
+	  with a single letter suffix added.  The modifier # when used with
+	  the i specification provides units of 1024 with a two letter suffix.
+06-10-24  The value of $! is now set to the process id of a job put
+	  into the background with the bg command as required by POSIX.
+06-10-23  A bug in which the value of $! was affected by a background
+	  job started from a subshell has been fixed.
+06-10-23  A bug in ${var:offset:len} in multibyte locales has been fixed.
+06-10-15 +The remaining math functions from C99 were added for any system
+	  that supports them.
+06-10-13  The klockwork.com software detected a few coding errors that
+	  have been fixed.
+06-10-12  A bug when skipping over `...` with ${x:=`...`} when x is set
+	  has been fixed.
+06-10-11  A bug in process floating constants produced by the %a format
+	  of printf has been fixed.
+06-10-06  A bug in which IFS was not being restored correctly in some
+	  cases after a subshell has been fixed.
+06-10-06  A bug in which pipefail was not detecting some failures in
+	  pipelines with 3 or more states has been fixed.
+06-10-03  A bug in the processing of >(...) with builtins which could
+	  cause the builtin to hang has been fixed.
+06-10-03  A bug in the for loop optimizer which causes >(...) process
+	  substitution to be ignored has been fixed.
+06-09-17 +The -a option was added to typeset for indexed arrays.  This
+	  is only needed when using the ([subscript]=value ...) form.
+06-09-06 +The showme option was added.  Each simple command not beginning
+	  with a redirection and not occurring with in the while, until, if,
+	  select condition can be preceded by a semi-colon which will
+	  be ignored when showme is off.  When showme is on, any command
+	  preceded by a colon will be traced but not executed.
+06-08-16 +As a new feature, a leading ~(N) on a pattern has no effect 
+	  except when used for file expansion.  In this case if not
+	  matches are found, the pattern is replaced by nothing rather
+	  than itself.
+06-08-11  A bug in the expansion of ${.sh.match[i]:${#.shmatch[i]}} has
+	  been fixed.
+06-08-10 +The read builtin options -n and -N have been modified to treat
+          the size as characters rather than bytes unless storing into a
+	  binary (typeset -B) variable.
+06-07-27 +When the here document operator << is followed directly by a #
+	  rather than a -, the first line of the here-document determines
+	  how much whitespace is removed for each line.
+06-07-26  A bug in the C-shell history (enabled with set -H) in which the
+	  history event !$ was not processed has been fixed.
+06-07-21  A bug on some systems in which assigning PATH on a command line
+	  would not take effect has been fixed.
+06-07-20  Add ksh93 and rksh93 as allowable names for ksh binaries.
+06-07-20  Removed the SHOPT_OO compilation option which was only partially
+	  implemented.
+06-07-20  The ability to use egrep, grep, and fgrep expressions within
+	  shell patterns has been documented.
+06-07-17  A bug with arithmetic command expressions for locales in which
+	  the comma is a thousands separator has been fixed. 
+06-07-13 +The default HISTSIZE was increased from 128 to 512.
+06-07-13  A multibyte problem with locales that use shift codes has been fixed.
+06-06-23  A number of bug fixes for command, file, and variable completion
+	  have been mode.
+06-06-20 +Floating point division by zero now yields the constant Inf or -Inf
+	  and floating functions with invalid arguments yield NaN. 
+06-06-20 +The floating point constants Inf and NaN can be used in arithmetic
+	  expressions.
+06-06-20 +The functions isinf(), isnan(), tanhl() have been added for
+	  arithmetic expressions.
+06-06-13  Internal change to use ordering for variables instead of hashing
+	  to speed up prefix matching.
+06-06-13  A window between fork/exec in which a signal could get lost
+	  and cause a program to hang has been eliminated
+06-06-13  A bug in edit completion with quoted strings has been fixed.
+06-06-07  The restricted options can now be enabled by set as well as on
+	  the command line.  Once set, it can not be disabled.
+06-06-04  Modified built-in binding so that for systems for which /bin
+          and /usr/bin are the same, a builtin bound to /bin will get
+	  selected when either /bin or /usr/bin is scanned.
+06-06-04 +Added literal-next character processing for emacs/gmacs mode. 
+	  This change is not compatible with earlier versions of ksh93
+          and ksh88 when the stty lnext is control-v.  The sequence
+	  escape-control-v will display the shell version.
+06-05-31 +Modified emacs and vi mode so that entering a TAB after a partial
+	  TAB completion, generates a listing of possible completions.
+	  After the second TAB, a number followed by a TAB will perform
+	  the completion with the corresponding item.
+06-05-19 +Modified arithmetic so that conversions to strings default to
+	  the maximum number of precision digits.
+06-05-16  Bug fixes for multibyte locales. 
+06-05-10  The =~ operator was added to [[...]] and  [[ string ~= ERE ]]
+	  is equivalent to [[ string == ~(E)ERE ]].
+06-04-25  A bug in the vi edit mode which could cause the shell to core dump
+	  when switching from emacs mode.
+06-04-17  A bug in which using LANG or LC_ in assignment lists with builtins
+	  did not restore the localed correctly has been fixed.
+06-04-04  A bug in which discipline functions could not be added to variables
+	  whose names started with .sh has been fixed.
+06-03-28 +The -s option to typeset was added to modify -i to indicate short
+	  integers.
+06-03-28  A bug in which variables assignment lists before functions
+	  defined with function name were not passed on the functions
+	  invoked by this function has been fixed. 
+06-03-28  A bug in which name references defined within a function defined
+	  with function  name could not be used with compound variables has
+	  been fixed.
+06-03-27  A bug in which read <&p (print >&p) would cause the coprocess input
+	  (output) pipe to close before reading from (after writing to)
+          it has been fixed.
+06-02-28  A bug in which stopping a job created with the hist builtin command
+	  would create a job that could not be restarted has been fixed.  
+
+06-01-24  --- Release ksh93r  ---
+06-01-24  A bug in which running commands with standard output closed would
+	  not work as expected has been fixed.
+06-01-23  A bug in which print -u<n> could fail when file descriptor <n> was
+	  open for writing has been fixed.
+06-01-19  The ?: arithmetic operator fixed to work when the operation after
+	  the colon was an assignment.
+05-12-24  A bug which could lead to a core dump when elements of a compound
+	  variable were array elements, i.e. foo=(bar=(1 2)), has been fixed.
+05-12-13  An arithmetic bug in which x+=y+=z was not working has been fixed. 
+05-12-13  An arithmetic bug in which x||y was returning x when x was non-zero
+	  rather than 1 has been fixed.
+05-12-07 +The aliases for integer and float have been changed to use attributes
+	  -li and -lE to handle long long and long double types.
+05-12-07 +The histexpand (-H) option has been added which allows C-shell
+	  style history expansions using the history character !.
+05-12-07 +The multiline option was added which changes that way the edit
+	  modes handle lines longer than the window width.  Instead of
+	  horizontal scrolling, multiple lines on the screen are used.
+05-12-05  The whence builtin now returns an absolute pathname when the
+          command is found in the current directory.
+05-11-29  A bug which caused ksh -c '[[ ! ((' to core dump rather than
+	  report a syntax error has been fixed.
+05-11-29  A bug when reading fixed length records into typeset -b variables
+	  which caused a zero byte to terminate the value has been fixed.
+05-11-22 +The ability to seek to an offset within a file has been added
+	  with the new I/O redirection operators, <#  and >#.  Currently,
+	  these redirection operators must be followed by ((expr))
+	  but in a future release, it should be able to used to seek forward
+	  to the specified shell pattern.  In addition $(n<#) expands to the
+	  current byte offset for file descriptor n.
+05-11-22 +The .sh.match array variable is now set after each [[ ... ]]
+	  pattern match.  Previously it was only set for substring matches.
+05-10-17  A bug in which the library path variable could be prefixed
+          with a directory when a .path file was not encountered in
+	  the directory of the executable has been fixed.
+05-09-15  A for/while loop optimizer bug in which $OPTIND was not
+	  correctly expanded has been fixed.
+05-09-05  A bug in which a history command that invoked a history
+	  command could go into an infinite loop has been fixed.
+05-08-31 +In the case that IFS contains to adjacent new-lines so that
+	  new-line is not treated as a space delimiter, only a single
+	  new-line is deleted at the end of a command substitution.
+05-08-19 +When a tilde substitution expands to the / directory and is
+	  followed by a /, it is replaced by the empty string.
+05-08-16  A bug in which n<&m did not synchronize m has been fixed.
+05-08-16  A bug in which process substitution  ( <() and >() ) was not
+	  working within for and while loops has been fixed.
+05-07-24  A bug in which the pattern ~(E)(foo|bar) was treated as a syntax
+	  error has been fixed.
+05-07-24  A bug in completion with <n>=, where n was the one of the
+	  previous selection choices has been fixed.
+05-07-21  A bug with multibyte input when no edit mode was specified which
+	  caused the input line to shift left/right has been fixed.
+05-06-24  A race condition which could cause the exit status to get lost
+	  on some fast systems has been fixed.
+05-06-21  A bug in which nested patterns of the form {m,n}(pat) would cause
+	  syntax errors has been fixed.
+05-06-21  A bug in the macro expander has been fixed which could cause a
+          syntax error for an expansion of the form ${x-$(...)} when
+	  x is set and the command substitution contained certain strings.
+05-06-08 +On systems for which echo does not do System V style  expansions,
+	  the -e option was added to enable these expansion.
+05-06-08  A bug in which ${var op pattern} to not work when inside an
+	  arithmetic expression has been fixed.
+05-05-23 +An extension to shell patterns that allows matching of nested
+	  groups while skipping over quoted strings has been added.
+05-05-18  A bug in which the line number for errors was not correct for
+          functions loaded from FPATH has been fixed.
+05-04-18  A bug in which the exit status $? is not set when a trap triggered
+	  by the [[...]] command is executed has been fixed.
+05-04-08 +Redirection operators can be directly preceded with {varname}
+	  with no intervening space, where varname is a variable name which
+	  allows the shell to select a file descriptor > 10 and store it
+	  into varname.
+05-04-08 +SHOPT_CMDLIB_BLTIN=1 now includes <cmdlist.h> generated table.
+05-04-07 +[[ -o ?option ]] is true if "option" is a supported option.
+05-04-05  A bug in handling file completion with spaces in the names
+          has been fixed.
+05-03-25 +The SIGWINCH signal is caught by default to keeps the LINES and
+	  COLUMNS variables in sync with the actual window size.
+05-03-25 +Building ksh with SHOPT_REMOTE=1 causes ksh to set --rc if stdin is
+	  a socket (presumably part of a remote shell invocation.)
+05-03-25 +Building ksh with SHOPT_SYSRC=1 causes interactive ksh to source
+	  /etc/ksh.kshrc (if it exists) before sourcing the $ENV file.
+05-03-25 +{first..last[..incr][%fmt]} sequences added to brace expansions
+	  when braceexpand is enabled.
+05-03-03  A bug where a SIGCHLD interrupt could cause a fifo open to fail has
+	  been fixed.
+05-02-25  A bug in which a builtin command run in the background could
+	  keep a file descriptor open which could cause a foreground
+	  process to hang has been fixed.
+05-02-24  A bug where builtin library commands (e.g., date and TZ) failed to
+	  detect environment variable changes has been fixed.
+05-02-22 +The read builtin and word splitting are now consistent with respect
+	  to IFS -- both treat IFS as field delimiters.
+05-02-22 +The read builtin no longer strips off trailing delimiters that
+	  are not space characters when there are fewer variables than fields.
+05-02-17  A builtin bug on systems where dlsym(libcmd) returns link-time
+	  bindings has been fixed.
+05-02-12  A bug in which the lib_init() function for .paths BUILTIN_LIB
+	  libraries was not called has been fixed.
+05-02-06  A bug on some systems in which moving the write end of a co-process
+	  to a numbered file descriptor could cause it to close has been fixed. 
+05-02-06  A bug in the vi-edit mode in which the character under the cursor
+	  was not deleted in some cases with the d% directive has been fixed.
+05-02-06  A bug where external builtin stdout/stderr redirection corrupted
+          stdout has been fixed.
+05-02-04  A bug where times formatting assumed CLK_TCK==60 has been fixed.
+
+05-01-11  --- Release ksh93q  ---
+05-01-11  A bug in the integral divide by zero check has been fixed.
+05-01-11 +The -l option has been added to read /etc/profile and
+	  $HOME/.profile, if they exist, before the first command.
+05-01-11  An argument parsing bug that caused `kill -s x -- n' to fail has
+	  been fixed.
+05-01-11 +The .paths file, introduced in ksh93m, which can appear in
+	  any directory in PATH, now allows a line of the form 'BUILTIN_LIB=.'
+	  When a command is searched for this directory, and the full path
+	  matches the path of the built-in version of the command (listed
+	  by the 'builtin' command) then the built-in version of the command
+	  is used.  When ksh is built with SHOPT_CMDLIB_DIR=1 then all libcmd
+	  functions become builtins with the '/opt/ast/bin/' directory prefix.
+05-01-10  A bug in which a nameref to a compound name caused a core dump has
+	  been fixed.
+05-01-09  A bug in which some SIGCHLD interrupts (from child processes exiting)
+	  caused a fatal print/echo error diagnostic has been fixed.
+04-12-24  A bug in which some SIGCHLD interrupts (from child processes exiting)
+          corrupted the internal process/job list, sometimes causing the shell
+	  to hang, has been fixed.
+04-12-01  A bug in which typeset -Fn truncated less than n digits for large
+	  numbers has been fixed.
+04-11-25  A bug in which standard error could be closed after a redirection
+	  to /dev/stderr has been fixed.
+04-11-17  A bug in which an expansion of the form ${array[@]:3} could expand
+          to ${array[0]} when ${array[3]} was not set has been fixed.
+04-10-22 +The -E or -orc command line option reads ${ENV-$HOME/.kshrc} file.
+04-10-22 +`-o foo' equivalent to `+o nofoo', `-o nobar' equivalent to `+o bar'.
+          `--foo' equivalent to `-o foo', `--nofoo' equivalent to `+o foo'
+04-10-05 +The .paths file, introduced in ksh93m, which can appear in
+	  any directory in PATH, now allows a line of the form
+	  'BUILTIN_LIB=libname'.  When a command is searched for this directory,
+	  the shared library named by libname will first be searched for a
+	  built-in version of the command.
+04-09-03  <<< here documents now handle quotes in the word token correctly. 
+04-08-08 +The maximum size for read -n and and read -N was increased from
+	  4095 to 32M.
+04-08-04 +printf %q was modified so that if an no operand was supplied, no
+	  no output would be generated rather than a quoted empty string.
+04-08-01 +The -n and -N options of the read builtin has been modified
+	  when reading variables with the binary attribute so that the
+	  data is stored directly rather than through assignment.
+04-08-01 +The shcomp command has been modified to process alias commands
+	  under some conditions.
+04-07-31 +The .sh.match variable added in ksh93l, now works like other
+	  indexed arrays.
+04-07-08  A loop optimizer bug which occurs when typeset is used in
+	  a for or while loop inside a function has been fixed.
+04-06-24 +The number of subexpressions in a pattern was increased to 64
+	  from the current number of 20.
+04-06-17 +The -t option to read was modified to allow seconds to be
+	  specified as any arithmetic expression rather than just
+	  an integral number of seconds, for example even -t 'sin(.5)'
+	  is now valid.
+04-06-16  Two small memory leak problems were fixed.
+04-06-15  A bug in ${var/pattern/"string"} which occurred when string
+	  contained pattern matching characters has been fixed.
+04-05-08  printf $'%d produced an erroneous error message and has
+	  been fixed.
+04-05-24  A bug in which an associative array without any elements could
+	  cause a core dump when a script with an associative array with
+	  the same name was declared in a script invoked by name has
+	  been fixed.
+04-05-11  A bug in which an exec statement could close the script that
+	  is being processed in a script that is run by name causing
+	  a failure has been fixed.
+04-04-28 +If the first character of assignment to an integer variable was 0,
+          the variable had been treated as unsigned.  This behavior was
+          undocumented and has been removed.
+04-04-05  A bug in which the positioning of standard input could be incorrect
+	  after reading from standard input from a subshell has been fixed.
+04-03-30  A bug in the for loop optimizer which in rare cases could cause
+	  memory corruption has been fixed.
+04-03-29 +The preset alias source='command .' has been added.
+04-03-29  A bug introduced in ksh93p on some systems in which invoked by
+	  name with #! on the first line would not get the signals handling
+	  initialized correctly has been fixed. 
+04-03-29  A bug introduced in ksh93p in which a HUP signal received by
+	  a shell that is a session group leader was not passed down to
+	  its children has been fixed.
+
+04-02-28  --- Release ksh93p  ---
+04-02-28 +The ability to apply an append discipline to any variable has
+	  been added.
+04-02-14  A bug in which the exportall option (set -a) would cause incorrect
+	  results for arrays has been fixed.
+04-02-02  A bug in which an exported array would pass more than
+	  the first element to a script invoked by name has been fixed.
+04-02-02  A bug on some systems in which name=value pairs preceding a script
+	  invoked by name was not getting passed to the script has been fixed.
+04-01-20  A bug in which an unset discipline function could cause a core
+	  dump on some systems has been fixed.
+04-01-12  A bug in which a continue or break called outside a loop from
+	  inside a function defined with name() syntax could affect 
+	  the invoking function has been fixed.
+04-01-08  If a command name begins with ~, only filename completion will be
+	  attempted rather than pathname completion using the builtin editors. 
+04-01-08  A bug in the vi edit mode in which the wrong repeat count on
+	  multiple word replacements with the . directive has been fixed.
+04-01-06  Backspace characters are now handled correctly in prompt strings.
+04-01-06 +The getopts builtin has been modified to accept numerical
+	  arguments of size long long on systems that support this.
+04-01-06  A bug in which unsetting all elements of an associative array
+	  would cause it to be treated as an indexed array has been fixed.
+03-12-15  A bug in which a quoted string ending with an unescaped $ would
+	  delete the ending $ in certain cases has been fixed.
+03-12-05  A bug in which the shell could hang when set -x tracing a command
+	  when an invalid multibyte character is encountered has been fixed. 
+03-12-05  On some systems, if the KEYBD trap is set, then commands that use
+	  the meta key were not processed until return was hit.  This
+	  has been fixed.
+03-12-05  A problem which occurred when the login shell was not a group
+	  leader that could cause it to fail has been fixed.
+03-12-05  A problem in which a shell could core dump after receiving a signal
+	  that should cause it to terminate while it was in the process
+	  of acquiring more space has been fixed.
+03-12-05 +If ENV is not specified, the shell will default to $HOME/.kshrc
+	  for interactive shells.
+03-11-21  A bug introduced in ksh93o in which the DEBUG trap could get
+	  disabled after it triggered has been fixed. 
+03-11-04  A bug in which using arithmetic prefix operators ++ or -- on a
+	  non-lvalue could cause a core dump has been fixed.
+03-11-04  A bug in which leading zeros were stripped from variable
+	  expansions within arithmetic computation to avoid being treated
+	  as octal constants when they should not have, has been fixed.
+03-10-08  A bug introduced in ksh93o in which a large here document inside
+	  a function definition could get corrupted has been fixed.
+03-09-22  A bug in which the .get discipline function was not being
+	  called when a string variable was implicitly referenced from
+	  within a numerical expression has been fixed.
+03-09-22  A bug in which a script without a leading #! could get executed
+	  by /bin/sh rather than the current shell on some systems has
+	  been fixed.
+03-09-12 +To improve conformance with ksh88, leading zeros will be ignored
+	  when getting the numerical value of a string variable so that
+	  they will not be treated as octal constants.
+03-09-03 +The builtin kill command now processes obsolete invocations
+	  such as kill -1 -pid.
+03-09-02  The restriction on modifying FPATH in a restricted shell (sh -r)
+	  has been documented.
+03-09-02 +The restricted shell (sh -r) has been modified to disallow
+	  executing command -p.
+03-08-07  A bug in which the KEYBD trap was not being invoked when
+	  characters with the 8th bit set has been fixed.
+03-08-02  A parser bug introduced in ksh93o which caused the character
+	  after () in a Posix function definition to be skipped 
+	  when reading from standard input has been fixed.
+03-08-01  A bug in which "${foo#pattern}(x)" treated (x) as if it were
+	  part of the pattern has been fixed.
+03-08-01 +The command -x option has been modified so that any trailing
+	  arguments that do expand to a single word will be included
+	  on each invocation, so that commands like command -x mv * dir
+	  work as expected.
+
+03-07-20  --- Release ksh93o+  ---
+03-07-20  A bug in which could cause memory corruption when a posix
+	  function invoked another one has been fixed.
+03-07-15  A bug in which a file descriptor>2 could be closed before
+	  executing a script has been fixed.
+03-07-15  A parsing error for <() and >() process substitutions inside
+	  command substitution has been fixed.
+03-07-15  A parsing error for patterns of the form {...}(...) when
+	  used inside ${...} has been fixed.
+03-07-15  An error in which expanding an indexed array inside a compound
+	  variable could cause a core dump has been fixed.
+03-07-15  A bug in which on rare occasions a job completion interrupt
+	  could cause to core dump has been fixed.
+03-06-26  A bug in which process substitution embedded within command
+	  substitution would generate a syntax error has been fixed.
+03-96-23  A bug in which ${@:offset:len} could core dump when there
+	  were no arguments has been fixed.
+03-96-23  A bug in which ${X[@]:offset:len} could core dump when X
+	  was unset has been fixed.
+03-06-22 +The -x option was added to the command builtin.  If this
+	  option is on, and the number of arguments would exceed ARG_MAX,
+	  the command will be invoked multiple times with a subset of
+	  the arguments.  For example, with alias grep='command -x grep,
+	  any number of arguments can be specified.
+03-06-14  A bug in which could cause a core dump on some systems with
+	  vi and emacs editors with the MULTIBYTE option has been fixed.
+03-06-06  A bug in which the shell could core dump when a script was
+	  run from its directory, and the script name a symlink to a file
+	  beginning with .., has been fixed.
+03-06-05  A bug in which the shell could core dump when a child process
+	  that it is unaware of terminates while it is calling malloc()
+	  has been fixed.
+03-06-02 +An option named globstar (set -G) has been added.  When enabled,
+	  during pathname expansion, any component that consists only of ** is
+	  matches all files and any number of directory levels.
+03-05-30  A bug in which the PATH search could give incorrect results when
+	  run from directory foo and PATH contained .:foo:xxx has been fixed.
+03-05-29 +Some changes were made to the code that displays the prompt in edit 
+	  mode to better handle escape sequences in the prompt.
+03-05-27  I added = to the list of characters that mark the beginning of
+	  a word for edit completion so that filenames in assignments
+	  can be completed.
+03-05-20  A bug in which read -N could hang on some systems when reading
+	  from a terminal or a pipe has been fixed.
+03-05-19  A bug in which the output of uname from a command substitution
+	  would go to the standard output of the invoking command when
+	  uname was invoked with a non-standard option has been fixed.
+03-05-19  A job control bug which would cause the shell to exit because 
+	  it hadn't take back the terminal has been fixed.  The bug
+	  could occur when running a function that contained a pipeline
+	  whose last element was a function.
+03-05-19  A job control timing bug introduced in ksh93o on some systems
+	  which could cause a pipeline to hang if the first component
+	  completed quickly has been fixed.
+03-05-13 +The read builtin has been modified so that the builtin editors
+	  will not overwrite output from a previous incomplete line. 
+03-05-13  A bug in which the name of an identifier could have the string
+	  .sh. prefixed to it after expanding a variable whose name begins
+	  with .sh. has been fixed.
+03-05-13  A bug in the expansion of $var for compound variables in which
+	  some elements would not be output when the name was a prefix
+	  of another name in the compound variable has been fixed.
+03-05-08  The last item in the ksh93o release on 03-01-02 has been
+	  altered slightly to preserve the leading 0's when the
+	  preceding character is a digit.  Thus, with typeset -LZ3 x=10,
+	  $(( 1$x)) will be 1010 whereas $(( $x) will be 10.
+03-04-25  A bug in which if x is a name reference, then nameref y=x.foo
+	  did not follow x has been fixed.
+
+03-03-18  --- Release ksh93o  ---
+03-03-18 +A -N unary operator was added to test and [[...]] which returns
+	  true if the file exists and the file has been modified since it
+	  was last read.
+03-03-18 +The TIMEFORMAT variable was added to control the format for
+	  the time compound command.  The formatting description is
+	  described in the man page.
+03-03-06 +A -N n option was added to read which causes exactly n bytes
+	  to be read unlike -n n which causes at most n bytes to be read.
+03-03-03 +Three new shell variables were added.  The variable .sh.file
+	  stores the full pathname of the file that the current command
+	  was found in.  The variable .sh.fun names the current function
+	  that is running.  The variable .sh.subshell contains the depth
+	  of the current subshell or command substitution.
+03-03-03 +When the DEBUG trap is executed, the current command line after
+	  expansions is placed in the variable .sh.command.  The trap
+	  is also now triggered before each iteration of a for, select,
+	  and case command and before each assignment and redirection.
+03-02-28 +Function definitions are no longer stored in the history file so
+	  that set -o nolog no longer has any meaning.
+03-02-28 +All function definitions can be displayed with typeset -f not
+	  just those stored in the history file.  In addition, typeset +f
+	  displays the function name followed by a comment containing the
+	  line number and the path name for the file that defined this function.
+03-02-28  A bug in which the value of $LINENO was not correct when executing
+	  command contained inside mult-line command substitutions has been
+	  fixed.
+03-02-19 +Since some existing ksh88 scripts use the undocumented and
+	  unintended ability to insert a : in front of the % and # parameter
+	  expansion operators, ksh93 was modified to accept :% as equivalent
+	  to % and :# as equivalent to # with ${name op word}.
+03-02-14  A bug which could cause a core dump when reading from standard
+	  error when standard error was a pty has been fixed.
+03-02-14 +The shell arithmetic was modified to use long double on systems
+	  that provide this data type.
+03-02-09  A bug in which a function located in the first directory in FPATH
+	  would not be found when the last component of PATH was . and the
+	  current directory was one of the directories in PATH has been fixed.
+03-02-07 +The trap and kill builtin commands now accept a leading SIG prefix
+	  on the signal names as documented.
+03-02-05  A bug in the expansion of ${var/$pattern}, when pattern contained
+	  \[ has been fixed.
+03-02-05  A bug in which .sh.match[n], n>0, was not being set for substring
+	  matches with % and %% has been fixed.
+03-01-15  A bug in which getopts did not work for numerical arguments specified
+	  as n#var in the getopts string has been fixed.
+03-01-09  A bug in which using ${.sh.match} multiple times could lead to
+	  a memory exception has been fixed.
+03-01-06  A bug in the expansion of ${var/pattern/$string} in the case that
+	  $string contains \digit has been fixed. 
+03-01-02 +A -P option was added for systems such as Solaris 8 that support
+	  profile shell.
+03-01-02  For backward compatibility with ksh88, arithmetic expansion
+	  with ((...)) and let has been modified so that if x is a zero-filled
+	  variable, $x will not be treated as an octal constant.
+
+02-12-05  --- Release ksh93n+  ---
+02-11-30  A bug that can show up in evaluating arithmetic statements that
+	  are in an autoloaded function when the function is autoload from
+	  another function has been fixed.
+02-11-30  An optimization bug in which an expansion of the form ${!name.@},
+	  which occurred inside a for or a while loop, when name is a name
+	  reference, has been fixed.
+02-11-18  A bug in which modifying array variables in a subshell could leave
+	  side effects in the parent shell environment has been fixed.
+02-11-18  A memory leak when unsetting an associative array has been fixed.
+02-11-14 +The code to display compound objects was rewritten to make
+	  it easier for runtime extensions to reuse this code.
+02-11-14 +A change was made to allow runtime builtins to be notified when
+	  a signal is received so that cleanup can be performed.
+02-10-31 +User applications can now trap the ALRM signal.  Previously,
+	  the ALRM signal was used internally and could not be used
+	  by applications. 
+02-10-31  A bug in which signals received while reading from a coprocess
+	  for which traps were set was not handled correctly has been fixed.
+02-10-31  A bug in which a file opened with exec inside a subshell could
+	  be closed before the subshell completed has been fixed.
+02-10-21  A bug in which setting PATH or FPATH inside a function might not
+	  take effect has been fixed.
+02-10-21  A bug which could cause a core dump when a local SECONDS variable
+	  is defined in a function has been fixed.
+02-10-15  A bug in which the associate array name operator ${!array[@]}
+	  could return the same name multiple times has been fixed.
+02-10-15  A bug in which the zero'th element of an associative array was
+	  not getting set when an assignment was made without a subscript
+	  specified has been fixed.
+
+02-09-30  --- Release ksh93n  ---
+02-09-30 +The maximum indexed array size was increased to 16Megs.
+02-09-30  A bug which could cause a core dump when changing attributes
+	  of associative array has been fixed.
+02-09-30  A bug in which exporting an array variable would not export the
+	  0-th element has been fixed.
+02-09-30  A bug in which an array assignment of the form a=($a ...) would unset
+	  'a' before the right hand side was evaluated has been fixed.
+02-09-27  A bug in which the error message for ${var?message} when var was
+	  null or unset did not contain the variable name var has been fixed.
+02-09-27  A bug in which closing file descriptors 0 through 2 could
+	  cause a subsequent here document to fail has been fixed. 
+02-09-14  A bug in whence which occurs when the specified name contained
+	  a / has been fixed.
+02-09-14  A bug in the parser for strings of the form name$((expr))=value
+	  has been fixed.
+02-09-14  A for loop optimization bug in which the number of elements in
+	  an array was treated as an invariant has been fixed.
+02-09-09  A bug in which redirection or closing of a file descriptor between
+	  3 and 9 could cause a subsequent here document to fail has been
+	  fixed. 
+02-09-09  A bug in which a background job was not removed from the job list
+	  when a subshell completed has been fixed, for example (prog&). 
+02-09-03  A bug in which an assignment of the form name=(integer x=3)
+	  could be interpreted as an array assignment rather than a
+	  compound variable assignment has been fixed.
+02-08-19  A command completion bug which occurred on file systems that
+	  are case insensitive has been fixed.
+02-08-19  A bug which could lead to an exception on some systems (for
+	  example FREEBSD) which occurred when setting PATH has been fixed.
+02-08-11  A bug in arithmetic rounding in which a value input as a decimal
+	  string would output as a rounded version of the string has
+	  been fixed.
+02-08-11  A bug in which the last character could be deleted from shell
+	  traces and from whence when called from a multibyte locale
+	  has been fixed.
+02-08-01  A bug which could cause a core dump to occur when a shell script
+	  is executed while a coprocess is running that has closed the
+	  output pipe has been fixed.
+02-08-01  A bug in which command completion in multibyte mode could
+	  corrupt memory for long command lines has been fixed.
+
+02-06-17  --- Release ksh93n-  ---
+02-06-17  A bug in which user defined macros could cause a core dump in
+	  with MULTIBYTE mode has been fixed.
+02-06-17  A bug in which printf format specifiers of the form %2$s were causing
+	  a core dump has been fixed.
+02-06-17  A bug in which setting stty to noecho mode did not prevent the
+	  echoing of characters by ksh when emacs or viraw mode
+	  was enabled has been fixed.
+02-06-17  A bug in which background job completion could cause the sleep
+	  builtin to terminate prematurely has been fixed.
+02-06-17  A bug in which the shell could core dump if getopts was called
+	  when the OPTIND variable contained a negative value has been fixed. 
+02-06-10 +The edit mode prompt has been modified to handle escape sequences.  
+02-06-10  A bug which occurred for interactive shells in which the builtin
+	  cat command was used in command substitution on a file whose
+	  size was larger than PIPE_BUF has been fixed.
+02-06-10  A bug in which the trap on ERR was not being processed when
+	  set inside a function has been fixed.
+02-06-07  A bug in which function definitions could cause the history count
+	  to be decremented by one (and even become negative) has been fixed.
+02-06-05  A bug in read in which share mode could be enabled has been fixed.
+02-05-28  A bug which could occur when the last command of a script was
+	  a case statement and the action selected ended in ;& instead of ;;
+	  has been fixed.
+02-05-23  A bug with unary + introduced in ksh93k has been fixed.
+02-05-07  A bug in substitutions of the form ${var/pattern/string} in which
+	  a backslash was inserted in the replacement string when it contained
+	  a special pattern character has been fixed.
+02-05-01  A bug in the emacs edit mode which occurred in versions compiled
+	  for multibyte character sets which occurred when a repeated search
+	  was requested after a long line had been returned for the previous
+	  search has been fixed.
+02-04-02 +vi and emacs edit modes were modified so that tab completion is
+	  disabled when invoked from the read built-in.
+
+02-03-26  --- Release ksh93m+  ---
+02-03-26  A bug in which  was not handled correctly when used in file
+	  expansion has been fixed.
+02-02-18  A bug in which lines beginning with a # were deleted from here
+	  documents when the here-document delimiter was followed by
+	  a comment has been fixed.
+02-12-06  An optimization bug in which ${!x[@]) was treated as invariant in
+	  a for loop has been fixed.
+02-02-06  A bug in which the ERR trap is not cleared for a script invoked
+	  by name from within a function has been fixed.
+02-01-08  A bug in which a shell script executed from within a subshell
+	  could cause this script to have an invalid pointer leading
+	  to a memory fault has been fixed. 
+02-01-07 +Added here documents of the form <<< word (as per zsh) which
+	  is equivalent to << delimordelim.
+02-01-07  A bug in which the first word of a compound assignment,
+	  x=(word ...), was treated as a reserved word has been fixed.
+02-01-07  A bug in the handling of  when noglob was enabled and a
+	  substitution of the form ${word op pattern} occurred in the
+	  same word has been fixed.
+02-01-07 +A compilation option, CMDLIB_BLTIN in the file OPTION, has
+	  been added.  When this options is set, all commands implemented
+	  in libcmd become shell builtin commands by default.
+02-01-07  A bug in which builtin foo, where foo is already a builtin
+	  would result in the builtin foo getting removed has been fixed. 
+02-01-07  A bug which the shell executed a command found in the current
+	  directory when PATH have no valid directories has been fixed.
+01-11-28  The value of $? was not being set when called with exit.
+01-11-28  If the last command was of the form (...) and a trap on EXIT or
+	  ERR was set, and the command inside () modified the trap, then
+	  the original trap wasn't executed.
+01-11-26 +The value for 0 is now preceded by the base number when
+	  the base was not 10.
+01-11-26 +The default has compilation mode has been changes so that
+	  viraw mode will always be on.
+
+01-10-31  --- Release ksh93m  ---
+01-10-31  A for loop optimizer bug for subshells contained withing for
+	  loops has been fixed.
+01-10-16  typeset without arguments no longer outputs variable names
+	  that do not have any attributes that are set.
+01-10-16  A bug introduced in ksh93l in which assignments specified with
+	  the exec built-in were not being expanded properly has been
+	  fixed.
+01-10-11  An optimization bug in which ${!x) was treated as invariant in
+	  a for loop has been fixed.
+01-10-11  Unsigned integer variables in bases other than 10 are printed now
+	  expand in that base with the base prefix.
+01-10-10  A number of typos in the self generating man pages for shell
+	  built-ins have been fixed.
+01-10-04  The self generated man pages for hist and fc were not working
+	  correctly and have been fixed.
+01-10-03  Yet another optimizer bug in which shell patterns were
+	  treated as invariants has been fixed.
+01-09-27  Two bugs relating to multibyte history searches and to find
+	  have been fixed.
+01-09-27  A bug introduced in ksh93k in which the PATH searching was
+	  not restored after running a command with an assignment list 
+	  has been fixed.
+01-09-26  A bug in which a zero filled field was treated as octal when
+	  converted to integer has been fixed.
+01-09-26  Yet another bug in the optimization of for loops related to
+	  recursive functions with break or continue statements has been fixed.
+01-09-25 +The exponentiation operator ** was added to the shell arithmetic
+	  evaluation.  It has higher precedence than * and is left
+	  associative.
+01-09-25  The code was modified to use the ast multibyte macros
+	  and functions for handing multibyte locales.
+01-09-25 +The expansion ${parameter:offset:length} now handles negative
+	  offsets which cause offsets to be measured from the end.
+01-09-25  Some spelling errors in the documentation were corrected.
+01-09-24 +The /dev/tcp/host/port and /dev/udp/host/port now allow
+	  the ports to be specified by service name. 
+01-09-24 +The change staring with ksh93g in which the the appropriate
+	  library path variable is prepended with a corresponding library
+	  directory has been modified.  With the new method, only the
+	  library path defined in the file named .paths in the directory
+	  where the executable is found will be modified.  See the
+	  man page for more details.
+01-09-23 +The .fpath file (see ksh93h) is no longer looked for in each
+	  directory on the path to locate function directories.  The
+	  file named .paths is used instead.
+01-09-23  A bug in which IFS was not being restored after being changed in
+	  a subshell has been fixed.
+01-09-16 +With the vi and emacs edit modes, after a list of command
+	  or functions is generated with = or M-= respectively,
+	  any element from the list can be pasted on the command line
+	  by preceding the = or M-= with a numeric parameter specifying
+	  the position on the list.
+01-09-16  A bug in ksh93l caused command completion not to find aliases
+	  and functions.  Command listing from the edit mode was presented
+	  in reverse order.  This has been fixed.
+01-09-13  Another bug in the optimization of for loops related to subshells
+	  when traps were set has been fixed.
+01-09-07  A change in ksh93l caused brace expansion to stop working
+	  and this has been fixed.
+01-09-04  A bug introduced in ksh93k in which an arithmetic statement
+	  within a function that used name references did not follow the
+	  reference has been fixed.
+01-09-04  A bug introduced in ksh93l in which export -p did not prefix
+	  each export with the word export has been fixed.
+01-08-29  A bug in multibyte input which occurred when a partial multibyte
+	  character was received has been fixed.
+01-08-29  A bug introduced in ksh93l which could cause a core dump
+	  when an assignment list containing PATH is specified inside
+	  command substitution has been fixed.
+01-08-09  Another bug in the optimization of for loops in ksh93l caused
+	  errors in recursive functions using local variables that
+	  contained for loops has been fixed.
+01-07-27  A bug in which IFS would be unset after a command substitution
+	  inside a here document has been fixed.
+01-07-26  To conform to the POSIX standard, if you invoked ksh name,
+	  and name does not contain a /,  it will first try to run
+	  one in the current directory whether it is executable or not
+	  before doing a path search for an executable script.  Earlier
+	  versions first checked for an executable script using the
+	  PATH variable.
+01-07-23  A bug in which unset -f invoked in a subshell could unset a
+	  function defined in the parent has been fixed.
+01-07-16  A bug in the optimization of for loops in ksh93l caused
+	  name references to be treated as invariants has been fixed.
+01-07-09  A bug in which a discipline function applied to a local variable
+	  could cause a shell exception has been fixed.  Discipline
+	  functions can only be specified for global variables. 
+
+01-06-18  --- Release ksh93l  ---
+01-06-18  A bug in assigning integers larger than can be represented as
+	  long integers to floating point variables has been fixed.
+01-06-18  A bug in the handling of unsigned integers (typeset -ui) has
+	  been fixed.
+01-06-04  The evaluation of the PS1 prompt no longer effects the value
+	  of the $? variable.
+01-06-01  A small memory leak from subshells has been fixed.
+01-05-22  A bug in which attributes for variables that did not have
+	  values would be lost after a subshell has been fixed.
+01-05-22 +The %R format has been added to convert a shell pattern into
+	  an extended regular expression.
+01-05-22 +The escape sequences \, X, \C[.collating-element.], and
+	  \x{hex} have been added to ASCII-C strings and to printf format
+	  strings.
+01-05-20 +Patterns of the form {n}(pattern) and {m,n}(pattern) are now
+	  recognized.  The first form matches exactly n of pattern whereas,
+	  the second form matches from m to n instances of pattern.
+01-05-20 +The shell allows *-(pattern), +-(pattern),  ?-(pattern),
+	  {m,n}-(pattern}, and @-(pattern) to cause the minimal
+	  match of pattern to be selected whenever possible rather
+	  than the maximal (greedy) match. 
+01-05-20 +The character class [:word:] has been added to patterns.
+	  The word class is the union of [:alnum:] and the character _.
+01-05-20 +Inside (...) pattern groups, the  character is now treated
+	  specially even when in an enclosing character class.  The
+	  sequences, \w, \d, \s are equivalent to the character classes
+	  word, digit, and space respectively.  The sequences \W, \D,
+	  and \S are their complement sets. 
+01-05-20 +The shell now recognizes pattern groups of the form
+	  ~(options:pattern) where options or :pattern can be omitted.
+	  Options use the letters + and - to enable and disable options
+	  respectively.  The option letters g (greedy), i (ignore case)
+	  are used to cause maximal matching and to cause case
+	  insensitive matching respectively.  If :pattern is also
+	  specified, these options are only in effect while this
+	  pattern is being processed.  Otherwise, these options remain
+	  in effect until the end of the pattern group that they are contained
+	  in or until another ~(...) is encountered.  These pattern groups
+	  are not counted with respect to group numbering.
+01-05-14  When edit completion, expansion, or listing occurs in the
+	  middle of a quoted string, the leading quote is ignored when
+	  performing the completion, expansion, or listing.
+01-05-14  A small memory leak from subshells has been fixed.
+01-05-10  A bug in which open files were not restored after a subshell
+	  that had used exec to replace a file has been fixed. 
+01-05-10 +Redirection to a null file name now generates an error message. 
+01-05-09  The shell now rejects some invalid parameter substitutions that
+	  were previously processed in undefined ways.
+01-05-09  A bug in which the output of select was not flushed before the
+	  read when input did not come from the terminal has been fixed. 
+01-05-08  A bug in which job ids would not be freed for interactive shells
+	  when subshells ran built-ins in the background has been fixed.
+01-05-08 +The FPATH variable now requires an explicit . to cause the
+	  current directory to be treated as a function directory. 
+01-05-08  A bug in read -n when echo mode was disabled has been fixed.
+01-05-07  A bug in which function definitions could be listed as part
+	  of the history has been fixed.
+01-04-30 +This release uses a new and often much faster pattern matcher than
+	  earlier releases.
+01-04-30 +An optimizer now eliminates invariant parameter expansions from
+	  for while and until loops.
+01-04-30 +The variable .sh.match is set after each pattern match (# % or /)
+	  in a variable substitution.  The variable .sh.match is an
+	  indexed array with element 0 being the complete match. 
+	  The array is only valid until the next subsequent pattern
+	  match or until the value of the variable changes which ever
+	  comes first.
+01-04-30 +A self generating man page has been added to shcomp.  Also,
+	  shcomp now stops compiling when it finds an exit or exec
+	  command and copies the remainder so that it can be used
+	  for standard input.
+01-04-30 +The shcomp command was modified so that it can work in an
+	  EBCIDIC environment and that binary scripts are portable
+	  across environments.
+01-04-30  A bug in the handling of a trailing : in PATH has been fixed.
+01-04-30  A bug in which the builtin version of a command would get invoked
+	  even though the full pathname for the command was specified
+	  has been fixed.
+01-04-30  A bug in which read would loose the last character when
+	  reading the last line of a file that did not contain a new-line
+	  character has been fixed.
+01-04-23  A bug on some systems in which in vi mode the end of file
+	  character and end of line character could be swapped has
+	  been fixed.
+01-04-23  A bug on some systems in which invoking a shell script that
+	  did not have execute permission could set the exit value to
+	  127 rather than 126 has been fixed.
+01-04-20  A bug in which read -n from a pipe would block if fewer than
+	  n characters was received has been fixed.
+01-04-09  A bug in which invalid patterns, for example, ) by itself,
+	  was not treated as a string has been fixed so that if i=')',
+	  then [[ $i == $i ]] is true.
+01-04-09 +The shell arithmetic now interprets C character constants.
+01-04-09  A bug in which a non-zero return from a function defined
+	  with the function reserved word did not trigger the ERR
+	  trap or exit with set -e has been fixed.
+01-04-02  A bug on some systems, in which characters above 127 were
+	  not displayed correctly in vi or emacs edit mode has been fixed.
+01-04-02  A bug on some systems, introduced in the 'k' point release, in
+	  which the erase character in viraw mode was moving the cursor
+	  to the left without erasing the character has been fixed.
+01-04-02  On some systems the wcwith() function was returning a wrong
+	  value for characters and caused characters to be displayed
+	  incorrectly from the shell edit modes.  A work around for
+	  this problem has been added. 
+01-03-26  A bug in which valid scripts could produce syntax errors
+	  when run with locales that considered characters such as "'"
+	  to be space characters has been fixed.
+01-03-20  A bug in which an syntax error in an arithmetic expression
+	  entered interactively could cause the shell to go into
+	  an infinite loop outputting the error message has been fixed.
+01-03-10 +ksh93 accepts -l as a synonym for -L in test on systems for
+	  which /bin/test -l tests for symbolic links.
+01-03-10  A bug in parsing scripts in which { and } are used in place of
+	  in and esac in case statements embedded in compound commands
+	  has been fixed.  Use of { and } for in and esac is obsolete.
+01-03-06  A bug in which an argument of the form foo=bar was not
+	  being passed correctly to a traced function whose name
+	  was foo has been fixed.
+01-03-02  Using $(trap -p name) did not print the name of the current
+	  trap setting for trap name.
+01-02-26  Exported floating point variables gave incorrect results
+	  when passing them to ksh88.  This has been fixed.
+01-02-25  A race condition in which a coprocess which completed too quickly
+	  would not allow subsequent coprocesses to start has been fixed.
+01-02-25  The 'g' format specifier is now handled by printf.  It had
+	  inadvertently been omitted.
+01-02-20  The + was not being displayed during an execution trace
+	  with the += assignment operator.
+01-02-19  The error message which occurs when the interpreter name
+	  defined on the #! line does not exist is more informative.
+01-02-19  A bug in which $0 would not be set correctly when a
+	  script with #! was invoked by full pathname from the
+	  directory of the script has been fixed.
+01-02-19  A shell script did not always pick up tty mode changes
+	  made by external commands such as stty which could
+	  effect the behavior of read.
+01-02-19  The -u, -g, and -k unary tests did not give the correct
+	  results when used with negation and this has been fixed.
+
+01-02-05  --- Release ksh93k+  ---
+01-02-05  The sequence \<newline> inside $'...' was not incrementing
+	  the line count and this has been fixed.
+01-02-05 +Modified expansion of "${@-}" so that if no arguments are set
+	  it results in null string rather than nothing.
+01-02-02  memory leak problem with local variables in functions fixed.
+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 handles 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 now
+	  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 <.>..< >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 hexadecimal
+	  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  
+	  and/or  145 correctly.  In addition, characters following
+	  %b in the format string are no longer displayed when
+	  the operand contains .
+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
+	  been 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.
+
+
+
+

+


libast changes

+
+
+12-03-10 misc/optget.c: HELP_index for "PLUGIN" too
+12-02-29 include/shcmd.h: PLUGIN_VERSION 20111111 for cdt disc/meth change
+12-02-29 comp/spawnveg.c: fix sigcritical() to include waitpid() for internal child
+12-02-29 malloc.c: make __malloc_hook initialization thread safe
+12-02-24 comp/iconv.c: fix winix UTF-8 vs UCS-2 over-conversion
+12-02-24 astsa/*.h: clean up header guards
+12-02-24 astsa/astsa.omk: clean up standalone old make makefile interactions
+12-02-21 misc/cmdarg.c: fix bug that set argv[0]
+12-02-10 sfvprintf.c: fix 1 byte too long buffer access
+12-02-07 malloc.c/features/vmalloc: add gnu __malloc_hook tests
+12-02-06 vmmopen.c: fix ALIGN vs sys/param.h macro conflict
+12-02-02 astlicense.c: add license.component for component-specific licenses
+12-01-31 spawnveg.c: fix transient bug that made invalid setpgid() call
+12-01-27 pathpath.c: fix buffer size math when internal allocation requested
+12-01-24 malloc.c: fix _vmkeep() bug that did not return previous state
+12-01-23 malloc.c: add VMALLOC_OPTIONS=break to try sbrk() block allocator first
+12-01-21 astlicense.c: option style only overrides default license.type
+12-01-18 malloc.c: disable multiple regions for tracing or !vmbest or ASO_SIGNAL
+12-01-12 sfpkrd.c: add __sun I_PEEK+rsh runtime workaround
+12-01-10 shcmd.h: void* => Shbltin_t*
+12-01-10 tmxdate.c: handle { n>=1000 } TM_PARTS
+11-12-21 plug up some meory links -- thanks mhlavink
+11-12-21 vmprivate.c: enclose VM_NONMEM exception in CLRLOCK(vm,0) ... SETLOCK(vm,0)
+11-12-13 aso: in -lposix for uwin, not -last -- just like vmalloc
+11-12-13 sfpoll.c: all streams SF_IOINTR => don't ignore EINTR
+11-12-13 sfdcslow.c: set SF_IOINTR
+11-12-09 malloc.c: add _vmkeep() for setlocale() intercept _SYS_setlocale_free_OK
+11-12-04 sfio: _Sfmaxr=0 (unlimited) by default; use ulimit -M|-d or SFIO_OPTIONS
+11-12-01 aso: sync to new api
+11-11-11 optget.c: move .TH to the top for --nroff to get our macros first
+11-11-11 aso,cdt,vmalloc: resync with kpv
+11-11-11 cdt: preserve bits and Dt_link_t for CDT_VERSION < 20111111
+11-10-24 sfvprintf.c: %.-ns truncate from left to n chars
+11-10-21 sfvprintf.c: fix %0s (no width) core dump
+11-10-10 aso: add _WIN32 support
+11-09-26 vmalloc: sync with kpv
+11-08-29 features/{dirent,wchar,wctype}: eliminate #include with no header
+11-08-25 #pragma prototyped tweaks -- sun4 is dead, long live sun4
+11-08-25 ftwalk.c: FTS_SLNONE => FTW_SL
+11-08-11 features/wchar: fix #include _nxt_wchar for K&R C
+11-08-04 optget.c: tweak --html rendering
+11-07-24 mime.c: add %(default)[st] default if arg == ""
+11-07-21 setlocale.c: fix debug locale to treat "<<" as two single byte chars
+11-06-14 spawnveg.c: pgid -1: new session -2: setpgrp()&&tcsetpgid()
+11-06-14 pathprog.c: add darwin _NSGetExecutablePath
+11-05-14 features/common,features/align.c: { _X86_ _X64_ } conditionals for generic uwin
+11-05-13 tm/tminit.c: tweak tzname[] prototype
+11-05-09 astlicense.c: add ". file" parent-relative include and depth 4 input stack
+11-05-05 cmdarg: update to cmdopen_20110505 api
+11-05-03 sfio/sfclose.c: make sure close() errors propagate to sfclose() return value
+11-04-20 port/astlicense.c: add { id name } keys
+11-04-15 fmtdev.c: fix to work for non-{blk,chr} special
+11-04-12 stk: change size args to size_t and stseek() offset to ssize_t
+11-04-12 sfio: sync with kpv to optimize large SF_STRING sfputr() buffer allocation
+11-03-28 misc/fts.c: fix FTS_SLNONE logic to set it when it should!
+11-03-17 misc/stk.c: fixed bug that could delete an active stack frame
+11-03-10 sfio/sfvprintf.c: add %0<width>s to preserve <width> trailing chars in string arg
+11-03-09 misc/magic.c: add %d...%s where if %d==1 then %s=="" else %s=="s"
+11-03-09 misc/magic.tab: add windows ico
+11-02-08 misc/stk.c: change STK_FSIZE to (1024*sizeof(char*)) for 64 bit normalization
+11-02-02 sfio/sfmode.c: don't call sfsetbuf() on unbuffered stream to make it unbuffered
+11-02-02 features/wchar: handle hp.ia64 va_list interactions
+11-02-02 comp/omitted.c: fix mismatch between stat() vs _stat()
+11-01-31 std/wctype,features/wctype: add to handle <wchar.h> interactions
+11-01-28 add -lw for ancient sunos
+11-01-28 include/magic.h,misc/magic.c: add MAGIC_ALL
+11-01-27 tm/tmxfmt.c,tmpoff.c: %_z for SHH:MM
+11-01-25 features/wchar: change <wctype.h> <wchar.h> ordering
+10-12-24 sfstrtof.h: fix thousand grouping bug that did not check last group
+10-12-21 pathkey.c: add win32 { /32 /64 } preroot to hash
+10-12-09 pathprog.c: handle intermediate path != '* and fix invalid pathpath() call
+10-12-01 astconf.c: fix look.standard undefined variable reference
+10-12-01 sfset.c: SF_LINE|SF_WCWIDTH => no need for sfsetbuf() to call isatty()
+10-12-01 sfsetbuf.c: cache /dev/null <dev,ino> to cut down /dev/null stat()'s
+10-12-01 optget.c: delay dictionary initialization until needed
+10-11-30 malloc.c: drop { VMDEBUG VMETHOD VMPROFILE VMTRACE } env checks
+10-11-30 port/astconf.c: eliminate esaccess() calls for OP_universe checks
+10-11-24 regcomp.c: [[=]=]] must at least match itself in non-C locales
+10-11-23 glob.h,glob.c: add GLOB_GROUP => REG_SHELL_GROUP
+10-11-20 glob.c: handle mode switches across /
+10-11-19 regcomp.c: REG_SHELL => REG_CLASS_ESCAPE
+10-11-16 vmalloc.h: add VMFL tracing to vmstrdup()
+10-11-16 ast.h: simplify VMDEBUG _BLD_DEBUG and VMFL logic
+10-11-12 tm/tmlocale.c: ast TM_* extensions default to C locale
+10-11-10 regex/regnexec.c,vmalloc/vmstat.c: eliminate strict-aliasing puns
+10-10-20 misc/translate.c: change debug translation to drop " in (a,b,c,"d")
+10-10-10 misc/glob.c: drop ancient D_FILENO(d)!=0 test and trust readdir()
+10-10-06 misc/translate.c: fix "debug" locale logic
+10-10-04 misc/magic.c: fix magic() skip check to honor the continuation
+10-10-04 regex/regcoll.c: add wchar_t* args to regcollate(), drop ucs name lookup
+10-09-28 comp/setlocale.c: add utf8_wctomb()
+10-09-28 string/chresc.c,regex/regcoll.c: fix \S[.X.] (\C[.X.] never worked!)
+10-09-24 string/chresc.c: \Cc for control c, \S[.X.] for collating symbol X
+10-09-24 string/chresc.c: { c \ } deprecated
+10-09-22 regex/regcomp.c: fix off-by-one collation class allocation bug
+10-09-20 regex/regclass.c: fix CTYPES off-by-one bug
+10-09-14 comp/conf.sh: const int conf_elements, prefix_elements;
+10-09-08 add features/sizeof => ast_sizeof.h
+10-08-31 comp/getopt[l].c: export functions for dlls
+10-08-25 port/lc.c: add features/locale check for canonical UTF-8 spelling
+10-08-20 include/ast.h: add export plugin_version() prototype
+10-08-20 comp/conf.tab: add SF_BUFSIZE
+10-08-11 misc/conformance.c: conformance(0,0) => "standard"
+10-08-11 misc/conformance.c: check ast_env_serial for dynamic astconf() changes
+10-08-11 port/lcgen.c: remember to fudge Table_t.count for synthesized entries
+10-08-04 include/ast.h,comp/setlocale.c: add { debug C.UTF-8 } mbalpha() mbwidth()
+10-08-02 misc/translate.c: add NLSPATH message cache check 
+10-07-29 string/fmtint.c: fix nasty bug that rendered "1000" as "1"
+10-07-27 setlocale,lsgen,localeconv: handle C vs C_EU decimal thousands sep
+10-07-26 misc/optget.c: fix interaction with nested plugin/builtin calls
+10-06-29 string/strtoi.h: strton() multiplier 1 => power of two suffix
+10-06-28 features/wchar: handle systems that require __va_list => va_list
+10-06-28 comp/conf.tab: another PID_MAX tweak -- default to 99999 for most
+10-06-28 port/astconf.c: lone "CONFORMANCE = standard" => all defaults standard
+10-06-25 misc/optget.c: avoid sfprints() call during initialization
+10-06-01 features/api, ast_api.h: formalized forwards/backwards api compatibility
+10-06-01 _AST_API=20100601: add size_t args for all path*() output buffers
+10-06-01 comp/setlocale.c: handle C.UTF-8 test locale
+10-06-01 include/mc.h: add size_t to mcfind() for result buffer (internal api)
+10-06-01 use strlcpy() instead of strncpy()
+10-05-28 include/ast_version.h: add AST_PLUGIN_VERSION for dllplugin()
+10-05-28 include/shcmd.h: add SH_PLUGIN_VERSION for dllplugin()
+10-05-28 misc/conformance.c: add conformance(3)
+10-05-28 misc/optget.c: add [(id1|id2)...] conformance("id1|id2",0) conditionals
+10-05-25 include/sfhdr.h: adjust SF_NMAP according to _ptr_bits
+10-05-25 include/shcmd.h: add sh_builtin() macro for lib_init() table initialization
+10-05-21 misc/optget.c: --html \bfoo::bar([[:digit:]][[:upper:]]*) => foo-bar.html
+10-05-15 include/proc.h,misc/procopen.c: add PROC_ORPHAN
+10-05-09 misc/optget.c: add --???MAN[section] --???SECTION
+10-05-07 sfio,stdio: fix all snprintf() variants to handle buf==0 and/or n==0
+10-05-04 string/fmtesc.c: add mb iswsoace() and iswcntrl() quoting checks
+10-05-03 fix LC_MESSAGES catalog lookup bugs, check for $set==3, accept $set==1
+10-04-30 string/chresc.c: add chrexp() for FMT_EXP_*
+10-04-30 string/stresc.c: add strexp() for FMT_EXP_*
+10-04-30 string/chresc.c: fix \uXXXXY bug that consumed Y
+10-04-22 misc/optget.c: check for html entities in <A name="...">
+10-04-22 misc/getcwd.c: add features/syscall check for SYSGETCWD() { linux solaris }
+10-04-22 string/stresc.c: wide chars absent locale guidance default to UTF-8
+10-04-12 port/mnt.c: favor bsd getfsstat() over getmntinfo()
+10-04-11 string/strtoi.h: k (1000) and ki (1024) now differentiated
+10-04-10 misc/recstr.c: fix 'd[delimiter]' parse
+10-04-08 include/vmalloc.h,vmalloc/vmstat.c: add Vmstat_t.mode region mode bits
+10-04-05 misc/fts.c: drop 1997-01-07 fts_open()=0 is one file and stat() fails
+10-04-05 misc/optget.c,optlib.h: add Optpass_t.release for --nroff .TH
+10-04-02 misc/optget.c: fix $'[-n?..]' --version bug
+10-04-02 regex/regcomp.c: ~(X) => REG_EXTENDED|REG_AUGMENTED, ~(PU) instead of ~(U)
+10-03-24 misc/procopen.c: add PROC_FD_CTTY(fd)
+10-03-24 path/pathtemp.c: fix pointer => int casts
+10-03-15 regex/regcache.c: fix 1 byte buffer overflow (didn't count trailing  )
+10-03-08 features/tvlib: fix utimensat probe to include all macros/structs
+10-03-07 features/lib: change stream_peek to test pipes only
+10-03-07 string/strelapsed.c: fix next char return overrun
+10-03-06 tm/tvtouch.c: use runtime fallback if utimensat() fails with ENOSYS
+10-03-05 path/pathtemp.c: add pfx /seed for regression testing
+10-03-04 vmalloc/vmwalk.c: add user supplied handle arg
+10-03-04 path/pathtemp.c: properly handle mktemp()-style *+(X) templates
+10-03-03 include/ast_getopt.h: remove NULL guard - _AST_GETOPT_H now handles it
+10-02-24 comp/getopt.h: fix ast_std.h interactions
+10-02-24 vmalloc/malloc.c: empty { VMALLOC_OPTION VMDEBUG ... } => no debug!
+10-02-02 string/base64.c: fix corner case output buffer overflow
+10-02-02 features/fs: sys/mnttab.h requires stdio.h on some systems!!
+10-02-01 misc/optget.c: uppercase --html heading -- doh
+10-01-29 misc/optget.c: [+NAME?...] overrides error_info.id for >= STYLE_man
+10-01-25 vmalloc/vmprivate.c: fix seg ptr initialization bug (24 years old!!)
+10-01-20 misc/optget.c: handle nested {...} rendering
+10-01-20 misc/state.c: add ast.version for runtime api version
+10-01-20 port/astconf.c: "_AST_VERSION" now returns ast.version
+10-01-20 include/ast_std.h: add ast.version for runtime api version
+10-01-19 astlicense.c: add epl
+10-01-01 vmalloc: VMALLOC_OPTIONS env var for all runtime options
+10-01-01 include: change some <ast.h> refs to less intrusive <ast_*.h>
+10-01-01 setlocale.c,translate.c,fmterror.c: AST_LC_internal retains prev state
+10-01-01 comp/setlocale.c: AST_LC_setenv defers to LC_ALL (for sh)
+10-01-01 ast_std.h: add { AST_LC_internal AST_LC_setenv }
+09-12-24 comp/setlocale.c: fix setlocale(LC_ALL,"") when already initialized
+09-12-17 misc/optget.c: handle mixed solaris usage="x:f:(in)yo:(out)"
+09-12-11 regex/regcomp.c: posix semantics for [z-a]
+09-12-11 regex/regcomp.c: fix BRE/ERE ^^ logic
+09-12-11 regex/regcomp.c: fix regcomb() for REG_LEFT|REG_RIGHT
+09-12-11 regex/regcomp.c: bm complete=0 if REX_END
+09-12-11 comp/sigflag.c: add with npt check in features/sig.sh
+09-12-11 tm/tminit.c: fix _tzset_environ logic
+09-12-09 tm/tmlocale.c: include "ast_nl_types.h" to pull nl_langinfo in!
+09-12-04 features/options: add "opt map-libc" check
+09-12-03 tm/tmxdate.c: fix 'next month final day' for dec -> jan
+09-11-21 misc/magic.tab: add gimp XCF
+09-11-20 vmalloc/vmtrace.c: add pid to assertion disgnostics
+09-11-11 regex.h,regcomp.c: add REG_CLASS_ESCAPE,  inside [...] literal by default
+09-11-03 regex/regcache.c: change to variable length pattern strings
+09-10-28 include/error.h: fix ERROR_translate() arg parens
+09-10-26 port/lcgen.c,comp/setlocale.c: handle LANG init after LC_* already defined
+09-10-05 _sfopen.c: add but ignore 'F' flags for stdio compatibility
+09-09-28 fts.h,ftwalk.h,fts.c: promote { namelen pathlen level } to (s)size_t
+09-09-28 locales: add AST_LC_LANG for $LANG
+09-09-28 setlocale.c: fix logic for dynamic { LANG LC_ALL LC_* } changes
+09-09-17 include/sfio.h,sfio/sfwalk.c: add sfwalk()
+09-09-09 sfio/sfputr.c: add SIGPIPE hang fix
+09-08-24 sfio/sfreserve.c: fix SF_UNBOUND logic with pushed streams
+09-08-18 include/ast_std.h,ast.h: add ast.mb_sync to sync mbchar() after error
+09-08-17 comp/setlocale.c: add AST_LC_utf8 and { utf8_mbtowc() utf8_mblen() }
+09-08-11 comp/setlocale.c: treat "en"/"en_US" AST_LC_MESSAGES as "C"/"POSIX"
+09-08-10 vmalloc/vmhdr.h: add user-defined _AST_PAGESIZE and computed VMHEAPINCR
+09-08-09 comp/conf.tab: add NPROCESSORS_MAX
+09-07-29 astlicense.c: fix first name=value logic error
+09-07-22 string/fmtip6.c: don't drop trailing 0 in 44::1:0:0
+09-06-30 port/astconf.c: standard PATH_RESOLVE is "physical" (not "metaphysical")
+09-06-19 vmalloc: sync with kpv
+09-06-19 include/shcmd.h: add sh_context(p) cast
+09-06-11 misc/magic.tab: differentiate pc 386 32/64 bit dll/exe/obj
+09-06-06 port/astconf.c: fix look->name null pointer reference
+09-06-05 port/astconf.c: fix 'UNIVERSE = value' synthesize logic
+09-05-25 tm/tmxduration.c: add
+09-05-08 comp/syslog.c: add _UWIN /var/log/syslog preference
+09-05-01 comp/setlocale.c: fix _UWIN intercepts to return NiL on unknown locales
+09-04-27 sfio/sfpool.c: fix bug that did not return pool on delete
+09-04-22 include/regex.h,regex/regcomp.c: add REG_REGEXP <regexp.h> compatibility
+09-04-15 tm/tmxdate.c: handle "4th thursday in november"
+09-03-31 string/strvcmp.c,string/strnvcmp.c: add version strcmp(3)
+09-03-31 string/strpcmp.c,string/strnpcmp.c: add path prefix strcmp(3)
+09-03-29 misc/optget.c: clean up num = number casts
+09-03-04 tm/tmxmake.c: add tmxtm() with zone override
+09-03-03 tm/tmxfmt.c: add %(...)<c>, specifically %(...)z for output zone
+09-02-22 tm/tmxdate.c: add iso P... durations
+09-02-02 path/pathprog.c: add
+09-02-02 misc/opthdr.h,optget.c: fix flags mixup, handle old '-' as option
+09-02-02 sfio/sfprints.c: fix sfvaprints() return value to not count trailing ' '
+09-02-02 misc/cmdarg.c: handle !defined(ARG_MAX)
+09-02-02 port/astconf.c: fix UNIVERSE overwrite of null[] value!
+09-01-31 features/sys: drop header sys/localedef.h
+09-01-28 include/fs3d.h,misc/fs3d.c: mount() => fs3d_mount() for diff std prototypes
+09-01-14 misc/fts_open.c: delay top list reorder until first fts_read()
+09-01-14 include/ls.h: LS_W_INUMBER => 9 to accomodate large st_ino
+09-01-14 misc/optget.c: expand STYLE_usage input text
+09-01-09 features/uwin,stdio/_stdfun.c: iffe for _p__iob and __p__iob
+09-01-09 misc/magic.tab: add ISO filesystem image entries
+09-01-07 string/strtoi.c: strtol() etc. do not consume [lLuU] suffix -- thanks jkf
+09-01-07 sfio/sfstrtof.h: strtod() etc. do not consume [fFlL] suffix -- thanks jkf
+09-01-05 string/strlcat.c: fix logic to match docs (not that easy)
+08-12-30 tm/tmxdate.c,include/tm.h: add TM_WORK { "workday" "working" "work" }
+08-12-28 sfio/sfcvt.c: fix 'a' format rounding
+08-12-21 tm/tmdata.c: add 2008-12-31+23:59:60-0000 leap second event
+08-12-19 tm/tmxdate.c: check for dates near the epoch rolling back to the future
+08-12-19 tm/tmxfmt.c: change %s for now==0 to be the epoch
+08-12-07 include/ast_std.h,misc/getenv.c: no _ast_getenv for uwin ast54 compatibility
+08-12-07 tm/tmxfmt.c: add %[_][EO]K for [space pad] [full|long] iso
+08-12-07 sfio/sfvscanf.c: fix ok[] short by one allocation
+08-12-07 comp/setlocale.c: fix off by one composite initialition loop test
+08-12-07 path/pathkey.c: fix off by one loop test
+08-12-04 vmalloc/vmbest.c: catch sbrk() wraparound
+08-12-04 comp/spawnveg.c: clean up attrs on failure too
+08-11-04 regex/regcomp.c: fix locale [!-...] and [^-...] re-initialization
+08-11-04 stdio: add flockfile.c ftrylockfile.c funlockfile.c
+08-10-24 port/astconf.c: handle multiple/trailing '/' in universe initialization
+08-09-10 misc/magic.c: handle old vcodex() indices
+08-09-10 sfio/sfvprintf.c: drop SF_WCWIDTH, use %Lc or %Ls instead
+08-09-05 Makefile: ibm.risc joins the :NOOPTIMIZE: crowd
+08-09-04 regex/regnexec.c: fix nested delimiter match beyond end of subject
+08-08-20 misc/fts.c: fix st_nlink stat() optimization logic
+08-08-19 sfio/sfpkrd.c: workaround macosx recv(PEEK) data consumption on non-socket
+08-08-19 strn?tol?d: handle long double with smaller exponent range than double
+08-08-18 sfio/sfcvt.c: eliminate excessive multiplies and integral overprecision
+08-08-11 tm/tmxfmt.c: handle %10N and %010N
+08-08-06 include/shcmd.h: add 'int invariant;' for builtin invariant arg count
+08-08-05 features/ndbm: favor sleepycat ndbm compatibility
+08-07-21 include/glob.h,misc/glob.c: GLOB_STARSTAR only forces lstat on chdir
+08-07-17 sfio: sync with kpv
+08-07-17 misc/optget.c: call astwinsize() each time terminal width required
+08-07-16 sfio/sfvscanf.c: fix %% to skip leading space per posix
+08-07-16 vmalloc/vmbest.c: add VMCHECK=m, VM_mmap to favor mmap() alloc
+08-07-16 features/stdio,stdio/f(read|write).c: size_t return value!! ouch
+08-06-24 tm/tmxfmt.c: fix %z to handle tm_isdst -- doh
+08-06-24 misc/astintercept.c,misc/getenv.c: split from misc/setenviron.c
+08-06-17 misc/setenviron.c: add { astintercept() getenv() }
+08-06-09 tm/tmlocale.c: use _DATE_FMT if defined for TM_DEFAULT
+08-06-06 misc/optget.c: handle sub-component about details
+08-06-04 misc/optget.c: fix [-n?..#0093; version parse
+08-06-04 include/debug.h,misc/debug.c: merge with kpvdebug.h
+08-06-02 features/ndbm: add to tame dbmlib.iffe replication
+08-06-01 comp/resolvepath.c,realpath.c: fix resolvepath() return value type
+08-05-22 tm/tmxdate.c: fix a few ordinal/last/this/next bugs
+08-05-18 string/fmtre.c: fix omitted stack var initialization bug
+08-05-14 regex/regcomp.c,regcoll.c: fix UTF-8 collation sequence logic
+08-05-11 tm/tmxfmt.c: :NOOPTIMIZE:, otherwise %Q/../../ fails
+08-05-01 tm/tmxdate.c: mon 1..12 => mon[13] -- doh
+08-04-30 misc/glob.c,reegex/regcomp.c: ~(R) => ~(O) to avoid pcre clash
+08-04-24 port/astconf.c: 'name = value' does assignment without system init
+08-04-15 port/astconf.c: SC#N treated like 'SC(N)'
+08-04-14 misc/optget.c: clean up nroff output
+08-04-01 port/astconf.c: add RELEASE => /proc/version fallback
+08-03-30 misc/optget.c: [-n]... to enable -number & +number options
+08-03-06 misc/optget.c: ---* and +++* are now operands
+08-03-06 misc/errorx.c: fix old error_info.translate workaround
+08-02-05 regex/regcomp.c: allow REG_SHELL {,n}... => {0,n}...
+08-02-27 misc/stk.c: top element during allocation relocated to top 
+08-02-18 include/ip6.h,string/strtoip6.c,fmtip6.c: add ipv6 addr support
+08-02-14 regex/regsubexec.c: fix null match (tricky)
+08-02-14 regex/regsubcomp.c: fix SRE to match ksh
+08-02-11 comp/spawnveg.c: return proper errno on [v]fork() failure
+08-02-11 tm/tmxdate.c,tmdata.c: handle more ISO 8601:2000 forms
+08-02-02 regex/reglib.h: add REGMULTIREF to REG_COMP
+08-02-02 string/strmatch.c: fix str="" pat="" sub values
+08-01-31 comp/conf.sh,conf.tab: handle /bin/sh  in read data, redir subshell
+08-01-18 misc/magic.tab: amd-x68, 64-bit => x86-64
+08-01-18 string/strnton.c,strntonll.c: add
+07-12-10 string/strelapsed.c: "0" is a valid elapsed time!
+07-12-02 sfio/sfreserve.c: preserve SF_SHARE sfrd() via sfreserve(f,0,0)
+07-11-21 comp/setlocale.c: add sjis_mbtowc() to work around [\~] translation
+07-11-15 features/signal.c: RT(1) .. RT(MAX-1) => RTMIN+1 .. RTMAX-1
+07-11-14 features/float: favor sscanf() due to gnu strto[l]d() nan bugs
+07-10-31 regex/regcomp.c: fix REX_COLL_CLASS node allocation size
+07-10-31 sfio/sfcvt.c: use signbit() if available
+07-10-31 features/isoc99: _ISOC99_SOURCE tests
+07-10-31 port/astmath.c: add -DN=8 for signbit()
+07-10-31 sfio/sfstrtod.h: don't forget about -0.0
+07-10-26 features/map.c: add { optopt optarg optind opterr }
+07-10-26 features/stdio: add _filbuf => _ast__filbuf
+07-10-26 comp/getsubopt.c: fix #undef that interfered with <ast_map.h>
+07-10-26 regex/regcomp.c: fix bug that missed ')' in ~(F)...
+07-10-12 port/astconf.c: fix CONF_ALLOC 16 bit overflow
+07-10-12 misc/fts.c: fix fts_close() to free the handle -- doh
+07-10-11 comp/setlocale.c: second and subsequent setlocale(*,"") reverts to previous
+07-10-11 path/pathprobe.c: add vfs ST_NOSUID check
+07-10-10 comp/conf.tab: add a few more xpg6 deferrals
+07-09-28 astsa: update to share with mainline src via _PACKAGE_astsa
+07-09-25 sfio/sfgetr.c: no limit on string stream line size
+07-09-25 sfio/sfextern.c: increase _Sfmaxr to 256*1024
+07-09-18 misc/procopen.c: tighten up SIGCHLD logic between parent/child
+07-09-18 misc/signal.c: unblock SIG_DFL after setting handler, sig<0 => don't unblock
+07-09-13 misc/fs3d.c: no $LD_PRELOAD => no 3d and avoids invalid mount(2) call
+07-09-11 vmalloc: vmstat(0,0)==1 => region in use, drop VM_primary|VM_secondary
+07-09-05 misc/recstr.c: handle [lL] gobbled by strtol() -- ouch
+07-08-17 path/pathprobe.c: handle '\r' in VERSION string
+07-07-17 regex/regcache.c: regcache(0,n,0) extends cache to size n (no shrinking)
+07-07-16 tm/tmdata.c: add 2005-12-31, drop 1999-12-31 (where did that come from?)
+07-05-21 tm/tmxfmt.c,tmxscan.c: %F => %L (TM_DEFAULT); %F => %Y-%m-%d
+07-05-15 sfio/sfvprintf.c: %h? and SFFMT_SHORT => raw bytes
+07-05-09 features/signal.c,features/siglist: use kill -l & strsignal()
+07-04-25 misc/optctx.c: add for opt_info switching
+07-04-24 misc/cmdarg.c,include/cmdarg.h: add CMD_CHECKED, CMD_SILENT
+07-04-24 misc/procopen.c,include/proc.h: add PROC_CHECK
+07-04-24 misc/procrun.c: add flags arg (current use PROC_ARGMOD)
+07-04-24 misc/cmdarg.c,include/cmdarg.h: move from src/cmd/tw
+07-04-20 port/(lclang.h|lc.c|mc.c|lclib.h|lcgen.c): separate lctab.c
+07-04-20 comp/conf.sh: defer to systems without 'grep -q' -- sigh
+07-04-20 comp/conf.sh: probe for LL integer constant initializer suffix
+07-04-20 include/syslog.h: <namval.h> => <ast_namval.h> for win32
+07-04-20 ast_namval.h: add as copy of include/namval.h for win32
+07-04-19 comp/conf.tab: fix SVID SI entries to probe SI_* (not _SI_*)
+07-04-13 tm/tmxdate.c,tm/tmzone.c: handle [-+]0000 UTC zone offset
+07-04-11 sfio/sfvprintf.c: add %F, propagate SFFMT_UPPER
+07-04-11 sfio/sfcvt.c: handle SFFMT_UPPER => nan/inf vs. NAN/INF
+07-04-02 comp/conf.tab,comp/conf.sh: add C/POSIX <stdint.h> symbols
+07-03-28 misc/optget.c: fix l10n --?-
+07-03-25 features/common: fix { ast_std.h ast_map.h stdint.h } logic
+07-03-21 error.h: move from error_info to (*_error_data_)
+07-03-21 misc/error.c: add errorctx() for error_info switching
+07-03-21 option.h: move from opt_info to (*_opt_data_)
+07-03-19 regex/regdecomp.c: fix REX_ONECHAR escapes and add REX_KMP
+07-03-11 tm/tmxscan.c,regex/regnexec.c: fix strict-alias transgressions
+07-02-27 comp/conf.sh: handle native getconf invalid numeric values
+07-02-21 comp/conf.sh,comp/conf.tab: handle SSIZE_MAX vs _POSIX_SSIZE_MAX
+07-02-20 sfio/sfvprintf.c: handle SF_WCWIDTH justification
+07-02-14 features/common: cover <stdint.h>, move to int_(bits)_t
+07-02-14 include/int.h: drop
+07-02-14 include/sfio.h: add SF_WCWIDTH
+07-02-12 comp/conf.sh: fix CONF_LIMIT bug that missed ULONG_MAX etc.
+07-02-12 comp/conf.tab: *LONGLONG* => *LLONG* to match posix
+07-02-12 features/float: *LONGLONG* => *LLONG* to match posix
+07-02-12 port/astconf.c: handle CONF_LIMITS_DEF with no deferral
+07-02-12 stdio/vasprintf.c: add trailing ' ' -- doh
+07-02-04 string/fmtelapsed.c: fix naive multi month/year logic
+07-02-02 misc/optget.c: add --??posix for getopts(1)/getopt(3)
+07-01-26 string/chresc.c: use mbchar()
+07-01-26 misc/optget.c: handle "o:-:" usage for old-style long options
+07-01-22 sfio/sfdisc.c,sfpool.c: handle push on streams with pending peek
+07-01-22 include/sfio.h: mv Sfieee_t to sfio/sfhdr.h
+07-01-17 tm/tmxfmt.c: fix terminating nil logic which clobbered size-1
+07-01-11 misc/stk.c: a 2 day marathon bug fix (can we release now dr ek?)
+07-01-05 comp/spawnveg.c: posix_spawnattr_setflags(POSIX_SPAWN_SETPGROUP)
+07-01-05 misc/error.c: fix multibyte vs. printable logic
+07-01-01 comp/conf.sh: LC_ALL=C
+06-12-26 tm/tmxdate.c: handle nn*.nnnn* == sec.ns
+06-12-20 features/libpath.sh: generalize sol.* LIBPATH patterns
+06-12-18 comp/setlocale.c: include ast_standards.h and ast_wchar.h !
+06-12-12 string/strperm.c: octal modes are absolute!
+06-12-11 comp/conf.tab: always defer ARG_MAX
+06-12-07 Makefile: fix conftab.c generation CCFLAGS to match build - doh
+06-12-04 sfio/sfcvt.c: fix (int) vs. (long) cast mismatches
+06-12-01 comp/conf.tab: add changes to cover solaris { bin xpg4 xpg6 }
+06-12-01 regex/reginit.c: adjust { SRE KRE } escaped (){}*? inside [...]
+06-12-01 sfio/sfcvt.c: add signbit/copysign tests
+06-11-22 comp/spawnveg.c: fix _real_vfork logic to work with 3d
+06-11-20 features/common: bias _ast_int8_t "long long" before "__int64"
+06-11-20 string/strperm.c: fix X to work with all ops (not just +)
+06-11-15 astconf.c,conf.tab: add CONF_DEFER_* for variable constants
+06-11-11 port/astconf.c: validate path arg w.r.t. underlying calls
+06-11-11 comp/conf.sh: fix S CONF_STANDARD bug, add D to defer to native
+06-11-11 comp/conf.tab: add D to defer to native
+06-11-01 include/vmalloc.h: avoid VM_FLAGS sys/v*.h clash
+06-11-01 include/ast.h: add FMT_PARAM for fmtquote()
+06-10-31 disc/sfdcseekable.c: add SFSK_DISCARD for seekable window control
+06-10-31 comp/spawnveg.c,features/lib: handle posix_spawn exit status 127
+06-10-30 features/lib: fix posix_spawn() fork() prototype conflicts
+06-10-30 string/fmtscale.c: fix 1024 rounding bugs
+06-10-27 disc/sfkeyprintf.c: handle 'i' (=='d') -- oops
+06-10-26 sfio/sfvprintf.c: %#d => fmtscale(1000), %#i => fmtscale(1024)
+06-10-26 features/map.c: _map_libc cleanup
+06-10-26 features/fcntl: add to the circle of trust
+06-10-26 features/sys: add <sys/socket.h> socklen_t
+06-10-26 include/regex.h: handle include before <ast_map.h>
+06-10-25 astconf "SHELL" => "SH" to avoid _POSIX_SHELL conflict
+06-10-25 comp/conf.*: drop no-op duplicate conftab.c entries
+06-10-18 string/fmtscale.c: 1000: n[.]n[n](kMGTPE), 1024: n[.]n[n](KMGTPE)i
+06-10-11 ast_std.h: now implies <sys/stat.h> (did on most before anyway)
+06-10-11 strtoi.h: ignore sign for 0, validate scale shift
+06-10-11 strdup.c,vmstrdup.c: handle 0 arg
+06-10-11 add sfstruse()/sfstropen() error checks
+06-10-10 misc/procopen.c: envv==environ => don't modify environ
+06-10-10 misc/procclose.c: return valid exit(1) status
+06-10-06 port/astconf.c,comp/conf.sh,comp/conf.tab: play nice with getconf(1)
+06-10-01 comp/conf.tab: SHELL default checks { _CS_PATH } X { ksh ksh93 sh }
+06-10-01 comp/conf.sh: export CONF_getconf to shell actions
+06-10-01 comp/putenv.c: always enable setenv() for procopen()
+06-10-01 misc/procopen.c: use pathshell() or astconf("SHELL",0,0) if PARANOID
+06-10-01 path/pathshell.c: localize the shell path patterns and accept ksh93
+06-09-28 Makefile: avoid ast <stdio.h> vix iffe -X ast -- doh
+06-09-27 regex/regdecomp.c: add
+06-09-26 regex/regcomp.c: handle KRE ~(...)<invalid-kre>
+06-09-25 reorganize to avoid native header intercepts
+06-09-15 uwin/crypt.c: _UWIN only!
+06-09-14 Makefile: tweak the ast_common.h bootstrap again (finally?)
+06-09-14 misc/optget.c: noncommercial => OPT_proprietary
+06-09-12 string/strelapsed.c: fix multi-char qualifier parse
+06-09-12 string/strtoi.h: drop [cClLqQwW] multipliers
+06-09-11 misc/optget.c: add numeric arg validity check
+06-09-07 misc/optget.c,tm/tmfix.c: fix uninitialzed var refs
+06-09-05 path/pathprobe.c: add version header verification
+06-08-01 Makefile: handle iffe vs FEATURE/common vs ast_common.h
+06-08-31 Makefile: add ast_map.h to the bootstrap list
+06-08-30 misc/glob.c: fix ~(E)re bug that stripped ~(E) before regcomp
+06-08-30 include/ast.h: add { integralof(x) pointerof(x) }
+06-08-27 string/strelapsed.c: fix off-by-one (too little) parse bug
+06-08-25 misc/optget.c: 0*<n>.* numeric option args => <n>.*
+06-08-22 misc/glob.c: handle ~(...) pattern options
+06-08-16 string/strelapsed.c: fix off-by-one (too far) parse bug
+06-08-16 regex/regcomp.c: accept but ignore ~(N)
+06-08-14 features/libpath.sh: add solaris LD_LIBRARY_PATH_64 check
+06-08-05 sfio/sfpool.c: pool SF_READ|SF_WRITE loop fix
+06-08-02 misc/fts.c: fix FTS_NOSTAT optimization to check for ..
+06-07-28 include/glob.h: add gl_extra for user globlist_t expansion
+06-07-27 features/common: #include "ast_map.h"
+06-07-26 comp/fnmatch.[ch]: allow <ast_map.h> to map fnmatch()
+06-07-22 cdt: snarf from kpv
+06-07-17 string/strperm.c: perm==-1 skips umask(1)
+06-07-17 sfio/sfvprintf.c: handle format invalid mb seq
+06-07-17 regex/regcomp.c: inline REG_SHELL => anchored, otherwise not
+06-07-17 regex/regcomp.c: inline B|G:basic E:REG_EXTENDED F|L:REG_LITERAL
+06-07-17 regex/regcomp.c: inline l:REG_LEFT r:REG_RIGHT
+06-07-17 regex/regcomp.c: inline a:REG_LEFT|REG_RIGHT p:~REG_LENIENT
+06-07-17 string/chresc.c: add \Uxxxxxxxx
+06-07-17 sfio/sfstrtof.h: ignore thousands sep after decimal
+06-07-17 string/tokline.c: splice() => spliceline() for bsd
+06-06-27 features/float,sfio/sfcvt.c: fix Nan logic
+06-06-27 port/astmath.c: fix long double isnan() test
+06-06-27 features/map.c: _map_libc for std => _ast_std
+06-06-25 string/strperm.c: handle posix = w.r.t. umask
+06-06-19 port/mnt.c,features/fs: handle netbsd getmntent api change
+06-06-18 regex/regstat.c: add REG_LITERAL check
+06-06-11 cdt/dtview.c: update from kpv
+06-05-31 sfio/sfhdr.h: fix _SFOPEN() typo
+06-05-09 comp/conf.sh: add native getconf -a names to the mix
+06-04-28 misc/optget.c: add solaris long option name compatibility
+06-03-09 string/strmatch.c: add REG_ADVANCE => REG_* flags
+06-02-14 comp/iconv.c: fix uwin iconv_list() /reg/ generator
+06-02-10 port/astconf.c: relax standard prefix filter
+06-02-08 sfrd.c,sfsync.c: lock logic bug fix
+06-02-01 port/astlicense.c: add { parent incorporation }
+06-01-26 port/astconf.c: fix { LIBPREFIX LIBSUFFIX } length
+06-01-06 features/lib: change _UNIV_DEFAULT probe to use cross{...}
+06-01-04 misc/stk.c: fix n**2 realloc behavior
+06-01-01 include/sfio.h: export { _Sfi _Sfmaxr }
+05-12-13 string/chresc.c: handle \C-X => control-X, \M- => ESC
+05-11-22 regex/regcache.c: add, convert string/strmatch.c to regcache()
+05-10-06 string/ccmap.c: update ebcdic-u to be idempotent
+05-09-28 vmalloc: snarf from kpv; fixes large block brk() thrashing
+05-09-26 misc/magic.c,misc/magic.tab: handle latest vcodex header
+05-09-12 misc/optget.c: reset opt_info.offset on error
+	 string/strtoi.h: strton() '.' multiplier only if m>1
+	 string/fmtesc.c: add unadvertized FMT_PARM for FMT_SHELL
+05-09-09 string/fmtesc.c: fix FMT_SHELL logic w.r.t. [$`]
+05-08-11 string/strerror.c: fix { sys_errlist sys_nerr } prototypes
+05-08-03 sfio: snarf sfvaprints sfaprints
+05-07-21 port/astconf.c: retain most recent synthesized lookup
+05-07-20 sfio/sfsetbuf.c: default file io size now 64K on all systems
+05-07-17 ccmap*: add microfocus cobol EBCDIC_U
+05-06-29 regex/regcomp.c: fix the A & B inline flag logic
+05-06-15 include/recfmt.h: add fs format flag to fmtrec()
+05-06-14 error.c: add ERROR_OPTIONS { break count match }
+05-06-07 features/stdio: drop FEATURE/limits to fix bootstrap circular dep
+05-06-02 features/*,Makefile: drop vestigel iffeio.h bootstrap workaround
+05-05-31 string/fmtbuf.c: unlock (spin) before each return -- doh
+05-05-30 sfio/sfpkrd.c: work around macos 10.4 recv(MSG_PEEK) bug
+05-05-27 regex: add REX_NEST (?%[S.][T.][OT])
+	 magic.tab: ammend bsd db magic
+05-05-23 regex: REX_NEST (?%[D.][E.][L.][Q.][oc]...)
+05-05-21 regex: state.fold[] is now locale specific -- doh
+05-05-19 regex: add REX_NEST (?%\\()<>[]""...) %(...) nested match
+05-05-15 recfmt.h: add recstr() reclen() fmtrec()
+05-05-13 optget.c: allow boolean options to take numeric values
+05-05-12 recfmt.c: add to recfmt.h, adjust Recfmt_t encodings
+05-04-30 sfio: add sfmaxr(), default 64K
+05-04-22 comp/omitted.c: fix magic() logic for files < 512 bytes
+05-04-20 cdt: snarf update from kpv; void* Dt_t.user added
+	 misc/error.c: library => ERROR_LIBRARY
+05-04-19 regex/regcomp.c: handle REG_SHELL [^...] == [!...]
+05-04-11 tm/tmxscan.c: handle yyy.mm.dd[-+.]hh.mm.ss.nnnnnn
+05-04-07 regex/regnexec.c: fix out of bounds boundary check -- ouch
+	 features/align.c: add jmp_buf to the alignment mix (ia64)
+	 vmalloc/vmhdr.h: add jmp_buf to the alignment mix (ia64)
+05-03-31 misc/optget.c: fix option { - _ } separator matching
+05-03-30 misc/glob.c: eliminate superfluous GLOB_NOMATCH stat() calls
+05-03-24 port/astwinsize.c: include <sys/ioctl.h> if possible
+05-03-23 string/ccmap.c: add ebcdic-m mvs cobol table
+05-03-11 comp/omitted.c: handle utime[s](const,const)
+	 comp/conf.tab: fix linux PID_MAX probe
+05-03-10 comp/setlocale.c: LC_* value "" => unset -- doh
+	 misc/optget.c: reorder _PACKAGE_astsa code for msgcc
+05-03-08 misc/optget.c: delete leading space in STYLE_nroff output
+05-03-07 sfio/sfhdr.h: drop extern _sfdscan -- clashes with sfvscanf.c static
+05-03-01 tm/tminit.c: add tmlocaltime() for tzset() getenv() override workaround
+05-02-20 features/tvlib: tmsettimeofday only for systems that have settimeofday
+	 features/float: fix mvs.s390 NaN tests
+05-02-18 tm/tmxmake.c: fix <0 west of GMT bug that warped to 1800's -- wow
+05-02-11 port/mnt.c: handle lynxos MOUNTED=/etc/fstab
+05-02-08 features/float,sfio.h,sfcvt.c,sftable.c: add INF and fix NAN
+05-02-04 features/lib: add _std_strtol (for lynxos)
+	 include/ast_std.h: add _std_strtol tests
+	 comp/strtod.c: #define S2F_function strtod
+	 misc/signal.c: fix ancient bsd SV_INTERRUPT vs. SV_ABORT clash
+05-01-11 sfio/sfmove.c: try to seek(fr) when fw==0
+	 comp/omitted.c: intercept utimes() too
+	 comp/omitted.c: add DOSPATHVARS env var path value conversions
+	 features/tvlib,tm/tvtouch.c: check for utimets()
+	 misc/optget.c: handle '-' or '_' option word separators
+	 sfio/_sfopen.c: allow stream mode changes after initialization
+	 sfio: sync with kpv: SF_SYNCED fix for ksh input loss bug
+05-01-09 tm/tmxfmt.c: fix %6N for n<100000000
+05-01-08 regex/regcomp.c: conj() => con() to avoid C99 clash
+05-01-05 tm/*: fix { %U %V %W } logic -- my head hurts
+04-12-30 tm/tmxtime.c: fix tm_isdst<0 loop
+04-12-23 vmalloc/vmbest.c: fix vmresize bug that didn't 0 new data
+04-12-19 misc/optget.c: broaden - long option match
+04-12-09 string/strtoi.h: fix terabyte 't' suffix math
+	 string/strmatch.c: flush cache on locale change
+04-12-01 tm/tmsleep.c: add
+	 tv.h,tv*.c,tv.3: move from pax
+	 tmx.h,tmx*.c,tmx.3: add high resolution tm(3) counterparts
+	 features/lib: add *another* sgi linux.ia64 memccpy bug check
+04-10-31 Makefile: __OBSOLETE__ now computed <6 months ago year>0101
+	 ccode.h,ccmapid.c: add ccmaplist(Ccmap_t*) iterator
+	 option.h,optesc.c: add 3rd arg, 1 => quote '?' too
+	 misc/magic.c: fix bug that terminated `string  a' at  
+	 misc/magic.c: handle vcodex() via decompose()
+	 misc/magic.tab: add vcodex magic
+	 features/stdio: handle _LARGEFILE64_SOURCE -- oops
+	 stdio/(fseek|ftell|fseeko|fsetpos|fgetpos|ftello).c: oops^2
+04-10-28 string/swapop.c: size==-4 => size=4 and extend op=3 to op=7
+	 tm/tmfix.c: fix tm_mon<0 logic
+04-10-22 tm/tmdate.c: handle 'final day feb 2004'
+	 port/astlicense.c: add query=all|id|${...}${...}
+	 port/astlicense.c: "free" => "mit"
+	 comp/omitted.c: revert to the open source license
+	 string/stropt.c: drop siz==0 => tab is hash table
+	 include/sfio.h: incorporate <sfstr.h>
+	 include/sfstr.h: drop
+	 disc/sfstrtmp.c: drop -- use sfstrbuf()
+04-10-20 misc/magic.tab: update tar magic
+04-10-18 ufc-crypt.h,crypt_util.c: drop GPL code
+	 crypt.c: add BSD code
+	 pathpath.c: disable { $0 $_ $PWD } related root search
+04-10-01 normalize ident stamps
+	 port/astlicense.c: add type=cpl -- yeah
+04-09-25 string/swapop.c: return op < size -- duh
+04-09-23 comp/spawnveg.c: :NOOPTIMIZE: -- volatile sometimes ignored
+04-09-21 comp/spawnveg.c: exec_errno_ptr is volatile -- duh
+04-09-14 tm/tmscan.c: add %| alternation and %& => tmdate()
+04-09-08 misc/optget.c: add :!value: omitted optional arg value
+	 misc/optget.c: fix --noNAME ambiguous option logic
+04-08-26 string/strperm.c: add who^mode to propagate least restrictive up
+	 astmath.c: add { frexpl ldexpl } checks for ast.req
+	 port/astlicense.c: ignore first option if non-assignment
+	 include/ast_dir.h: move d_fileno map before struct defs -- duh
+04-08-24 vmalloc/vmbest.c: add {VM_region} VMCHECK=+r for region segment checks
+	 misc/recfmt.c,include/recfmt.h: add
+04-08-23 vmalloc/vmbest.c: add {VM_primary VM_secondary} VMCHECK=-s for primary
+	 features/common: punt to <stdarg.h> for unknown va_list
+04-08-11 vmalloc: sync _UWIN libposix hooks
+04-07-27 features/common,features/limits.c: ULL suffix for unsigned _ast_int8_t
+04-07-22 include/ast.h,comp/eaccess.c: add eaccess() for effective access()
+04-07-19 comp/open.c,sfio/_sfopen.c: { O_RDONLY O_WRONLY O_RDWR } are values
+04-06-28 misc/error.c: check level after error_info.auxilliary
+04-06-24 string/strmatch.c: strgrpmatch() match[] now variable size array
+04-06-17 features/common: change _DLL null define to (the standard ast) 1
+04-06-11 misc/optget.c: allow optional [-|+|--|++] optstr() option prefix
+	 misc/optget.c: reset optstr() state on 0 return
+	 misc/optget.c: text()=>textout() linux.ppc symbol hijack workaround
+04-05-31 sfio/sfreserve.c: no side buffer if user buffer is large enough
+04-05-27 string/fmtbuf.c: handle one concurrent buf > sizeof(buf)
+04-05-24 regcomp.c: fix no-advance initialization
+04-05-05 conf.tab,conf.sh: update to align with standards
+	 magic.tab: ms suffix update
+04-05-04 port/lcgen.c: fix territory initialization
+04-04-15 tm/tmdate.c,include/tm.h: fix specific and ordinal days
+04-04-08 astconf: retain { HOSTTYPE LIBPATH LIBPREFIX LIBSUFFIX } strict vals
+04-04-07 vmalloc/vmbest.c: fix alpha tiny block bug
+	 vmalloc/malloc.c: re-enable on alpha
+04-03-30 tm/tminit.c: GMT => UCT only if tz.daylight not defined
+04-03-25 vmalloc/malloc.c: _AST_std_malloc=1 for __alpha
+	 path/pathprobe.c: per-user probe dir => $HOME/.probe/$HOSTTYPE
+04-03-23 regex/reglib.h: fix isw*() redefines
+04-03-17 features/stdio: no __FILE override for __CYGWIN_ (sys/reent.h clash)
+	 sfio/sfhdr.h,sfio/sfsetbuf.c: lower sfmove() default buf size 4x
+04-02-29 comp/omitted.c: move env trace after PATH fixup
+	 comp/omitted.c: cygwin spawn _P_DETACH => _P_NOWAIT+setpgid(pid,0)
+	 misc/optget.c: fix html mailto: match
+	 port/astlicense.c: add type=test for fixed 2001 date
+	 features/float: check local NaNQ first
+	 vmalloc/vmhdr.h: fix _vmextern_ vm_truncate return type
+	 misc/magic.tab: add elf s390 index=22
+04-02-26 vmalloc: VMCHECK a:assertions c:arena-check w:warn-instead-of-abort
+	 sfio/sfvscanf.c: fix extf arg selection
+04-02-24 features/dirent: set nodefine to avoid ast_std.h _typ_off64_t undef
+	 disc/sfkeyprintf.c: only case pattern must be ()[] balanced
+04-02-14 include/sfio_t.h: add SF_DCDOWN, SFDCNEXT(), SFDCPREV()
+04-02-13 string/strmatch.c: fix bug that didn't save one-time sub[] size
+	 vmalloc: -g: export VMCHECK=1 enable malloc/free checks
+	 vmalloc: -g: free(0) to check and disable malloc/free checks
+	 vmalloc: -g: free(1) to check and enable malloc/free checks
+04-02-11 Makefile: add :P=A: to conf and lcgen exec for cross-compile
+	 regex: use MBSIZE() instead of mbsize() to grab 1 char on err
+	 vmalloc/vmbest.c: updated to do more comprehensive DEBUG tests
+04-02-04 sfio/sfraise.c: add sfraise(0,a,b) to iterate over all streams
+04-02-01 vmalloc/vmbest.c: _BLD_DEBUG free(0) checks the arena
+04-01-31 features/vmalloc: fix typo that missed _mmap_zero
+04-01-23 string/strerror.c: handle real strerror() return value overwrite
+04-01-11 path/pathpath.c: fix size vs. sizeof(buf) typo
+03-12-22 misc/magic.tab: dos EXE tweaks
+03-12-05 vmalloc: sync with kpv, adding exceptf announcements
+03-12-04 port/astlicense.c: fix expand() loop sentinel bug
+03-12-02 include/ast.h: mbchar() advances by 1 on mbtowc() error
+	 misc/fts.c: increase MINNAME to 32
+03-11-21 vmalloc/vmbest.c: export VMCHECK=1 to enable $(CC.DEBUG) vmcheck()
+         vmalloc/vmbest.c: export VMCHECK=2 to disable KPVCOMPACT
+	 misc/magic.c: add { cobol copybook pl1 } and suffix preference
+03-11-12 features/stdio: drop cuserid,getopt for SUSV3
+03-11-11 vmalloc/*: merge kpv update -- this should stomp the compaction bug
+03-10-23 comp/iconv.c: fix sfreserve lock fallback
+03-10-20 sfio/_sfopen.c: add to allow user sfopen() intercept
+03-10-17 regnexec.c: fix exec time REG_LEFT, \x.... => wctomb()
+03-10-12 string/strtoi.h: fix strton '.' overconsumption
+03-10-12 comp/iconv.c: identity is always (iconv_t)0
+03-10-09 string/fmtesc.c: fix FMT_SHELL to check for all shell magic chars
+03-10-01 port/astlicense.c: unknown authors copied verbatim (instead of ignored)
+03-09-30 string/chresc.c: handle \u..., \x... consumes all trailing hex digits
+	 string/stresc.c: \u... and \x... > UCHAR_MAX => wctomb()
+03-09-29 fnv.h: add
+03-09-23 modedata.c: table is for external modes, so no arch specific hacks
+	 optget.c: fix option prefix match translation bug
+	 optget.c: add `<length> <name>=<value> to optstr()
+	 features/lib: add memcmp() test for sgi optimzation bug
+03-09-22 regex.h,regcomp.c: add regncomp()
+	 regclass.c: fix for loop dangling ; in regaddclass()
+03-09-20 sftable.c,sfvprintf.c: fix SFFMT_CHAR handling to match extf api
+03-09-19 sfmode.c: update release to kpv's
+03-09-17 regcomp.c: add pedantic backref error checks
+03-09-16 regnexec.c: exec time REG_LEFT => don't advance past initial position
+	 regclass.c: add regaddclass() for user defined [:class:]
+	 regexec.h: REG_VERSION_N2X, add redisc_t {re_map} ccode map
+	 regstat.c: add regstat_t
+03-09-11 optget.c: --n:=v sets opt_info.assign=':', opt_info.number enabled
+03-09-09 disc/sfkeyprintf.c: *pn on lookup is arg separator; lookup "" arg too
+03-09-05 optget.c: [f:l*?] preserves user long name past '*' in opt_info.name[]
+03-09-03 sfstr.h: add sfstrpend() for #pending bytes in read buffer
+03-08-25 regex: add REG_FIRST, optimize bm
+	 features/lib: _AST_no_spawnveg==1 falls back to fork/exec
+03-08-22 features/stdio,stdio/asprintf.c,stdio/vasprintf.c: add
+03-08-21 path/pathnative.c,path/pathposix.c: interix updates
+	 features/botched: add cygwin _stat => _stat64
+03-08-15 include/ast.h: map out bsd strmode()
+	 features/common: add interix _ast_intmax_t workarounds
+	 misc/fs3d.c: 3d mount test now uses "" instead of NiL (or cygwin dumps)
+03-08-11 string/fmtesc.c: fix optional quoting checks
+	 tm/tmdate.c: fix > 1 year of seconds arithmetic
+	 tm/tmfix.c: fix leap year adjustments
+03-08-01 features/lib: beef up sock_peek test for interix
+03-07-29 features/float: add -lm to frexp... test
+	 Makefile: fix -lm astmath test sense
+03-07-26 features/mem.c: favor _mem_sbrk over _mem_mmap_*
+03-07-22 vmalloc/vmbest.c: fall back to sbrk() if mmap() fails
+	 features/mem.c: _mem_sbrk means sbrk() and brk() work
+03-07-17 regex/regcomp.c: fix bug that treated KRE X{n,m} like {n,m}(X)
+	 misc/magic.c: check MAGIC_VERBOSE for all load() messages
+03-07-14 misc/optget.c: handle [...]{[...]<.>..<.>..}
+03-06-21 misc/sigcrit.c: block SIGCHLD if _lib_sigprocmask || _lib_sigsetmask
+	 comp/spawnveg.c,sfio/sfmode.c: use sigcritical() SIG_REG_* macros
+	 comp/spawnveg.c: drop ENOEXEC logic
+	 vmalloc/*: snarf kpv KPVCOMPACT() fix
+	 vmalloc/vmbest.c: export VMCHECK=2 to disable KPVCOMPACT (just in case)
+	 string/strdup.c: drop __strdup() etc. intercepts -- malloc gets it
+	 features/mem: define _mem_method and _mem_* possible values
+	 vmalloc/malloc.c: _AST_mem_method==_mem_* to force mem get method
+	 sfio/sfputr.c: __ia64 memccpy is bogus -- how many tries do they get?
+	 path/pathshell.c: verify abs path and access(path,X_OK) -- duh
+	 vmalloc/vmhdr.h: add private _Vmessage() for non-sfio ASSERT() 
+	 port/astconf.c: fix bug that always returned the minmax value
+03-06-11 comp/*.c: reorder macro hding for mvs.390 and <ast_map.h> 
+	 features/vmalloc: add _lib_brk and _lib_sbrk verification
+	 include/ast_std.h,etc.: add _map_malloc for malloc => _ast_malloc
+	 comp/conf.sh: fix SI_* and *_SI_* macro redefs
+	 ast.h: VMDEBUG or _BLD_DEBUG enable <vmalloc.h> and VMFL tracing
+	 vmalloc/vmtrace.c: _PACKAGE_ast __FUNCTION__ is a string
+	 vmalloc/vmtrace.c: set trace file fd FD_CLOEXEC
+	 vmalloc/vmbest.c: set /dev/zero mmap fd FD_CLOEXEC
+	 features/mmap: fix ancient read() vs. mmap() time arithmetic typo
+	 vmalloc/malloc.c: _AST_std_malloc==1 to force standard malloc
+03-06-09 comp/omitted.c: add _imp__FUNCTION sybols for __CYGWIN__ static link
+	 vmalloc/vmbest.c: handle systems with sbrk() but no brk()
+03-06-04 port/astconf.c: drop non-standard diagnostics
+03-06-03 comp/conf.sh: rework symbol collision logic
+03-05-30 conf.tab,conf.sh,astconf.c: add <sys/systeminfo.h> sysinfo() SI_*
+03-05-29 ccode.h: rework for extensibility, drop obsolete mematoe(), memetoa()
+03-05-28 regex/*: recode to use isw*() directly when needed, is*() otherwise
+03-05-27 features/vmalloc: fix _std_malloc test
+03-05-25 misc/optget.c: fix optstr() ???* internal options
+03-05-24 misc/optget.c: fix (ancient) argv null dereference
+03-05-23 comp/getcwd.c: don't intercept on _WINIX -- unreliable st_ino
+03-05-22 sfio/sfsprintf.c: n<0 => don't append ' '
+03-05-18 misc/fts.c: re-stat FTS_DP to update nlink/times 
+	 misc/fts.c: add FTSENT.stack to eliminate getlist() recursion
+	 regex/ucs_names.h: use "..." catenation to placate some cc's
+03-05-11 string/strtoi.h: handle "-" "+" "0x" "11#"
+03-05-09 vmalloc/vmbest.c: large memory allocation tweaks
+03-05-06 misc/optget.c: fix getopt_long() prefix==1 bug that missed short flags
+03-04-27 comp/system.c: handle <ast_map.h>
+03-04-24 vmalloc/vmmopen.c: drop dup <unistd.h>
+03-04-21 tm/tmdate.c: fix next hour/min logic
+03-04-15 vmalloc/malloc.c: intercept __malloc() along with __libc_malloc()
+	 string/strdup.c: intercept __strdup() along with __libc_strdup()
+	 features/mmap: consolidate from features/(lib|sfio|vmalloc)
+	 add _NO_MMAP==1 to disable all mmap()/munmap() calls
+	 path/pathposix.c: add
+03-04-14 comp/setlocale.c: fix debug_mbtowc() return value for *s==0 || n < 1
+	 comp/iconv.c: fix error return errno values
+03-04-11 misc/stk.c: fix stkgrow() realloc bug
+03-04-05 string/tok.c: support readonly single token input strings
+	 disc/sfdcdio.c: fix F_DIOINFO and FDIRECT #ifdef's
+	 include/ast_std.h: allow _LARGEFILE64_SOURCE on __hppa
+	 features/common: fix `tst _foo_' => `tst foo_' typo
+	 features/float: fix `tst _foo_' => `tst foo_' typo
+	 features/float: add FLTMAX_(UINTMAX_MAX,INTMAX_MAX,INTMAX_MIN)
+	 comp/omitted.c: fix pathconf => _pathconf => _ast_pathconf loop
+03-04-03 features/float: add _ast_no_um2fm: no usinged intmax => floatmax cast
+	 vmalloc/vmbest.c: add getenv("VMCHECK") to initialize Vmcheck
+03-03-28 include/ast_dir.h: add D_TYPE; { D_FILENO D_TYPE } must be #ifdef'd
+	 misc/fts.c|getcwd.c|glob.c,preroot/getpreroot.c: add D_FILENO #ifdef's
+	 Makefile: make sure _BLD_ast is defined for all compiles
+03-03-27 ast_vfork.h: generate from features/vfork to pick up headers/pragmas
+03-03-25 comp/omitted.c: drop free() of live environ
+	 path/pathshell.c: allow trailing .exe -- pox on that
+	 string/strtoi.h: fix bug leading 3 digits before thousands sep bug
+	 string/(fmt|str)[gu]id.c: we know root when we see it
+03-03-24 misc/optget.c: handle : and ? in := default value
+03-03-21 ast_std.h: drop all spawn*() but spawnveg()
+	 obsolete/spawn.c: add for dropped spawn*()
+	 features/lib: _use_spawnveg if spawnveg() is a win over fork()/exec()
+	 features/lib: drop NutForkExecve() and _map_spawnve
+	 features/lib: fix memccpy test to clean up /tmp droppings
+	 comp/spawnveg.c: call posix_spawn() if implemented
+	 comp/omitted.c: add spawnve() intercept
+	 comp/getoptl.c: set getopt_long() optind even if no options
+	 tm/tmfmt.c: add %Q<delim>recent<delim>distant<delim>
+	 misc/optget.c: fix trailing '*' for option and option args
+	 sfio/sfmode.c: getenv("_AST_SFIO_OPTIONS") [,]SF_LINE[,] for fd {0,1,2}
+	 vmalloc/*: kpv sync for uwin build independent of libast
+03-03-18 port/astconf.c: switch to dynamic string values (saves 7K data/bss)
+	 string/strmatch.c: switch to dynamic regex cache (saves 3K data/bss)
+	 regex/regcoll.c,ucs_names.h: initialize rw tables from smaller ro data
+	 features/lib: add vfork test for passing SIG_IGN across exec
+	 features/lib: add spawn test for passing SIG_IGN across spawn
+03-03-17 comp/omitted.c: unlink() renames to .deleted dir in case file open
+	 sfio/sfpopen.c: handle mode "" for spawn with no pipe
+	 features/float,comp/frexp.c,comp/frexpl.c: add pow2() table alternative
+03-03-12 features/lib: fix linux.ia64 memccpy() tests -- now its their turn
+	 features/vmalloc: fix /dev/zero test
+	 features/align: _ast_intmax_t and _ast_fltmax_t join the union
+	 misc/stk.c: fix struct frame size to align data
+	 disc/sfdcdos.c: change sfslen() => sfvalue(f)
+03-03-10 misc/optget.c: handle [f<:>x:lllddd]
+03-03-07 port/astconf.c: uninitialized CONFORMANCE + POSIXLY_CORRECT => standard
+03-03-05 comp/omitted.c: make sure at least /bin is in PATH to find cygwin dlls
+03-03-02 path/pathshell.c: write access to /bin is effectively root
+03-02-28 features/float: add (FLT|DBL|LDBL)_U?(LONG|LONGLONG|INTMAX)_(MIN|MAX)
+03-02-25 features/lib: change vfork() test to use _exit() instead of exit()
+03-02-23 include/error.h: update ERROR_VERSION for error_info.number space
+03-02-22 comp/conf.sh: wrap ksh check in eval to avoid premature exit
+03-02-21 misc/fts.c: verify chdir(..) to avoid malicious dir rename()
+03-02-19 string/strtoip4.c: isspace() instead of ' '||'\t'
+03-02-17 regex/regcomp.c: fix stats.l REX_REP logic that botched REX_BM
+03-02-13 string/base64.c: handle catenated encodings
+03-02-11 features/libpath.sh: change LIBPATH to <dir>[:<env>[:<pat>]][,...]
+03-02-07 path/pathfind.c: allow "/dev/null" to be PATH_REGULAR
+03-02-06 include/ast.h,fmtquote.c: add FMT_ALWAYS|FMT_ESCAPED|FMT_SHELL|FMT_WIDE
+03-02-05 tm/tmdate.c,tm/tmword.c,string/strelapsed.c: '_' treated like ' '
+03-02-01 string/strelapsed.c: handle ps style [day-][hour:]min:sec
+03-01-31 port/astlicense.c: fix author=* match
+03-01-30 include/tm.h: add tmisleapyear() macro
+03-01-29 comp/getopt.h,comp/getoptl.c: add gnu getopt_long(), getopt_long_only()
+	 include/ast_getopt.h: for non-gnu part of comp/getopt.h
+	 include/ast_std.h: include <ast_getopt.h> instead of <getopt.h>
+03-01-28 ast.h,string/base64.c: add base64encode() and base64decode()
+	 path/pathfind.c: verify S_ISREG()
+03-01-24 path/pathexists.c: fix abs dir bug and deal with case ignorance
+03-01-23 path/pathpath.c: honor PATH_ABSOLUTE for the easy case too
+03-01-22 path/pathprobe.c: fix search to find both the probe script and command
+03-01-17 misc/magic.tab: application/zip => appplication/(gzip|pzip|zip)
+03-01-14 misc/optget.c: change href="" to href="."
+03-01-10 include/ast_std.h: strtold() import hackery for static __CYGWIN__
+03-01-03 include/regex.h,regex/regcomp.h: add REG_SHELL_GROUP
+	 include/ast.h,string/strmatch.c: add STR_GROUP for REG_SHELL_GROUP
+02-12-15 include/error.h: errorcontext => Error_context_s (compatible til 2004)
+02-12-06 misc/sigdata.c: add NoF(sigdadata) -- why nmake was uninterruptable!
+02-12-03 comp/omitted.c,features/omitted: handle cygwin alarm() return botch
+02-11-27 misc/swapop.c: op=3,size=4 => op=7
+	 string/strlcat.c,strlcpy.c: fix uwin decl clash
+02-11-26 sfio/sfvprintf.c: fix sfsprintf() ' ' termination bug
+02-11-22 misc/glob.c: move static struniq() to libast extern
+	 string/fmtversion.c,include/ast.h: add fmtversion
+02-11-18 string/strncopy.c: add
+	 misc/magic.tab: list size for magicid.h magic
+02-11-14 sfio/sfvprintf.c: add %#c for C escapes
+	 include/error.h: add ERROR_NOTIFY context flag for builtin commands
+02-11-11 string/strtoi.h: add S2I_size for strnto*() size_t 2nd arg
+	 sfio/sfstrtof.h: add S2I_size for strnto*() size_t 2nd arg
+	 comp/putenv.c: add setenv() and unsetenv() wrappers for setenviron()
+02-10-31 path/pathfind.c: add dir of including file to the pathinclude() list
+	 misc/optesc.c: add
+02-10-30 string/strtoip4.c: set next char pointer even on error
+02-10-29 comp/resolvepath.c: add (size_t version of realpath())
+	 misc/mime.c: fix mimehead() to ignore null content values
+02-10-28 misc/glob.c: add GLOB_STARSTAR for /**/ and GLOB_NOTDIR optimization
+02-10-27 string/struniq.c: add
+02-10-23 features/common: fix off-by-one loop check
+02-10-18 include/ast_std.h: avoid off_t,ftruncate,lseek,truncate redefinitions
+02-10-17 misc/mime.c: handle type/* match, fix bogus header parse
+02-10-04 sfio/sfstrtof.h: S2F_static <0:export =0:private >0:static
+02-10-02 features/common: don't define _WIN32; define _WINIX => unix on windows
+	 features/tty: finally stomp the bsd _POSIX_VDISABLE redefinition
+	 misc/fastfind.c: add more specific findwrite() error messages
+	 comp/omitted.c: fix cygwin utime() to update st_ctime
+	 comp/strtol.c,strtoul.c: __CYGWIN__ static link workaround XXX
+	 string/fmtls.c,fmttime.c: tmform() => tmfmt()
+02-09-22 port/astconf.c: return values in fmtbuf() buffer instead of stack
+	 port/mnt.c: don't set MNT_REMOTE for win32 ?:paths
+	 sfio/sfvscanf.c: _sfdscan() is library global (not static)
+02-09-21 path/pathkey.c: add tool arg for mamake compatible hash
+	 features/fcntl.c: handle iffe _hdr_lcl_* => _lcl_* change
+02-09-15 comp/conf.sh: fix enum vs. macro test
+	 cdt: kpv sync
+02-09-11 ast.h,features/common: move _WIN32 macro init to features/common
+	 features/common: enable __EXTERN__ and __DEFINE__ for _WIN32&!_UWIN
+	 features/float: add -lm to _ast_*_nan_init tests
+	 vmalloc: kpv sync with vmresizef => vmgetmem
+	 features/iconv: must have both <iconv.h> and iconv_open()!
+	 features/vmalloc: alloca test must compile *and* link
+	 sfio/sfvscanf.c,sfstrtof.h: add flag arg to char get, fix NaN loop
+02-09-10 vmalloc/vmhdr.h: enable getpagesize() and sbrk() prototypes
+	 features/fcntl.c: enable mmap64() prototype
+	 include/ast_windows.h: windows.h wrapper with ast namespace workarounds
+02-09-07 misc/mime.c: fix quoted value parse bug that ate the whole line
+02-09-05 features/vmalloc: add free() to _std_malloc test
+	 include/ast.h: NoF(x) now defines _DATA_x for !_BLD_DLL too
+	 tm/tmlocale.c: { C POSIX en } == unix dadgummit
+02-08-29 path/pathfind.c: initialize Dir_t.next=0
+02-08-28 uwin/rint.c: update
+	 features/libpath.sh: "bin" is now the default value
+02-08-22 vmtrace.h: add for debugging
+02-08-20 misc/magic.c: convert to use <cdt.h>
+	 vmalloc/vmresizef.c: add for generic discipline resizef default
+	 string/strelapsed.c: allow long time component names
+02-08-19 misc/optget.c: add `.fp 5 CW' to --nroff output
+	 string/(fmtfs|fmtuid|fmtgid|strgid|struid).c: convert to use <cdt.h>
+	 include/dt.h,cdt/dtnew.c: add for dtopen() in specific vm region
+02-08-13 comp/omitted.c: fix bzero logic for e.g. unixware.i386
+	 include/ast.h: add fmtbase->fmtbasell; swap in 2003-09-01
+02-08-12 regex/regnexec.c: fix REG_MINIMAL REX_DOT mb bug
+02-08-08 features/iconv: <ast_common.h> instead of <sys/types.h> <ast_common.h>
+02-08-07 regex/regcomp.c: recognize anchors in BRE subexpressions
+02-08-06 comp/iconv.c: handle win32 cpNNNN == windows-NNNN aliases
+02-08-05 cdt/*: sync with kpv src
+02-08-02 features/iconv: include sys/types.h for ast_types.h
+02-08-01 misc/magic.c: magic file "." names the default
+	 misc/magic.c: handle addr type (from irix string)
+	 features/lib: move malloc tests to features/vmalloc
+	 features/vmalloc: snarf tests from features/lib
+	 vmalloc/*: sync with kpv src
+	 comp/libc.c: dropped -- __libc_* intercepts moved to vmalloc/malloc.c
+02-07-30 features/lib: handle __libc_malloc() in _std_malloc test
+	 vmalloc/malloc.c: add gnu pvalloc()
+	 features/vmalloc: fix alloca check
+02-07-29 features/limits.c: handle netbsd guards
+02-07-27 sfio/sfpoll.c: handle rw pipes
+02-07-25 features/iconv: include ast_types.h for size_t in ast_iconv.h
+02-07-18 apply LARGEFILE64 header prototype clash patches
+	 misc/optget.c: __EXTERN__ _opt_info_ instead of opt_info
+02-07-17 ast_std.h: memzero() now defaults to memset() instead of bzero()
+02-07-16 ast_std.h: add ast.env_serial
+	 misc/setenviron.c: increment ast.env_serial
+	 include/tm.h: tmset() now calls tminit() directly
+	 tm/tminit.c: check ast.env_serial for env change
+	 tm/tmfix.c: speed up for large values of tm_mday
+02-07-15 comp/fnmatch.c: fix memory leak caused by missing regfree()
+	 comp/strstr.c: fix broken interpretation and implementation
+	 comp/iconv.c: intercept (but no-op) null to and from buffer pointers
+02-06-27 ast_std.h: map _sysconf => _ast_sysconf for sun
+02-06-26 cdt,sfio,vmalloc: kpv sync -- is this ever easy?
+02-06-24 sfio: kpv sync, vfwscanf(),fputw() fix (wcslen(x)*sizeof(wchar_t)!!)
+	 misc/fts.c: fix symlink chdir() optimzation bug
+02-06-11 sfio/sfwrite.c: string to file fix
+	 Makefile: __OBSOLETE__==20020101
+02-06-01 regex/regcomp.c: REG_DELIMITED now consumes the delimiter
+02-05-31 regex/reglib.h,regcomp.c,regnexec.c: null subexpression fixes
+02-05-24 misc/fts.c: disable dir link counts in 3d
+	 misc/magic.c: fix "*(mkfile)" sh pattern to "*@(mkfile)"
+02-05-20 regex.h,regex/regsubcomp.c,regex/regsubexec.c: add
+	 regex/regsub.c: deprecate
+02-05-16 tm/tmfix.c: fix '60+n min/sec ago' bug for n min/sec after the hour
+02-05-14 regex/regsub.c: fix (^|x) null match early termination bug
+02-05-13 dir/dirlib.h: drop errant extern==__EXPORT__
+	 features/uwin: add uwin lib tests
+	 uwin/*.c: check features/uwin for stubs
+	 features/float: add nan representation generation
+	 sfio/sftable.h: used _ast_*_nan_init for huge values
+02-05-09 misc/fts.c: fix virtual top to force ``child'' stat()
+	 features/common: define va_copy() only if not in <stdarg.h>
+02-05-01 string/strtoip4.c: cisco inverted quad mask must have 4 parts
+02-04-30 misc/magic.tab: fix pzip version check
+02-04-19 string/strtoip4.c: handle cisco inverted quad mask n.n.n.n/i.i.i.i
+02-04-18 misc/fts.c: add chdir() verification stat() optimizations
+	 path/pathkey.c: check PROBE_ATTRIBUTES for list of vars
+02-04-12 port/astlicense.c: type=open tweak, fix author list spacing
+02-04-11 regex/regcomp.c: check for pattern number overflow
+02-04-05 tm/tmfmt.c: add %u
+02-04-04 sfkeyprintf.c: fix %c numeric value
+	 path/pathpath.c: check plain path first -- duh
+02-04-03 misc/fts.c: fix (FTS_PHYSICAL|FTS_NOSTAT) stat optimizations
+	 ftwalk.c: only clear FTW_DELAY if FTW_CHILDREN
+	 ftwalk.h: add FTW_NSOK for FTW_DELAY
+02-03-29 ast.h: drop strerror() prototype -- already in <ast_std.h>
+	 features/stdio: check for _SFIO_H redundant _Sfstd* declarations
+02-03-26 misc/glob.c: fix GLOB_LIST gl_flags values
+02-03-24 port/mnt.c: update bsd fstype name and mount option logic
+02-03-23 Makefile: add ast_wchar.h to the .check.hdr list (for mamake)
+02-03-17 features/stdio: hack around g++ 3.* clashes
+	 Makefile: add ast_nl_types.h to the .check.hdr list (for mamake)
+	 string/strtoip4.c: fix validity check bug that only checked last part
+02-03-14 misc/optget.c: fix --keys to not expand inline <.>..\f
+02-03-12 port/astlicense.c: add type=free
+	 path/pathaccess.c: sibling ".." search ignores relative dirs
+	 sfio/sfvscanf.c: sfstrtof get() must return 0 on eof
+02-03-11 path/pathexists.c: check path by pairs checking {ENOTDIR,ENOENT}
+02-02-14 features/float: copy local min/max macros to avoid printf roundoff
+	 features/wchar: include <ast_common.h>, not <ast_std.h>
+	 misc/magic.c: match[]=>matches[] to fix K&R match() macro conflict
+	 include/vmalloc.h: include <stdlib.h> for !_PACKAGE_ast
+	 uwin/mini.sym: add sprintf (now required by features/common)
+	 regex/regnexec.c: truncate wide chars for <ctype.h> functions
+	 Makefile: fix MAM ast_common.h sequencing bug by making it first
+	 cdt/dthash.c: fix DT_DELETE memory leak (DT_DETACH typo)
+	 cdt/dthash.c: fix DT_DELETE double free (dt->data->here typo)
+	 regex/regcomp.c: fix recomb() to reject RE with backref
+	 features/iffeio: explicitly generate stdio.lcl
+	 stdio: add {fcloseall,f(get|put)s_unlocked,fmemopen,getdelim,getline}
+	 tmmake,tmtime: allow negative time_t if native localtime/gmtime do
+	 tmdate: allow years before 1969
+	 fmtfmt: add
+	 include/ast.h: add { PATH_TOUCH_CREATE PATH_TOUCH_VERBATIM }
+	 Makefile: add std/*.h for std header iffe overrides
+	 comp/iconv.c: fix non-C win32 sfreserve() loop
+02-02-11 features/common: separate long long / long double tests
+	 features/common: verify printf handles long long / long double
+02-02-02 include/ast_std.h,sfio/sfhdr.h: drop _hdr_locale tests -- always on now
+	 include/ast_std.h: trust _UWIN <unistd.h>
+02-01-31 port/mnt.c: add aix options field
+02-01-30 comp/strstr.c: add for ancient s5
+	 stdio/_flsbuf.c: only on systems that transfer to native (e.g., uwin)
+	 string/strtoi.h: cat min/max error return values
+02-01-28 features/tty: add cf[gs]et[io]speed macros for <termio.h>
+	 comp/rename.c: punt to (ancient) /usr/lib/mv_dir on EISDIR
+02-01-24 sigcrit.c: fix SIGCLD!=SIGCHLD interrupt loop
+	 sfvprintf.c: convert fast io macros to functions for uts.390 cc
+	 string/strtoi.h: drop #pragma prototyped for standalone sfio
+	 sfdcsubstr.c: rename from sfdcsubstream.c for 14 char fs
+02-01-22 execlp,execvp,execvpe,spawnlp,spawnvp,spawnvpe: fix __EXPORT__
+	 spawnlp,spawnve,spawnvp,spawnvpe: handle ms mode arg -- barf
+	 sftable.c: ifdef hacks for _WIN32&_ALPHA_ fp exception
+	 _stdfun.c: add _UWIN&_ALPHA_ iob map
+02-01-18 sfio/sfstrtof.h: drop #pragma prototyped for standalone sfio
+02-01-17 features/hdr: don't include <stddef.h> after it doesn't check out!
+02-01-16 misc/magic.c: add version type for YYYYMMDD or [a.][b.]c.d
+	 misc/magic.c: recode mime %s parse -- sensible and no buffer overflow
+02-01-15 misc/magic.tab,magicid.h: add generic binary magic number and header
+02-01-12 tm/tmlocale.c: override win32 default date for {C,POSIX,en} locales
+	 comp/omitted.c: fix cygwin workaround logic bugs
+02-01-09 stdio/fseeko.c,ftello.c: add from UNIX98
+02-01-08 comp/conf.sh: use $cc instead of cc
+02-01-07 string/strlcat.c,string/strlcpy.c: add bsd api
+01-12-18 comp/conf.tab: fix LFS_CFLAGS default for sun _CS_LFS_CFLAGS botch
+	 features/common: add hdr stdarg test
+	 tm/tmdate.c: handle YYYY/MM/DD
+01-12-10 misc/magic.tab: add generic 0x00010203 binary magic
+01-12-03 path/pathprobe.c: return HOME relative path if readonly/non-suid fs
+01-11-30 misc/optget.c: add simple cache for repeat offenders (like ksh read)
+	 sfio/sfhdr.h: preserve errno across SFMMSEQON-SFMMSEQOFF
+01-11-29 magic.tab: fix GIF version number listing
+01-11-28 string/fmtbase.c: p!=0 => base always included in output
+01-11-26 misc/fts.c: empty path is an error
+01-11-14 misc/optget.c: fix --?+SECTION queries to include paragraphs
+01-11-20 regex/regnexec.c: fix REG_MINIMAL character class match bug
+01-11-19 features/lib: retain _lib_confstr for all solaris releases
+01-11-16 comp/setlocale.c: fix !_lib_setlocale typo
+01-10-31 regex/ucs_names.h: add string catenation to keep line length low
+	 misc/fastfind.c: handle gnu slocate db read
+	 misc/optget.c: add --?+SECTION queries
+	 comp/fnmatch.h: add FNM_NOSYS
+01-10-30 tm/tmdate.c: fix cron specs when both wday and mday are specified
+01-10-20 misc/glob.c: fix bug that called  trim() twice on same path
+	 misc/glob.c: fix  trim() bug that restored / to wrong position
+	 string/fmtre.c: fix { ^ . $ } translations
+	 misc/optget.c: use original string if translation fails -- duh
+	 sfio/sfhdr.h: assume <errno.h> assigns proper atttibutes to errno
+	 comp/regcmp.c: __ia64 workaround fixed by proper CC.DLL probe
+	 comp/getdate.c: __ia64 workaround fixed by proper CC.DLL probe
+	 features/lib: add lib getdate
+01-10-18 features/lib: check for strtod static link collision
+	 features/float: add another signed cast for old bsd cc
+	 features/wchar: add <stdlib.h> <stdio.h> before <wchar.h> for old bsd
+01-10-17 sfio/sfcvt.c: limit max precision to { FLT_DIG DBL_DIG LDBL_DIG }
+	 sfio/sfcvt.c: fix %[aA] format to always have leading 0[xX]1.
+	 sfio/sfvprintf.c: handle %C %lc %S %ls for wchar_t args
+	 sfio/sfvscanf.c: handle %C %lc %S %ls for wchar_t args
+	 string/fmtmode.c: fix bug that omitted trailing ' '
+01-10-12 misc/optget.c: . => . for --??nroff
+	 comp/wc.c: fix mbstate_t initialization typo
+	 features/float: fix max integer / float loop termiation
+	 features/float: fix LDBL_UINTMAX_MAX typo that did DBL_UINTMAX_MAX
+01-10-11 include/sfio.h: fix _Sfstd* import/export
+	 features/common: fix _UWIN __DYNAMIC__() definition
+01-10-06 features/fcntl.c: { O_BINARY O_TEXT } default to 0
+	 features/omitted: add for comp/omitted.c
+	 sfio/sfopen.c: O_BINARY default for _WIN32&&!_UWIN
+01-10-05 misc/glob.c: fix `\(x/*' GLOB_NOMATCH bug that returned `(x'
+	 misc/optget.c: fix localization lookup that didn't drop doubled : ? ]
+01-10-04 comp/setlocale.c: handle sizeof(wchar_t)!=4 in debug locale
+	 comp/conf.sh: handle sytems where _SC_* is both an enum and a macro
+01-09-25 astconf: add LIBPREFIX
+01-09-20 features/common: add __DYNAMIC__() for dll externs
+01-09-19 cdt: kpv update
+	 mb*() macros: update for ksh conversion, extend debug locale
+01-09-16 tm/tmlocale.c: add compiled in defaults for C locale
+	 misc/glob.c: add gl_nextdir callback for GLOB_COMPLETE
+01-08-14 clarify _WIN32 vs. _UWIN vs. __CYGWIN__
+	 tminit: fix standard & daylight initialization
+01-09-11 pathnative.c: add for native fs representation
+	 regex.h: fix regerror_t prototype
+01-09-04 regex/regnexec.c: fix REG_ICASE for multi-char collating elements
+	 tm/tmlocale.c: fix old ascii LC_TIME load
+	 locale*: add new LC_* categories
+	 comp/omitted.c: add CYGWIN workarounds
+	 features/lib: add CYGWIN workarounds
+01-08-11 features/common: some compilers have long long but no LL constants!
+	 features/lib: add mmap64 implementation test (for linux.s390)
+	 regex/regcomp.c: fix  in [...] parse
+	 setlocale: retain user locale spelling in setlocale() return value
+	 features/limits.c: don't include ./limits.h -- duh
+	 fmtesc: don't escape multibyte chars
+	 tm/tmlocale.c: fix native C locale default
+01-08-08 features/float: some compilers (msdev) forget long long vs. double
+01-07-31 misc/optget.c: handle suboptions
+01-07-27 cdt.h: add DTDISC()
+01-07-17 iffeio.h: move to include for stdio bootstrap iffe workarounds
+01-06-25 regex: perl extensions added and tested
+01-06-21 misc/error: add ERROR_OPTIONS=prefix=string for message processing
+01-06-15 string/chresc: only 2 hex digits max for \xxx
+	 regex/regsub: handle REG_SHELL ~(nnn) rhs backrefs
+01-06-11 regex: handle embedded   in pattern and subject string
+	 regex: add (?nnn) for backrefs > 9
+	 comp/fnmatch: add FNM_LEADING_DIR for gnu compatibility
+	 features/float: _ast_flt_unsigned_max_t for bsd.i386 omission
+01-06-06 misc/optget.c: add o option for old ps,ar,tar with optional leading -
+	 regex/regcomp.c: REG_LENIENT|REG_DELIMITED \<newline> => <newline>
+	 regex/regcomp.c: REG_LENIENT  00 => NUL
+01-06-04 features/dirent: replace Makefile hack with iffe semi-hack
+	 regex/regnexec.c: negation must also check REG_SHELL_DOT
+01-06-03 sprintf.c: change buf size from SF_BUFSIZE to INT_MAX
+01-05-31 glob: fix gl_fignore to ignore leading . by default
+	 features/lib: add botch_d_ino_dirent64 for linux botch
+01-05-25 port/lc.tab: add a few missing language_territory's
+01-05-23 string/chresc: \C[.collation-element.]
+	 fmtmatch,fmtre: update for <regex.h> syntax extensions
+01-05-21 regex: add perl extensions, unicode names for collation elements
+01-05-11 string/chresc: \ == \E == escape, X == control X, \x{..} == \x..
+01-05-09 path/pathtemp.c: pathtemp(0,0,0,"/private",0) for mode S_IRUSR|S_IWUSR
+	 port/touch.c: handle utime(2) EPERM to fix bug that truncated
+	 regex: change REG_MINIMAL to avoid negation -- much faster now
+01-05-08 *.h: add some off_t macro guards for suse linux
+01-05-03 regcomp.c: optimize ((x)!)* to ((x)!)
+	 wchar: add <wchar.h> and stdio wchar routines
+01-05-02 feaures/wchar: add <wchar.h> intercept, add stdio wchar functions
+01-05-01 string/strtoi.h: signed strtoi accepts qualified unsigned constants
+01-04-30 comp/setlocale.c: fix code that relied on 2 simultaneous getenv()'s
+	 tm/tmlocale.c: check for UTF-8 encoded LC_TIME files
+	 misc/magic.tab: add utf-8 and utf-16 U+FEFF magic
+01-04-26 features/common: some cc's have _ast_int8_t but not LL constants
+01-04-24 features/lib: add _std_strtod for mac os X
+01-04-23 ccode: add CC_sub for ms embedded EOF char on ebcdic -- no joke
+01-04-20 iconv: handle ebcdic<=>utf
+	 mc.h,mc.c: add mcindex()
+	 ast_std.h: add AST_MESSAGE_SET
+01-04-18 features/libpath.sh: fix mvs probe
+	 *: sundry mvs fixes
+	 glob: fix GLOB_NOCHECK to avoid stat() and properly trim patterns
+01-04-01 strtod,strtold: add
+	 strtol,strtoul,strtoll,strtoull,strton,strtonl: handle locale & ERANGE
+	 sfvprintf,sfvscanf: handle locale decimal_point,thousands_sep
+	 sfvprintf,sfvscanf: handle %a,%A
+	 setlocale: add LC_NUMERIC decimal_point,thousands_sep init
+	 ast_std.h: __OPTIMIZE_SIZE__==1 to disable non-std __GNUC__ inlines
+	 pathexists: path cache to cut down pathpath() access(2) calls
+	 features/stdio: __FILE_TAG == _sfio_s for solaris
+01-03-23 iconv: fix iconv_move buffer boundary bug that stopped at 1 block
+01-03-19 glob: add GLOB_AUGMENTED
+	 regex: REG_SHELL syntax error implies REG_LITERAL match
+	 strto[ln][ll]: add overflow checks
+01-03-17 locale: reimplemented to provide canonical locale namespace
+	 locale: add LC_ALL=local for local system user default
+	 tm.h: TM_*_3 => TM_*_ABBREV
+	 tmfmt: handle standard E and O format modifiers
+	 tmlocale: consult nl_langinfo() if defined
+	 fmtquote("
+01-03-08 regex: handle multibyte chars and collation classes
+	 strmatch,strgrpmatch: now a wrapper on regex
+	 ast_std.h: add mb*() multibyte and collation support
+	 sfvscanf: handle locale decimal and thousand
+	 proc*,system: handle ignored SIGCHLD
+	 sfkeyprintf: handle %*C
+01-03-06 locale: add locale data cache for efficient multiple locale switching
+	 optget: fix LC_MESSAGES!=C --man bug
+01-03-01 Makefile: HEADEROPT is not optional for win32.*
+	 comp/syslog.h: comply with the de factos
+	 optget(): fix <.>..< >stack bug that referenced data after pop
+01-02-27 *locale*: a batch of fixes for native LC_MESSAGE&LC_TIME hooks
+01-02-22 pathprobe: reprobe test now checks probe.ini too
+	 sfio_s.h: advertize public Sfio_t members with _ prefix
+	 sfio.h,features/stdio: add <sfio_s.h> reference
+	 sfhdr.h: map <sfio_s.h> _foo to foo
+	 sfio.h: SF_APPEND=>SF_APPENDWR, SF_CLOSE=>SF_CLOSING
+01-02-14 comp/conf.sh: probe <unistd.h> for _(CS|PC|SC)_* getconf symbols
+	 stdio/*: update for uwin stdio.dll binary compatibility
+	 sfread: finally fixed premature pipe read EOF bug
+	 fmtscale: format tenths for number > 0 && number < 10
+01-02-09 _sfmode(),_sftype(),_Sfextern: UWIN binary stdio compatibility exports
+01-02-08 sfgetm,sfputm,_sfputm: fix max clash with k&r max() macro
+	 setlocale: undef valid for sun4 k&r valid() macro
+01-02-07 catopen.c: don't do native catopen for the debug locale
+01-02-06 sfraise.c: add SF_FINAL check to avoid (posibly) freed disciplines
+01-01-01 features/common: fix uwin __DEFINE__
+	 sftable: initialize decimal and thousand
+	 magic.tab: add corel wordperfect document
+	 syslog: add LOG_LEVEL, add ' only if needed
+	 include/tm.h: #undef daylight for _WIN32
+	 sfio.h: add _SF_APPEND and _SF_CLOSE for native namespace incursion
+	 ast_std.h: add AST_LC_multibyte for MB_CUR_MAX>1
+	 setlocale: set AST_LC_multibyte
+	 strmatch: check AST_LC_multibyte
+	 features/limits.c: add _BITS_POSIX1_LIM_H guard for linux
+	 features/libpath.sh: fix for aix LIBPATH
+	 procopen,procclose: block SIGCHLD if PROC_FOREGROUND (e.g., system(3))
+	 optget.c: add enumerated option argument values
+	 optget.c: add <!--INTERNAL--> for private --html
+	 optget.c: fix memory leak that hit shell builtins hard
+	 sfio: drop sfread small chunk logic
+00-12-25 mnt.c: handle " and ' quoting for fstab
+	 sftmp.c: let pathtemp() open the fd O_EXCL
+00-12-15 conf.sh: add -v for verbose trace
+	 features/(limits|unistd).c: no FEATURE/types because of _POSIX_SOURCE
+	 features/time: add default for CLOCKS_PER_SEC
+	 features/lib: std_malloc now handles NeXT
+00-12-13 strton: recognize qualifier only if preceded by a digit
+	 features/lib: change return in vfork() test to exit() for linux sparc
+	 fmtquote: fix $'...' quote logic
+00-12-11 tmdate: fix cron format bug that mishandled months
+00-12-01 optget: handle $Id: ... $ in --?-version
+	 features/fcntl.c: fix _STDPP_ mmap munmap
+00-11-27 magic: drop dup sfclose() in load()
+	 optget: handle error_info.id==0
+00-11-22 features/stdio: add _FILEDEFED for sol9.sun4
+	 strton,stronll: handle [u|U][l|L][ll|LL] qualifiers
+00-10-31 tmdate: add TM_DATESTYLE and mmddHHMM[cc]yy
+	 astlicense.c: #include <hashkey.h> MAM workaround
+	 astlicense.c: check for non-empty CONTRIBUTORS
+00-10-26 features/stdio: add _FILE and __FILE for gnu
+	 misc/stk.c: fix stack pointer check off-by-one (dgk does it too!)
+00-10-23 syslog.h: sync with bsd values
+00-10-18 _STUB_* now functions instead of common symbols
+	 all extern data declared with definition to eliminate common symbols
+	 fastfind: add mac/bsd /var/db/locate.database
+00-10-17 features/lib: add apple osX (darwin.ppc) workarounds
+00-10-12 add: fmtbuf(), fmtclock(), fmtip4(), strtoip4()
+	 fmt*() now use fmtbuf() for tmp fmt buf allocation
+00-10-05 regex: add REG_DISCIPLINE and regdisc_t for alloc/error disc
+00-09-29 features/lib: pipe_rw==0 for sgi: boot rw == bin incompatibility
+00-09-21 astlicense: handle ' and 
+00-09-20 sfwrite: fix write() error in sfprintf() loop
+00-08-11 hdr,vmhdr.h: check/hide { getpagesize sbrk } prototypes
+	 astlicense: add noncommercial
+00-07-31 fflush: don't seek on pipes
+	 sfresize: add
+	 setlocale: fix bad newof() call
+00-06-01 strmatch: initialize match.current.beg[0] to avoid dump at line 670
+	 sfio/stdio: a few more errno tweaks
+	 astquery: sfstdin/sfstderr by default
+00-05-26 sfmode: errno=EBADF for invalid stream use
+00-05-22 rewind: fix for xopen test
+00-05-18 mcfind: returns absolute path
+00-05-16 optget: --keys must catch <.>..< >too
+	 translate,mc: errno cleanup
+00-05-09 magic: add netbsd binary magic
+	 fts: PATH_RESOLVE!=logical => FTS_SEEDOTDIR
+	 ftwflags: call fts_flags()
+	 astconf: astconf(0,0,0) re-syncs with _AST_FEATURES
+00-05-08 optget: --usage & --keys for last -catalog group only
+00-05-02 iconv.c: add; use codes[] in ccmapid() and ccmapname(); "" for native
+00-05-01 pathtmp: copy env values (libshell or putenv may change)
+00-04-01 optget: drop bar from [-foo?bar] for --??keys
+	 sfvscanf: add %X -- duh
+	 features/common: fix va_listval() for power pc
+	 findopen: fix FIND_GENERATE codes file search
+	 magic: add ERROR_translate() and msgcat.key
+	 tmlocale: add for LC_TIME locale info
+	 tmlex: check tm_info.format and tm_data.format
+	 tmfix: fix for tm_wday special case (via nl_langinfo on LC_TIME fields)
+	 strftime: fix for nl_langinfo special case
+	 ast_std.h: provide LC_* defauls if not defined
+	 sfnew: check ${_AST_sfio_bufsize} -- don't tell kpv
+	 catopen,nl_types.h: add intercept to mc* routines
+	 magic.tab: add ast message catalog
+	 strerror: add _ast_strerror intercept with ERROR_translate("errno")
+	 fmtquote: escapes >0177 only if (flags&2)
+00-03-17 feof: stdio macro functions only for _UWIN
+	 optget: proper ERROR_translate() calls
+	 astgetconf: add for thread safe error message control
+	 astlicense: fix type=special but with non-null notice
+	 errorx: add for ERROR_translate() support
+	 ERROR_translate: add locale id args for alternate dictionary
+	 option.h: move _OPT_PRIVATE_ to pointer to avoid dll size mismatch
+	 ftwalk: fix FTW_CHILDREN bug that hit top level non-dirs twice
+	 translate.c: default error_info.translate
+	 astconf: fix dup loop thrash that never returns, add _AST_VERSION
+00-03-10 ast_std.h: do _LARGEFILE_SOURCE initialization before std headers
+	 fmtquote: handle $'...' quotes
+00-03-07 optget: fix numeric option support test
+	 sfkeyprintf: add %q for '...' quoting with ansi escapes
+00-03-06 features/stdio: fix _sfflsbuf prototype (dingold@gte.net)
+00-02-14 pathtmp: fix pid cache bug that sometimes repeated after ~10 attempts
+	 optget: "..." attribute quote
+	 pathfind: eliminate *: prefix in lib, not type
+	 proc: PROC_FOREGROUND for system(3) semantics (wait status return)
+	 pathtmp: fix mktemp() logic
+	 fts: fix FTS_NOSEEDOTDIR bug that botched ./* in top list
+	 include/ast/prototyped.h includes include/prototyped.h
+	 pathpath: fix strdup(0) bug
+	 optget: --html <foo@bar> => ...mailto:foo@bar...
+	 sscanf: fix sfsscanf => sfvsscanf typo
+	 magic.tab: strengthen tar recognition
+00-02-08 conf.sh: fix ifdef for systems that think sysconf(FOO) is const
+00-02-04 glob: fix globlist_t.gl_flags
+00-02-02 vm*: add NoF() for data only files
+00-01-27 fts: fix top level .==.. statp bug (thanks to dr. ek)
+00-01-25 conf.tab: fix LFS*_*LAGS typo
+00-01-24 astlicense: handle type=verbose, license.notice, author=*
+00-01-11 pathprobe: generate info for first probe script on PATH - duh
+	 ast.h: add NoF(x) for files that define no functions
+	 tmpfile: fix implementation
+	 global change for string ERROR_translate() dictionary names
+	 optget: fix new way but no long names off by one
+	 optget: handle [--dictionary?name]
+99-11-19 comp/conf.sh: `expr length XXX` is not universal
+	 drop sfstdio; stdio via functions everywhere
+	 drop Makefile conditionals (and follow our own advice for once)
+	 sfio: new stream after atexit() bug fix
+	 tm: Tm_zone_t.daylight=0 for standard time within zone
+	 stdio: fopen => _ast_fopen: only way short of binary compatibility
+	 Makefile: atmain.C falls back to atmain.c
+	 optget: add --keys, s<section> option
+	 stdio: _UWIN check for foreign stdio
+99-11-11 astlicense: add
+99-10-31 glob: fix regexec pattern; add PATH_ATTRIBUTES case check
+	 pathpath: path==0 means malloc space
+99-10-22 tmfmt: %C=2-digit-century, %k=date(1), %y=2-digit-year-in-century
+99-10-18 fastfind: expanded default db lookup
+99-08-11 magic: fix off by one registry malloc
+	 features/fs: add __RENAME checks for stat familiy (netbsd)
+	 features/fs: major()/minor() fixes for s5
+	 features/libpath.sh: netbsd fix -- ld.so not in std places
+	 misc/fastfind: fix codes path generation bug
+	 optget: beef up --?* description, fix <TR>...</TR> nesting
+	 pathprobe: check for override (writable key file) first
+	 features/time: int tmtimeofday(struct timeval*);
+	 optget: fix opt_info.num, even if opt_info.arg!=0
+	 fts: FTS_PHYSICAL => FTS_SEEDOTDIR, add FTS_CHOP
+	 fastfind: init dir tab with logical and physical name
+	 glob: add gnu GLOB_ALTDIRFUNC
+99-07-17 sfio: kpv update and sfhdr.h sync!
+99-06-24 stdio: fix fflush() to ignore sfseek(0) return value
+99-06-23 magic: '\r' is text not control to placate m$
+99-06-08 stdio: fix fseek,ftell semantics
+	 uwin stdio: fflush() => _doflsh() to avoid __cplusplus clash
+	 getopt: call liberror() to avoid error() conflict
+	 tmfmt,tmscan: %N zone type (nation code), %z zone minutes west offset
+	 tmfmt: - no pad _ space pad 0 leading 0 pad
+99-05-28 magic: fix 'x' == '*' for any number, magic.tab tweaks
+	 features/lib: verify that stat64 really works
+99-05-21 tm*: add TM_WINDOW==69 for consistent century windowing guard year
+99-05-18 tmtime: add century leap year calc anticipating unsigned time_t
+99-05-17 sfkeyprintf: handle %o and %x!!
+99-05-09 pathprobe: $HOME/.probe if not suid and st_uid!=geteuid()
+99-04-28 magic,magic.tab: add registry()
+99-04-24 regcomp: fix ksh pattern +! parse
+	 regfatalpat: add
+	 optget: make : ? ] double escape consistent in all contexts
+99-04-01 features: drop iffeio.h and stdio.h when only printf() used
+	 regex: fix stats() .l and .k count
+	 fmtquote: added; most general fmtesc() form
+99-03-22 fmtesc.c,ast.h: add fmtnesq()
+	 optget: --?x works for -x option flag
+99-03-17 features/limits.c: workaround solaris __EXTENSIONS__ _timespec bug
+	 workaround limits.h circular prereq with ignore stdio.h
+	 sfvprintf: %04e left-pad zero fixed
+99-03-03 fts: uncle already: add FTS_SEEDOTDIR to retain leading ./
+	 regex: REG_MULTIPLE, BM for fixed string alternation
+	 optget: embedded `-' optional in long options, prefix={0,1,2}
+99-02-14 fastfind: fix dir format bug that emitted wrong paths
+	 astconf: fix redef off by one bug
+99-02-11 pathcanon(): don't cache astconf("PATH_LEADING_SLASHES", NiL, NiL)
+99-01-23 optget: move <old_opt.h> back into <option.h>, no open-close
+	 optget: add "[index:long-name:description]" for --long-name
+	 comp/gross: add weak __libc_attr for irix < 6.5 compatibility
+	 features/limits.c: tweak the guards again
+99-01-11 fastfind: handle old format count byte order
+	 magic.tab: fix elf to use real phdr offset
+	 magic.c,magic.tab: fix | to act like switch/case
+	 comp/fross.c,features/hack: for gross hacks
+	 features/stdio: avoid sfio namespace pollution
+98-12-25 tmdate: yyyy.mm.dd
+	 pathprobe: fix procrun() cmd path bug
+	 fmtesq: add
+	 features/common: win32.alpha va_list
+	 magic: add pc alpha object
+98-11-11 strmatch: add STR_ICASE
+	 pathprobe: punt to $HOME/.probe/<key+HOSTTYPE> if not S_ISUID
+	 tmzone,tmdate: handle +-minutes, nn/MMM/yyyy
+	 stropt: fix nested quote pop
+	 tmfmt: add %K => %Y-%m-%d/%H:%M:%S
+	 sfio/stdio: fix fseek() SF_PUBLIC omissions
+	 fmtesc: catch '\' (duh)
+	 vmalloc: vmbest round bug fix
+98-11-01 fts.c: no pathcanon() if (fts_flags & FTS_PHYSICAL)
+98-10-01 features/stdio prototype fixes
+	 optget: strton() instead of strtol() for #
+98-09-22 regcomp: add REG_DELIMITED and REG_ESCAPE delimited re support
+98-09-15 fix _LARGEFILE64_SOURCE stuff
+	 ast_std.h: provide mmap() prototype
+98-08-11 fix sfpopen() to ignore SIGPIPE by ignoresig() for sfio but not stdio
+	 fix procopen() to ignore SIGPIPE by ignoresig() for PROC_IGNORE
+	 sfio sfpopen/popen update
+	 magic.src: fix ustar entry
+98-07-17 fix ftwalk() short by one malloc()
+	 add fts_notify()
+98-06-25 sfdcmore,sfdcprefix: add
+98-06-19 tokscan: add %f %g
+98-06-01 disc/sf*.c: memset(0) after disc malloc()
+98-05-11 strelapsed: y==Y
+	 fts: pathcanon() top list 
+98-04-01 error: error_info.time for all msgs, just after cmd id
+	 error: no sfsync(sfstdin)
+	 sfio: sfpool, Sffmt_t update
+	 magic.tab: sgi core dumps -- why aren't these elf?
+	 stropt: (v+n) for unknown option is option value if n!=0
+	 procopen: fix setsid() for spawnveg() only
+98-03-19 malloc: add realloc foreign region check
+	 sfdisc.h: rename to match kpv disciplines
+	 fastfind: fix strcasecmp/strcmp directory prefix mixup
+98-03-17 features/fcntl.c,pathtmp,sftmp: add O_TEMPORARY
+98-03-01 pathcanon: fix PATH_LEADING_SLASHES to stat() both slashes
+	 pathcanon: add PATH_VERIFIED
+	 tmdate: add skip[] to expand separator char set
+	 fastfind: FIND_OLD for old 7 bit db, FIND_TYPE for new 8 bit typed db
+	 fastfind: default generates gnu LOCATE02 8 bit db
+	 magic: handle %s in mime description
+	 cdt: kpv update
+	 sfio: kpv update
+	 stdio: fpos64_t fseek64(), ftell64(), fgetpos64(), fsetpos64()
+	 stdio: fseek() => sfseek(SF_PUBLIC) to avoid locking
+	 fts: initialize parent stat[bp] from top level *after* statf done
+	 astmath: add -lm requirement test
+	 *: Astlong_t => _ast_*_t
+	 regex: simplify regcollate() (from doug)
+	 tmtime: preserve Tm_t*tm when calling tminit()
+	 astconf: add readonly PATH_ATTRIBUTES=[cirw]
+98-02-14 fastfind: add FIND_ICASE to ignore case
+	 tmdate,tmgoff: handle (+|-)hh[[:]mm[[:]ss]] absolute timezone
+	 tmdate: `<n> <part>' now assumes `next <n> <part>' instead of `this'
+	 tmfix: fix leap year bug that forgot to add 1900
+	 proc: add PROC_ZOMBIE
+98-02-06 strmatch() char class range bug fix
+	 regex char class range bug fix
+98-01-23 _WIN32: changed the #if logic again to accomodate _GNUC_
+	 mnt: grab the mount options too
+	 ast_std.h: hide getopt,getsubopt from stdlib.h
+	 features/limits.c: add gnu guard macros to avoid limits.h recursion
+	 features/mode.c: include "limits.h" instead of "FEATURE/limits.lcl"
+98-01-11 sfio.h: use Astlong_t, move Sfio_t Sfdisc_t typedef to top for stdio.h
+	 sfhdr.h: #undef SETLOCAL for hpux
+	 sfvprintf,sfvscanf: %I*x for sizeof(int_arg)
+	 handle ftruncate64 and truncate64
+	 dtopen.c: __hppa dll needs Dtset Dtlist Dttree refs here
+97-12-18 fmtnum: add
+97-12-11 magic: handle sgi 64 bit core dumps
+97-12-07 pathtmp: add override for TMPPATH,TMPDIR and cycling
+97-11-11 tm: handle 0 return from gmtime(),localtime() (dos negative time_t)
+	 features/stdio: fix fflush() macro to do physical sync
+97-10-31 astconf PATH_RESOLVE is logical if 3d&&!std, metaphysical otherwise
+	 magic: fix #! mime bug
+	 tm: tmtime() now calls tmfix() and adjusts tm_isdst too=>mtime() works
+97-10-11 dllfind,dlfcn: move to separate -ldll so -last can link static, duh
+	 Makefile,state.c: move forced header generation state.c => Makefile
+	 sfio: update including SF_WHOLE
+97-10-01 sfdostext: add \r=> sfio discipline
+	 stropt: NiL table => p=name for all name=value
+97-08-11 pathtmp: check pid to note forks
+	 procopen: FD_CLOEXEC rfd && wfd
+	 fts: fts_close() after fts_children() with no fts_read() now works
+97-07-17 error: sfsync(sfstdin,sfstdout,sfstderr) instead of sfsync(NiL)
+	 _sfcvinit: add sfio internal interface to base conversion tables
+	 strton: use _Sfcv* base conversion tables instead of sfsscanf()
+	 sfvscanf: use _Sfcv* base conversion tables
+	 mime: x- permutations now matched if exact fails
+	 mime: original- stripped from content-* headers
+	 tmdate: add yyyy-jjj, yyyy-mm-dd
+	 dllfind: add
+	 ccmapid: fix buf copy loop limit
+	 ccmapname,ccmapcpy: add
+	 sfstrtmp: add
+97-05-09 streval: fix up casts for pseudo-ansi cc
+	 features/types: use _ast_int_8 vars to verify support
+	 string/modedata: check for mvs.390 S_IFMT
+	 include/ast(_std).h: add #define __FILE_typedef
+	 magic: add ccode text check
+	 include/ftwalk.h: FTW_PATH=>FTS_NOCHDIR to avoid FTS_AGAIN (duh)
+	 fts: clear status for FTS_AGAIN (fixes rm -r bug)
+	 mnt: add mvs openedition w_getmntent()
+	 sfhdr: _hdr_float && <float.h> for correct MAXDOUBLE
+	 vmalloc/vmbest: if _std_malloc then use malloc()/free() not sbrk()
+	 remove: check _std_remove
+	 procopen: handle pio[{0,1}]=={0,1}
+	 setenviron,features/uinstd: test for mvs.390 dll environ hacks
+96-12-25 <sfio_p.h> -> <ast_common.h>
+	 __EXTERN__(type,object)
+	 __DEFINE__(type,object,value)
+	 magic: check strings in !CC_NATIVE code set too
+	 system: cmd==0 means check for shell access (xopen)
+	 sfhdr.h: fix sfrsrv prototype
+	 add __libc_malloc etc for gnu/linux
+	 astconf(NiL,path,name) == astconf(name,path,NiL) + no liberror
+	 fts_open: if toplist() stat fails return 0
+	 ftwalk: handle fts_open()==0 via one phony userf() call
+	 sfmode: S_ISFIFO default is SF_SHARE=0
+	 features/lib: _WIN32 _lib_vfork=1 by default
+	 unsigned<0 comparison and other fixes via sgi.mips4 cc
+	 stk.c: use <align.h> ALIGN_BOUND for stkalloc()
+	 features/lib,vfork: uwin fix
+	 ast_std.h: fix strto[u]ll prototypes with features/types _ast_int_8
+	 getsubopt: add for xopen 4.2 compatibility
+	 drop function __IMPORT__
+	 magic: more magic
+	 change #define FILE from Sfio_t to struct _sfio_s
+	 state.c: add generated includes that may be hit by std for MAM
+	 bytesex: forgot about sizeof(long)=>7; could we fix the name too?
+	 vmalloc.h: fix vmnewof() definition
+	 sfio.h,stdio.h,ast_common.h: pollution cleanup
+	 magic.c: add | op for switch
+	 Makefile: stdio.h was on both HEADERSRC and HEADERGEN -- don't do that
+	 drop pp:notice to get <sfio.h> ... <ast.h> to work 
+	 regex: add [[:<:]]==\< and [[:>:]]==\> for bsd compat
+	 mime.c: ignore X-* headers while scanning for Content-*
+	 magic.c: check for negative indirect offsets
+	 magic.tab: fix dos entry that generated negative indirect offsets
+	 vmalloc.h: add vmstrdup() prototype
+	 hash.h: add hashgetbucket() macro
+	 magic.c: MAGIFILE is now a : file list
+	 mnt.c: another 4.4 bsd fix -- users must include <sys/crap.h>
+	 common: fix _WIN32 chicken&egg with va_copy
+	 sfio: forgot to set f->val along with _Sfi in sfexcept() 
+	 Makefile: add mini target for uwin libmini.a
+	 sfcvt.c: workaround for flaky long double optimizers
+	 features/common: fix to work with va_list==void*
+	 regexec.c: fix REG_STARTEND subexpression offsets
+	 strmatch.c: don't forget <wctype.h>
+	 regrexec.c: fix REG_INVERT end boundary bug that missed last record
+	 astconf.c: notify(0,0,"a=b") called for each setenviron("a=b")
+	 pathcanon.c: check astconf(PATH_LEADING_SLASHES) to preserve //*
+96-11-28 _LARGEFILE64_SOURCE by default if possible: NOTE: assumes xopen
+	 regerror: fix for xopen
+	 getopt: fix for xopen
+	 magic: add ciao virtual database
+	 astconf: posix/strict/xopen implies "standard" conformance
+	 fs3d.h: hide mount prototype
+	 ast_std.h,mnt.c,features/fs: ncr port tweaks
+96-10-31 version 5.0
+	 add strtoll() strtoull()
+	 sfkeyprintf: upgrade to int_max args
+	 ast.h: add ssizeof() to work around unsigned botch
+	 conf.sh: add shell actions to conf.tab
+	 _DLL*: drop for _BLD_<lib> + __EXPORT__ + __IMPORT__
+	 sfio,cdt,vmalloc: kpv update
+96-10-11 <ccode.h>: add character code map support
+	 procclose: return shell style exit status
+	 features/fs: pun statvfs.f_basetype to statvfs.f_reserved7 for mvs
+	 uwin: add subdir for uwin additions
+	 ast_std.h: swab() is from <stdlib.h>
+	 sfio.h: <ast_std.h> if _PACKAGE_ast
+	 magic.tab: add mips[1-4], 64-bit
+	 port tweaks for sol.sun4 and sun4
+96-09-06 strerror: add
+	 fmterror: uses strerror
+	 str*search: use sfiso646() order
+	 strpsearch: add
+	 magic: add Magic_t.mime mime type return for magictype()
+	 mime.h: add
+	 strton: use sfsscanf()
+	 strperm: factor in umask() if no who
+	 pathtmp: add TMPPATH check
+	 libevent: add
+	 magic: add discipline to magicopen()
+	 mime: add discipline to mimeopen()
+96-08-31 regex: fix BM fail table generator
+96-08-11 mntread: fix mnt.type for SCO variant
+	 conf.tab: add SCO KERNEL_* sysconf() vars
+	 fastfind: add findwrite(), fix findread() FF_OFF omission
+	 ftwalk: reimplement on top of fts
+	 fnmatch,re_comp,regexp: reimplement on top of regex
+	 basename,dirname,fmtmsg,fts,ftw,getdate,getsubopt,glob: add
+	 hsearch,nftw,realpath,strftime,strptime,swab,tempnam: add
+	 tsearch,wordexp: add
+	 getcwd: cache last path for easy test
+96-07-17 error: sfsync(NiL) ... write ... sfsync(sfstderr)
+	 astconf: handle readonly *(DEV|DIR) vars
+96-04-01 swapop: fix stupid return value bug
+	 features/int.c: fix int_swap generation bug
+	 regnexec,regrexec: fix unsigned underflow init error
+	 ls.h: fix iblocks() to be in units of LS_BLOCKSIZE
+96-02-29 magic: space before function is definition with no call
+	 hash: drop hash_info from public interface
+	 hash: OBSOLETE hashlast()
+	 hash: add Hash_root_t.Hash_last_t to public interface
+	 add strsearch() and strnsearch() to complement strlook()
+	 add hashkey.h for keyword->long hash
+	 pathpath: pathpath(0,0,"",0) disables $0 $_ $PWD relative search
+	 sfio: sfstrtod+sfhdr update
+	 regex: fix REG_LENIENT to map BRE \[+?|] to ERE [+?|]
+	 change _std_malloc iffe test so it doesn't hang on alpha
+	 sfhdr.h: features/sfio generates _lib_cvt instead of _i386_cvt
+	 ast_hdr.h: add va_copy(a,b) to copy va_list b to a
+	 getopt: fix stupid getopt() -> optget() bug
+	 sfvprintf: %h? now downcasts
+	 regex: handle strto?l() errno in regcomp()
+	 sfstrtod: _Sfstrtod_already_defined -> _STUB_sfstrtod
+	 ast_std.h: hide valloc() and ignore <strings.h>
+	 sfkeyprintf: pass phony va_list for '2'
+	 regex: change HIT var type from int to size_t in special()
+	 ast.h: add EXIT_STATUS(x) to convert wait() status to sh exit status
+96-02-14 regex: add _ to \<...\> isalnum test
+	 regex: fix BM inner loop breakout
+	 features/types: size_t is signed on some systems! => _ast_size_t
+	 sfio: sfrd discipline peek optimization
+	 vmalloc: vmalloc.h malloc family macro upgrade
+	 tokopen: fix newline bug for non-restore open
+	 sfio: no inline for gcc until it emits for -g too
+96-02-12 sfio: internal upgrade
+96-02-09 regex: Boyer-Moore boundary fix
+	 vmalloc: snarf latest
+96-02-06 regex: add regrecord() and regrexec() for Boyer-Moore record filtering
+	 regex: rearrange regnexec() args to match buffer,count arg style
+96-01-31 stk: add STK_NULL to stk.h and stk.c
+	 regex: privatize regex.h and fix min re length computation
+	 workaround lazy strdup() implementations in features/lib _std_malloc
+	 fix stkclose() to free(stream) -- purify missed because of sfio links
+	 unused var cleanup
+	 port/mnt.c must include <ls.h> to get <ast_fs.h>
+	 add SF_FINAL to sfio and stk
+	 sfio reads now on natural block boundaries
+	 add #!!! <level> <message> !!! to tokline()
+	 add REX_BM pre-filter to regcomp/regnexec
+96-01-22 add regcomp env.paren overflow checks
+96-01-11 add Doug McIlroy's regex (converted to C from C++ by gsf)
+	 AT&T Research now
+	 sfgetr optimization
+	 regex buglets
+96-01-05 tweak magic.tab for win32
+95-12-25 add !(...) -> (...)! to fmtre()
+	 nt tweaks -- functions with no header proto must be defined extern
+95-11-24 version 4.1
+	 add mnt.h mntopen mntread mntclose
+	 convert fmtfs to mnt.h
+	 add RE_LEFTANCHOR and RE_RIGHTANCHOR
+	 gcc inlines must also have global library function instantiation!
+	 add hashview()
+	 fix strtape() internal buffer flow
+	 fix mntread() fs/dir transposition for uts mnttab
+95-10-31 change features/unistd.c includes to break limits-param cycle
+	 add cdt from kpv
+	 sfio snarf from kpv
+	 add [ht]search for _WIN32
+95-10-11 clarify PARANOID pathcheck() warning
+	 fix procopen() LIB_SPAWN environ bug with setenviron() cache
+	 fix setenviron() bug that forgot to reset environ if == 0
+	 add %Z ' ' output format to sfkeyprintf()
+	 sfio snarf for sfvprintf fix
+	 allow multiple hashscan() with scope caveat
+	 add comp/fakelink.h to synthesize a few symlink text patterns
+	 add !<xxx> magic to misc/magic.tab
+	 add FTW_TOP to inhibit recursion (for ftw side effects on top level)
+	 add memfatal() common malloc fatal exception message
+	 add dos \rtest to misc/magic.c/cklang()
+	 sftmp() O_EXCL+random to avoid collisions
+	 pathtemp() uses sftmp() randomizing
+	 features/fs uses SF_APPENDWR
+	 sftmp() uses pathtemp() -- don't worry, its not circular
+	 a few more _WIN32 compatibility additions
+	 realloc fixed to use VM_RSCOPY|VM_RSMOVE instead of obsolete 1
+	 add hashlook(tab, oldname, HASH_RENAME, newname)
+	 a few more tweaks to satisfy port warnings
+	 add _SFIO_INLINE_PRIVATE to provide real function too
+	 fix <dirent.h> installation test
+	 oops object / shared library compat with _sfgetl2 _sfgetu2
+95-09-11 add getopt() compatibility
+	 add fstat,lstat,mknod,stat fixes for _x versions in sys/stat.h
+	 add getconf CONFORMANCE - posix for things that aren't ast default
+	 sfio_t.h: #ifndef _SFIO_H #include "sfio.h" #endif
+	 snarf vmalloc from kpv
+95-08-11 fix malloc bug in magic
+	 update linux and bsd 386 magic entries
+	 error_info.auxilliary returns new level, |=ERROR_OUTPUT if msg done
+	 drop fnmatch from strmatch for sparc (solaris) until it collates
+95-07-17 fix port/astconf universe initialization
+	 fix misc/optget opt_info.nopt initialization
+	 drop tmset() TZ=... because it only worked when TZ=... was ignored
+95-05-09 mongo <ast.h> namespace cleanup
+	 drop > 2 year old obsolete interfaces
+	 sfvprintf.c fix for (char:8 short:16 int:32 long:64) architectures
+	 TMP_MAX back into conf.tab
+	 pathbin() and pathshell() now use astconf()
+	 fix pathtemp() to not cache getenv("TMPDIR")
+	 fix ftwalk() metaphysical to handle non-dirs too
+	 initialize *_info = { 0 }; for ancient ld semantics (NeXT)
+	 fix magic() to do vmfree()
+	 astconf(X_OK) must prefix lines with "getconf"
+	 use <wchar.h> and wctype in strmatch() if available
+	 _lib_utime_now checks utime(path,0)
+	 _lib_poll_notimer checks poll(x,0,timeout)
+	 add another _lib_utime_now check to port/touch.c
+	 fix dd_buf cast in dir/opendir.c
+	 split getconf.h into conftab.h and conftab.c for :READONLY:
+	 use mbtowc() only if MB_LEN_MAX>1
+	 sfio char* -> Void_t* cleanup
+	 handle old syntax in misc/magic.c
+	 sigdata.c holds readonly signal strings
+	 pathcheck() does AT&T checks for tools matching PARANOID - yuk
+	 unused var cleanup
+	 deprecate hash_info in favor of hashlast()
+	 fix bad conf.sh ksh integer interactions
+	 dll cleanup
+	 magic.c falls back to malloc for now
+	 add environ to <ast.h> -- C library global data syms are *RESERVED*
+	 sfhdr.h memccpy(1,2,3,size_t) prototype
+95-04-01 version 4.0
+	 convert to vmalloc
+	 allow sigcritical() nesting mismatch to work around vfork() bug
+	 add strexpr() primitive for streval() with user handle (like ftwalk)
+	 add <magic.h> and magic.c file command magic interface
+	 update magic mail message entry
+	 fix keyprintf() invisible char count nesting bug
+	 add sfstrnew(SF_READ|SF_WRITE) for alternate sfstropen() modes
+	 sfstrnew(SF_READ) but reading requires sfseek(), sfreserve()
+	 add conf.tab and conf.sh to nail C/POSIX limits/unistd macros
+	 add getconf() string interface to *conf*
+	 _DLL_INTERMEDIATE_DATA for systems that require indirect globals
+	 _DLL for building shared libraries with _DLL_INTERMEDIATE_DATA
+	 vecfile() restricted to S_ISREG()
+	 add spawnveg() for job control
+	 convert procopen() PROC_PGRP(id) to spawnveg()
+	 fmterror() returns error text given errno (strerror() does same)
+	 fmtsignal() returns signal text given errno (strsignal() does same)
+	 {sig_name,sig_text,SIG_MAX} -> sig_info.{name,text,sigmax}
+	 liberror("",...) omits [%s library] prefix
+	 update features/signal.c table
+	 add vmdisc() and change vmnewof() to use vmresize()
+	 fix conf.sh to allow refs to previously defined limits
+	 fix undefined entries in getconf()
+	 magic data in magic.tab
+	 fix stropt() pointer cast
+	 vmalloc() exception handler replaces nomalloc()
+	 merge sigdata.c into fmtsignal.c -- sun link needs function w/ data!
+	 sftmp() bug fix
+	 drop local <unistd.h> even with _POSIX_SOURCE
+	 fix vmstrdup() macro arg miscount
+	 fix conf.sh to handle enum'd symbolic constants in unistd.h
+	 drop malloc() et.al. prototypes from vmalloc.h
+	 fix sfvprintf() %d argument reference
+	 add OSF/1 AES symbol(s) to conf.tab
+	 determine standards prefix from conf.tab
+	 add _CS_SHELL to conf.tab
+	 getpath() default is confstr(_CS_PATH)
+	 getshell() default is confstr(_CS_SHELL)
+	 unify keyprintf user function args (should have learned by now!)
+	 add quad type to magic
+	 add astfeature() to unify universe style dynamic features
+	 add ftwflags() to determine FTW_* flags from astfeature()
+95-03-11 fix stropt() to not modify its *const* arg
+	 handle "' quotes and chresc() in stropt() values
+	 , treated like :space: between stropt() options
+	 fix procopen() fd dup to ignore self-dups
+	 add library id[] to misc/state.c
+	 add ftwalk(FTW_METAPHYSICAL) for posix -H
+	 sfvprintf() now handles balanced () in %()
+	 add tmfmt() with buffer size check to replace tmform()
+	 add fmttime() calling tmfmt() to fit fmt*() mold
+	 add <keyprintf.h> and keyprintf() to support %(...)? in commands
+	 add Hash_table_t for size==0 in stropt()
+	 add EXTTYPE extended header to tar.h
+95-02-14 sfmove() buffer size overflow fix
+	 add _SFSTDIO_H to sfio.h
+	 rename setenv() to setenviron() -- posix finally decided
+	 rename <option.h> opt_* to opt_info.*
+	 update features/unistd.c for _SC_* and _PC_* posix additions
+95-01-19 (char*)uchar cast in fmtesc()
+	 fix hash bucket memory leak in hashlook() [via John Mocenigo]
+	 update strings/strtape()
+	 fix optget()/optjoin() to handle leading +
+	 add ALIGN_ prefix to <align.h> identifiers
+95-01-11 change tm/*.c tmset(0) to tmset(tm_info.zone) to keep user setting
+	 fix tmform() %Z null pointer dereference
+95-01-01 add this RELEASE file
+	 fix strperm() to properly handle "644 file"
+	 fix tokline() to return last ' ' terminated line in string
+	 fix tokscan() to properly handle \\n splice
+	 add fmtesc() to complement stresc()
+	 add LS_NUMBER to fmtls()
+	 drop spurious optusage() ' '
+
+
+

+


libcmd changes

+
+
+12-02-14 rm.c: --force ignores no file operands specified
+12-01-10 b_* (int, char**, void*) => (int, char**, Shbltin_t*)
+11-08-27 pids.c: add getsid() iffe test
+10-08-16 chmod.c: add -l alias for { -h --symlink }
+11-08-16 chgrp.c: change lchmod() ref to lchown()
+11-05-03 cp.c: do not delete src if mv to dest fails -- doh
+11-03-28 chmod.c,chgrp.c: fix --symlink logic
+11-03-26 rm.c: don't eaccess() check symlinks!
+11-01-27 date: add { -R, --rfc-2822, -T, --rfc-3339=type }
+11-01-03 chgrp.c: --symlink => --physical
+10-12-10 rm.c: fix not-writable logic
+10-12-01 tee.c: add iterrupt logic for slow open(1) -- needs to be generalized
+10-11-30 chgrp.c: add -N,--numeric to bypass name lookup
+10-10-20 cp: add --timestamps (preserv timestamps and permissions)
+10-10-20 ln: fix 'cannot replace existing file' logic
+10-10-10 cp,mv: add --remove-destination
+10-08-11 cp.c,expr.c: use conformance("standard",0) test
+10-08-11 cut.c: use mbnsize() instead of mblen() (for ast C.UTF-8)
+10-07-28 chgrp.c,chmod.c,cksum.c: fts_path for diagnostics, not fts_accpath!
+10-06-14 rm.c: fix -rfu logic
+10-06-12 paste.c: repeat after me: do not modify argv[i]
+10-06-01 sync with ast api 20100601
+10-05-09 tail.c: fix -0f bug that inially listed the entire file
+10-05-06 basename.c: add { -a,--all -s,--suffux=suffix } from BSD
+10-04-12 cat.c: fix -v bug that dumped core and make consistent with cmp --print-chars
+10-04-11 cmp.c: add --print-bytes, --count=n, --differences=n
+10-04-08 vmstate.c: add { method flags } vars for Vmstat_t.mode
+10-04-08 mkdir.c: fix check for { S_ISUID S_ISGID S_ISVTX } after successful mkdir(2)
+10-04-01 stty.c: add --fd=fd option
+10-03-23 tail.c: fix -f large initial offset bug that didn't copy all data
+10-03-07 tail.c: sfsync(sfstdout) after all -f done, fix -f partial line
+10-03-05 mktemp.c: add --regress=seed for testing
+10-03-05 vmstate.c: add
+10-01-26 tail.c: -f sleep(1) only if no progress from last round of checks
+10-01-20 fts_fix.[ch]: use <fts_fix.h> instead of <fts.h> (see fts_fix.c)
+10-01-20 cp.c: free(state) if called from old shell
+09-12-10 join.c: <wctype.h> for iswspace()!
+09-12-04 cmd.h: fix CMD_DYNAMIC logic
+09-12-04 cut.c: handle -d mb
+09-12-03 mkdir.c: add --verbose
+09-11-30 cat.c,date.c,cksum.c: drop setlocale() call already done by optget()
+09-11-30 join.c: handle -t mb
+09-11-28 wclib.c: { -w -L } mb independent of -m
+09-11-28 paste.c: handle -d mb
+09-11-28 uniq.c: handle -s mb
+09-11-28 cksum.c: FTS_SEEDOTDIR by default
+09-09-09 fds.c: add --unit=fd
+09-08-25 tail.c: initialize Tail_t.fifo=0 !!
+09-08-15 tail.c: fix fifo logic
+09-08-11 wc.c: add setlocale(LC_CTYPE,"C") cleanup, add utf8 optimzations
+09-08-10 uniq.c: replace -c 1..9999 sfsprintf() with inline conversion
+09-08-01 join.c: fix empty field null pointer deref
+09-07-23 pathchk.c: add -P,--path and -a,--all
+09-07-02 chgrp.c,chmod.c,cksum.c: fts_flags() default only if not --recursive
+09-06-19 cmd.h,cmdinit.c: add ERROR_CALLBACK for ERROR_NOTIFY main() callback
+09-06-19 mktemp.c: --unsafe now checks and prints path but does create
+09-06-19 tee.c: add ERROR_CALLBACK for tee_cleanup() sfio discipline pop
+09-06-18 rm.c: handle interrupts during interactive query
+09-06-18 cp.c: handle interrupts during interactive query
+09-05-25 tail.c: fix old style option logic to handle --invalid-long-option
+09-05-24 tail.c: -r == +1r
+09-05-01 mktemp.c: handle foo/prefix, add -p dir and -u
+09-03-31 cat.c: handle --no* options
+09-03-15 tail.c: fix --timeout termination logic
+09-03-03 tee.c: clean up sfio disciplines on error
+09-03-03 cat.c: fix -v|-e|-n|-B interaction bugs
+09-02-14 tail.c: fix VSC failures
+09-02-14 join.c: fix VSC failure
+09-02-02 uniq.c: document -number == -fnumber, +number == -snumber
+09-02-02 tail.c: fix usage[] for negative offsets, add sun -b
+09-02-02 mktemp.c: add
+09-02-02 features/utsname: UWIN _UNAME_os_DEFAULT => UWIN
+09-01-31 dirname.c: add experimental { -f -r -x } for pathpath(3)
+09-01-05 cmp.c: fix EOF diagnostic to conform to posix
+09-01-03 mkfifo.c: fix --mode=mode logic
+08-12-07 date.c: add %[_][EO]K for [space pad] [full|long] iso docs
+08-11-10 stty.c: check for -t grouping so -tostop != -t -ostop
+08-10-15 rm.c: handle 'rm -f x x' => exit 0
+08-09-08 stty.c: #ifdef guard TAB[012] -- freebsd: damn the posix, full speed ahead
+08-06-17 shcmd.h: move to libast
+08-04-24 uniq.c: add optget() 'n' option for -1 => -f1
+08-04-24 getconf.c: clarify diffs between "name - value" and "name = value"
+08-04-01 cut.c: add write error check
+08-04-01 paste.c: fix --noserial stream vector access bug
+08-04-01 pids.c: add ls/ps style --format=format
+08-04-01 stty.c: fix off2 unitialized reference
+08-03-28 chgrp.c: add --before=file
+08-03-14 pids.c: add
+08-03-11 chgrp.c: fix -m to use uid:gid as lookup key
+08-02-11 Makefile: add -lmd possibly required by sumlib.o -- hack alert
+08-01-30 expr.c: fix <=0 type that broke substr * 1 * -- wow
+07-12-13 cp.c: fix builtin state reinitialization
+07-11-29 rev.c: honor multibyte locales
+07-11-27 cp.c: open non-existent destination with O_EXCL
+07-11-27 stty.c: add -t,--terminal-group to list tty pgrp
+07-11-27 cksum.c: --silent -s => -S, -s == -x sys5 for gnu compatibility
+07-11-11 tee.c: drop ancient bsd compatibility "-" operand => SIGINT
+07-10-29 cksum.c: add SUM_LEGACY for -r
+07-10-12 cp.c: plug usage string memory leak by using per-builtin state
+07-09-21 cksum.c: add sumprint() default scale arg, --scale, --bsd for solaris
+07-09-10 chmod.c: add --show,-n
+07-07-27 wclib.c: bias <wchar.h> checks for modern unix
+07-07-17 cat.c: fix --squeeze-blank to reduce multiple blank lines to *one*
+07-05-20 cmd.h: handle msvc's balk at if(0)0=0;
+07-05-20 cksum.c: #include <modex.h>
+07-05-11 cmd.h: add _CMD_CONTEXT_OK() to verify >= 20070511 context
+07-05-09 fds.c: handle ipv6 sockets
+07-05-09 cmd.h: <shbltin.h> : cmdquit() => sh_checksig(context)
+07-04-25 mkdir.c: force (S_ISVTX|S_ISUID|S_ISGID) after mkdir(2)
+07-04-24 procrun.c: add -last intercept => sh_run() and whence -q
+07-04-19 uname.c: name operands first checked for CS_NAME, then NAME
+07-03-28 date.c: add --unelapsed=scale, -U: fmtelapsed() => strelapsed()
+07-03-25 wclib.h: iswspace() requires <wctype.h>!
+07-03-11 tty.c: add sysV --line-number, -l
+07-02-26 Makefile: sumlib.o: direct extract from +lsum (vcodex someday)
+07-02-24 Makefile: tweak cmdext.h action for --mam bootstrap
+07-02-09 Makefile: { cmdext.h cmdlist.h } depend on *.c list!
+07-02-09 Makefile: +lsum to bring in static -lsum (no dynamic right now)
+07-02-07 cksum.c: move from src/cmd/std with ftwalk => fts
+07-02-07 getconf.c: handle /bin == /usr/bin in defer logic
+07-01-26 chmod.c: don't FTS_FOLLOW if !FTS_PHYSICAL
+07-01-23 cut.c: Cut_t variable dimension list[] must be last member
+07-01-22 uname.c: fix -h typo that clobbered astconf() state -- ouch
+07-01-02 fmt.c: fix buffer splice off by one bug -- what else
+06-11-23 cmd.h: because of proto cmdinit cannot be a function like macro
+06-11-21 cp.c: fix 06-10-31 const dot[] readonly assignment
+06-11-15 cp.c: fix 06-10-31 ln -s enoent bug
+06-11-11 getconf.c: let astconf() handle "undefined" vs. ""
+06-11-11 getconf.c: fix deferred getconf path search
+06-11-11 fmt.c: handle two char { \t } in --usage ouput
+06-10-31 global edit to eliminate most non-const static data0
+06-10-31 use <cmd.h> for all b_*() implementations; drop <cmdlib.h> 
+06-10-31 cmd.h: add CMD_ prefix to { BUILTIN DYNAMIC STANDALONE } 
+06-10-31 join.c: tone down /tmp usage vi SFSK_DISCARD
+06-10-31 cp.c,rm.c: update to <fts.h> to accomodate non-static data
+06-10-29 date.c: "...%H%..." => "...%H" "%..." to avoid SCCS conflict
+06-10-26 fds.c: handle sctp
+06-10-18 tail.c: fix invalid suffix infinite loop
+06-10-11 chgrp.c,cp.c: add sfstruse() error checks
+06-10-10 tee.c: add --linebuffer, -l
+06-10-06 getconf.c: preserve native getconf(1) known variable behavior
+06-10-04 sync.c: add (thanks to Roland Mainz)
+06-10-04 getconf.c: add -v specification => run native getconf(1)
+06-09-28 stty.c: static setmode() => set() for darwin.i386
+06-09-27 head.c: handle -1c => -c1
+06-09-19 pathchk.c: pathconf() => astconf()
+06-09-11 tail.c: handle compatibility corner cases
+06-09-08 date.c: add output write error diagnostic
+06-09-04 tail.c: fix initial position for -n0, no args => no -f
+06-08-28 uniq.c: add -D,--all-repeated
+06-08-25 wc.c,wclib.c: add -L,--longest-line,WC_LONGEST
+06-08-24 wc.c,wclib.c: implement -m and WC_MBYTE
+06-08-24 rmdir.c: -sp applies to every message, add gnu -e
+06-08-23 rmdir.c: add solaris --suppress, -s
+06-08-23 mkdir.c: don't add 0300 to -p final dir mode
+06-07-17 cut.c: handle last line with no newline
+06-07-17 cut.c: --output-delimiter == --line-delimiter
+06-06-25 chmod.c: mask -c output with S_IPERM
+06-05-09 uname.c: add -o; change -a to match linux
+06-05-03 date.c: add --last -L to list last of multiple time args
+06-02-14 tail.c: fix -f bug that lost fast stream data
+06-02-11 getconf.c: exit 1 if name invalid -- duh
+06-01-28 cp.c,rm.c: fix astquery() 'q' to return and not exit()
+05-08-11 fmt.c: fix -o to handle raw --usage strings
+05-05-17 cat.c,head.c: disable EPIPE error messages
+05-04-14 chgrp.c: -f means all non-syntax error messages
+05-04-11 fds.c: add from old internal open(1)
+05-04-09 cmdext.h,cmdlist.h: generate from source -- about time
+05-03-24 features/symlink: verify { lchmod lchown } implementations
+05-03-07 date.c: add --listzones to list the time zone table
+05-02-14 chmod.c: add --reference=file
+05-01-11 cat.c: restore output stream to binary mode on exit
+04-12-15 cp.c: add --preserve high resolution time support
+04-12-08 date.c: add high resolution time support
+04-12-01 cmp.c: fix %6I*ld => %6I*d -- doh
+	 fmt.c: handle "n operands n"
+	 head.c: handle -cN -nN, N > 4Gb
+04-11-22 cmp.c: handle >2G chars/lines
+04-11-18 fold.c: add --prepend=text, --append=text
+04-10-31 tail.c: use SF_LOCKR macro
+04-10-28 tail.c: use strtol() for old stype [+-]number[suffix] -- doh
+04-10-22 cp.c: check rename() errno==ENOENT to retain destination
+04-10-11 fmt.c: fix -o,--optget sublist bugs
+	 tail.c: use strton() for number conversion
+04-10-08 pathchk.c: add empty path and -p - first component char
+04-10-01 fmt.c: add -o,--optget concatenated usage string format
+	 stty.c: context is ERROR_INTERCATIVE
+	 rm.c: restore 3d before exit
+04-09-24 pathchk.c: fix docs
+04-09-14 date.c: add %| and %& --parse docs
+04-08-27 cp.c: add FTW_DC check -- duh
+04-08-01 fmt.c: handle last char != '
+04-07-22 date.c,uname.c: access() => eaccess()
+04-07-01 fmt.c: handle large input lines -- ouch
+04-06-11 id.c: fix -r to output something!
+04-05-27 expr.c: fix `:' op subexpression output
+04-04-15 chmod.c: follow symlink for relative mode
+04-04-12 Makefile: add STDCHMOD (for osf.alpha)
+04-03-19 tail.c: handle -f sfreserve() large chunk failure
+04-02-29 cp.c: decouple -f and -i for standard CONFORMANCE
+	 cp.c: mv now attempts rename() before remove()+rename()
+	 date.c: -f format or +format disables system clock set
+04-02-14 cp.c: add -F --fsync to call fsync(2) for each copied file
+04-01-05 head.c: -s now uses opt_info.number for >2Gb skip
+03-09-18 tail.c: add --log
+03-09-11 rm.c: add --unconditional
+03-08-11 fold.c: add --delimiter=c to break at c
+03-07-28 features/time: change settimeofday() test to 2nd arg of (void*)0
+	 expr.c: add {match,substr,index,length,quote}
+03-07-15 fmt.c: fix trailing space bug
+03-06-20 uname.c: fix -p constant string overwrite
+03-06-04 stty.c: add undef to control assignment docs
+03-05-31 uname.c: add -f and sysinfo()/confstr() compatibility via astconf()
+03-05-27 rm.c: fix inappropriate "/.." append path overflow
+	 cut.c: snarf from dgk
+03-05-18 rm.c: check st_nlink to verify progress w.r.t. ftwalk/fts
+03-05-15 join.c: fix stealth -v2 bug (thanks ahs)
+03-05-04 wc.c: drop trailing space for `wc -l < file'
+03-03-21 date.c: add %Q/recent/distant/ docs
+03-02-19 date.c: fix %+|!flag docs
+02-11-14 update for cmdinit() 4th arg and ERROR_NOTIFY for interrupt cleanup
+02-10-02 date.c: tmform() => tmfmt()
+02-09-30 date.c,uname.c: change execv() calls to procrun(): exec|exit => bad
+02-09-06 wclib.c: fix 1 char-at-a-time miscount bug
+02-08-19 chgrp.c: convert to use <cdt.h>
+02-07-23 join.c: fix comm snarf typo
+02-04-05 date.c: add %u
+02-01-24 stty.c: ifdef a few more macros for uts (yes, its still running)
+01-12-14 date.c: clarify %z doc
+01-10-31 mkdir.c: mkdir() on existing dir could fail with errno!=EEXIST
+	 uname.c: add execve() loop check for unknown options
+01-10-29 tail.c: SF_SHARE on only if not reading through EOF
+01-10-11 getconf.c: fix usage typos
+01-09-11 cp.c,cmd.h: handle . in argv[0]
+	 cp.c: add O_BINARY to all open() calls
+01-09-06 tail: input streams must be SF_SHARE -- duh
+01-07-16 stty: fix cntl() macro for CC_NATIVE!=CC_ASCII
+01-05-31 date: fix /bin/date fallback logic
+	 stty: fix a few mismatched flags, -a and -g option logic
+	 stty: tone down sane to modify current settings rather than from zero
+01-05-01 uname: -i => -h, add sol.sun4 -i, add sgi -R, punt to /usr/bin/uname
+01-04-17 date,rm: add
+01-03-07 cp: fix readonly string mod on "."
+01-01-23 cp: `cp foo' => `cp foo .' only for CONFORMANCE!=standard
+00-12-01 cut: multibyte support
+00-10-31 mkdir: handle races by checking EEXIST
+00-09-20 cp: copy argv to stack before modifying in place
+00-05-18 add setlocale(LC_ALL,"")
+00-04-30 join: drop weird opt_info.argv reference
+00-03-17 expr: add == operator -- duh
+	 cp,ln,mv: delay pathcanon() on destination to verify `cp a b/.'
+	 getconf: use astgetconf for proper message control
+	 ERROR_translate: dictionary update
+00-03-08 tail: handle multiple -f files
+00-03-07 fmt: add
+00-03-07 dirname: handle PATH_LEADING_SLASHES as documented
+	 tail: accept + options
+00-02-14 chmod: --ignore-umask to ignore umask(2) in symbolic expressions
+	 chmod,chgrp,cp: use FTS_NOSEEDOTDIR for correct path construction
+	 cat: fix -n (was ignored, wow)
+00-01-27 getconf: add "-a" and "-v spec" for sol7.* compatibility
+99-09-09 join: fix -j1 vs. -j 1, add --ignorecase
+99-06-22 paste: defualt delim in writable string
+99-06-16 cat: fix --dos-ouput typo
+99-06-11 cp: tighten chown() diagnostics
+99-06-08 expr: nothing for NULL string bug fix
+99-05-21 paste: fix missing newline columnize bug
+99-05-20 mv: do not check for `mv foo foo' since rename() handles it
+99-05-01 cmp,comm,cp/mv/ln,expr,fold,getconf,head: long options
+	 join,logname,paste,pathchk,tail,tee: long options
+99-04-10 uname: long options, stdize -a
+	 chmod,head,tail,rev: long options
+	 cut: long options, pass regression test 02
+99-04-07 cat: long options, fix O_TEXT modes
+99-01-11 tail: fix +n
+	 join: another ggs/psm bug
+	 join: all 1 and/or 2 to be unseekable
+99-01-01 cp: fix -p
+	 chmod: drop -l option because of clash with l (lock) mode
+98-12-25 cat: add -T to sfopen(,,"rt")
+98-11-11 chgrp,chmod: cannot open file stream => not found
+	 join: fix another ggs/psm bug; thanks guys
+98-10-20 cp: fix cp -rp to update dir times too
+98-09-22 join: fix ggs null field bug
+98-08-11 join: fix last regression test bug
+98-05-29 join: add jp->common to handle boundary conditions
+98-03-11 cat,cp,rev,tee: fix sfmove() error checks
+98-03-01 join: fix bug that emitted records more than once after eof
+	 cp: fix sfmove() error check
+98-02-14 cp: -R physical, -[HLP], -r getconf(PATH_RESOLVE)
+98-01-11 cp: check sfclose() return value
+98-01-07 chown,chgrp,chmod: use fts for -R
+	 mkdir: fix -p default mode
+97-12-07 mkdir: fix umask() reset
+97-11-11 chown,chgrp: proper interpretation of -h,-l for lchown()
+	 chown,chgrp: only chown() if uid or gid change
+97-10-31 mkdir: do umask right
+97-08-11 cmdinit: clear opt_info.index to allow multiple calls
+	 cp,ln,mv: add
+97-07-17 join: fix a few more -a bugs
+97-05-31 expr: optget() only if CONFORMANCE==standard
+97-04-01 join: fix a few bugs that make it work!
+96-12-25 head: sfset(sfstdin,SF_SHARE,1)
+	 Makefile: add -last to cmd lib list
+	 drop function __IMPORT__
+96-08-11 tail: check for truncated file and rewind for -f
+96-04-08 update <cmd.h>
+96-02-29 uname: -a like std, -l for everything
+	 id: add -a (default)
+96-02-14 wc: speed up inner loop newline breakout
+96-01-30 unused var cleanup
+96-01-01 AT&T Research now
+	 pathchk: handle getcwd(0,0) error
+	 expr: switch to <regex.h>
+95-11-11 add expr.c
+	 fix cut exit code and -s optimization
+95-10-11 add extern b_* to cmd.h
+	 add void* context 3rd arg to b_main()
+95-05-09 add getconf
+	 cat -u avoids mmap
+	 add chown|chgrp -m uid|gid map file
+	 add chown|chgrp -P for systems with lchown(2)
+	 chown|chgrp -P => lstat() too!
+	 chmod|chown|chgrp -HLP
+95-04-01 version 1.2
+	 add rmdir
+95-02-14 fix mkdir -p symlink bug
+	 fix mkdir '/' skip bug that went one too far
+
+
+

+


libcoshell changes

+
+
+12-02-22 coinit.c: handle non-identifier export var names
+11-12-13 cowait.c: handle sfpoll() error return on interrupt
+11-11-21 cowait.c: poll before blocking read to weed out killed jobs (no 'x' message)
+11-08-30 codata.c,coopen.c: drop macro "..." catenation for old cc
+10-08-11 coinit.c: force _BLD_DLL for environ intercept
+10-06-01 sync with ast api 20100601
+10-05-19 cokill.c: do cowait(co,co,0) to drain pending messages
+10-05-15 coshell.h,coopen.c: add CO_ORPHAN for PROC_ORPHAN
+10-05-11 coopen.c: add PROC_ORPHAN for CO_SHELL
+10-05-10 coopen.c: no atexit() for CO_SHELL
+10-04-15 first ksh93u local job pool tests work (service daemon tbd)
+10-04-14 cowait.c: add 3rd cowait() arg timeout; 0 Coshell_t* operates on all open coshells
+10-04-10 coshell.h: add CO_SHELL for shell using coshell!
+09-12-09 coexport.c: add runtime CO_ENV_EXPORT hook that avoids changing environ
+08-10-28 coopen.c: close write side of parent msgfd -- doh
+08-04-28 coexec.c: check for fd 1,2 equivalence before CO_SERIALIZE 2>&1
+07-10-29 coshell.h,coexec.c: fix procrun()/system() intercept logic
+07-08-15 add CO_SEPARATE,CO_MODE_SEPARATE for separate shell+wait per action
+07-04-09 Makefile: $(CC.PIC) to allow archive to be pulled into other dlls
+06-08-22 coshell.h: procrun => coprocrun, system => cosystem
+06-08-09 coshell.h: export CO_ENV_MSGFD for COSHELL=coshell
+06-08-02 coexec.c: Cojob_t.flags&CO_SERVICE for service requests
+06-08-02 cokill.c: cokill() signal==0 => kill CO_SERVICE jobs
+06-07-27 coexec.c: drop server cowait() that bypassed caller
+06-06-21 coexec.c: add non-block cowait() to drain responses
+06-06-11 fix service intercept cleanup
+06-05-24 add service=name:init lightweight service intercepts
+05-04-19 cowait.c: beef up invalid message tests and diagnostics
+05-04-11 drop fixed CO_MSGFD for $_coshell_msgfd
+05-04-07 coexec.c: fix !_lib_fork&&_map_spawnve close-on-exec redirection
+04-09-22 cowait.c: remove CO_SERIALIZE temporaries after listing -- duh
+04-09-01 co*: add CO_SERIALIZE
+04-07-22 system.c: access() => eaccess()
+04-02-11 coinit.c: fix CO_CROSS PATH initialization
+02-10-30 coclose.c: fix reference-after-free bug in coclose()
+02-01-31 codata.c,coopen.c: fix CO_MSGFD parameterization
+02-01-24 coopen.c: fix small memory leak
+01-10-26 coopen.c: hung sfclose(fp) -> close(sffileno(fp)) -- wow
+01-09-11 coinit.c: fix coident[] for ancient bsh that die on `test == 1'
+	 coinit.c: and fix coident[] to weed out buggy ksh88i trap on exit
+01-05-31 co*: add CO_CROSS, expose CO_DEVFD
+01-04-23 coquote: add state.type to avoid getenv() overwrite on some systems
+01-01-01 cokill: killjob => cokilljob, killshell => cokillshell
+00-12-18 coinit: CO_OSH ? "${!-$$}" : "${!:-$$}"
+00-10-25 codata: $ZSH_VERSION is not ksh
+00-02-14 procrun,system: system(3) returns wait() status (not shell status)
+99-11-19 co*: add CO_OSH for bsdi lack of times(1)
+	 coexec: CO_IGNORE for all but real ksh
+98-06-22 coinit: quote cd path arg
+
+
+

+


libsum changes

+
+
+12-02-29 sum-sha2.c: bitcount[] order reversed to allow a single noalias buffer copy
+09-09-28 sumlib.c: use simple (faster) method name match function
+08-06-05 sum-lmd.c: align context to largest int
+08-05-01 sumlib.c: add some -lmd verification checks
+08-02-11 sum-lmd.c,features/sum: add wrapper for solaris -lmd
+07-10-29 sum.h,sumlib.c: add SUM_LEGACY for legacy output format
+07-09-21 sum-sha1.c: reinstate Steve Reid's public domain implementation
+07-07-26 sumlib.c: drop GPL sum-sha1.c
+05-02-14 sumlib.c: split into sum-*.c
+05-02-14 sum-sha2.c: add SHA { 256 384 512 }
+04-02-29 Makefile: compile with $(CC.PIC) for codexlib/sum $(CC.DLL)
+03-12-16 add { crc prng } generic methods and maps[] to these methods
+03-12-16 sum.h,sumlib.c: add sumdata()
+03-09-29 sumlib.c: fix FNV to use ^ instead of +
+03-04-28 sumlib.c: drop md5 `zeroize' for performance
+	 sumlib.c: add FIPS 180-1 SHA-1
+
+
+

+


libdll changes

+
+
+11-10-11 dll_lib.c: add { dllnames() dll_lib() }
+10-10-20 dllscan.c: version arg "-" => 0
+10-10-19 dllplug.c: fix bug that wiped out dlopen() error message
+10-10-19 dllplug.c: un-localize lookup names (happens with cut and paste)
+10-10-19 dllscan.c: still no code for implicit libs missed by dlopen()
+10-08-02 dllplug.c: fix local path dllcheck() call
+10-05-28 dllplug.c: add dllplugin() with dllcheck() version check
+10-05-28 dllcheck.c: add dllcheck() to do plugin_version() checks
+10-05-28 dllerror.c: add dllerror(int retain) for dll*() and dl*() messages
+09-11-17 dllscan.c: handle name[-.]version in dlsopen()
+09-04-15 dllopen.c: add, use dllopen() internally to wrap dlopen()
+08-05-12 dllscan.c: LIBSUFFIX==.dylib => default plugin version match 0.0
+06-10-11 dllscan.c: check sfstruse() return values -- doh
+06-01-25 dllplug.c: add errorf() library message for dlopen() error
+05-02-14 dllscan.c: "" || "-" => NiL
+04-10-01 dllfind.c: drop ksh "builtin" workaround
+	 dllscan.c: directory prefix in name limits search to dir and siblings
+04-07-22 dllscan.c: access() => eaccess()
+04-01-30 dllfind.c: dllplug(error_info.id) then dllplug(0)
+04-01-28 dllscan.c: update for new plugin scheme: lib/foo/bar.xxx
+	 dllplug.c: add dllplug() for plugin dllfind()
+03-03-12 dllfind.c: dlopen() with RTLD_GLOBAL|RTLD_PARENT defaults
+03-02-11 dllscan.c: change LIBPATH to <dir>[:<env>[:<pat>]][,...]
+03-01-08 dllscan.c: hack version logic again -- is consistency rocket science?
+03-01-07 dlfcn.c: fix darwin.ppc dlopen/dlsym/dlclose
+02-11-18 dllfind.c: add path,size args (with backwards compatibility checks)
+02-11-15 dllfind.c: check for ./path if '.' in path but no '/'
+02-08-30 dllfind.c: fix a bug that returned uninitialized value on not found
+02-08-28 dllscan.c: handle and display bin as a sibling dir
+02-07-31 dllscan.c: add dllsopen,dllsread,dllsclose
+	 dllfind.c: use dllsopen,dllsread,dllsclose
+02-07-26 dllfind.c: add dllinfo()
+02-06-27 dllnext.c: define _GNU_SOURCE to enable RTLD_NEXT
+02-03-17 dllfind.c: fix dll prefix search (for cygwin)
+02-01-11 features/dll: include <dlfcn.h> only if _hdr_dlfcn&&_lib_dlopen
+01-10-31 dlfcn.c: change hp.pa dlopen() prototype (<dlfcn.h> but no -ldl!)
+01-09-25 dllfind: add LIBSUFFIX
+01-07-17 dllfind: do at least one dlopen() to prime dlerror()
+01-05-29 dlopen: fix dlopen(0,0) for HP
+01-04-20 dllfind: use getconf HOSTTYPE LIBPATH LIBSUFFIX
+01-02-14 features/dll: fix unbalanced ' quote and ancient hostinfo reference
+00-01-26 dlllook: add -- dlsym() with `_' weak prefix fallback
+99-04-01 features/dll: drop <stdio.h> -- iffe protos printf
+99-03-19 static=1 for all but win32.*
+98-06-01 dllfind: fix version search
+98-03-11 features/dll: probe for _DLL_RLD_SYM
+98-03-01 dllnext: fix to work!
+98-01-23 -ldl test moved to lib0ast
+98-01-11 update for astconf("LIBPATH")
+	 add dllnext(flags) to uncover next layer
+	 dllfind() and dllnext() in separate files (for 3d)
+97-10-11 move from libast so libast can link static
+
+

+


+ + + + + + +
March 13, 2012
+

+ +

+ + + -- cgit v1.2.3