History of Yash

 Legend:
   +: new feature
   -: removed feature
   =: specification change
   *: bug fix
   x: new bug

----------------------------------------------------------------------
Yash 2.14

  +  The -l option for the "bindkey" builtin.
  +  Negative array indices are now allowed.
  =  $PWD is now set to "/" (rather than "/..") after "cd /..".
  =  The "command" builtin with the -vb option now ignores shell
     keywords, aliases and functions.
  =  Most of the builtins now prints an error message and returns non-
     zero when they cannot print something to the standard output.
  =  The "pwd" and "times" builtins now fail when an operand is given.
  =  The shell no longer exits when an assignment for a special
     builtin failed if not in posixly-correct mode.
  *  "cd //" was failing if the current directory is "/".
  *  Invoking the "bindkey" builtin in the yashrc file was causing an
     invalid memory access.
  *  The "command" builtin with the -vb option was failing to find
     regular builtins that are not in $PATH.
  *  The "dirs" command was going into an infinite loop if given an
     argument.
  *  The -c and -d options are wrongly rejected by the "ulimit"
     builtin.
  *  The "fg" builtin now refuses more than one operands in posixly-
     correct mode, as described in the help.

----------------------------------------------------------------------
Yash 2.13

  +  "history" builtin
  +  The -i option for the "eval", "break" and "continue" builtins.
  +  The value of the $COMMAND_NOT_FOUND_HANDLER variable is now
     executed when a command is not found.
  -  '--autocd' option
  =  The exit status is now one when the "return" builtin is used
     outside a function in an interactive shell.
  =  Revised command search and execution.
  *  The shell would not exit after the "exit" builtin twice in a row
     when you have $PROMPT_COMMAND set and you have stopped jobs.
  *  The "notifyle" option not working with $PROMPT_COMMAND set.
  *  [line-editing] Redoing was broken.
  *  [line-editing] The command line was not redrawn after trap
     handling.
  *  [line-editing] Fixed some bugs in the vi-edit-and-accept command.

----------------------------------------------------------------------
Yash 2.12

  +  Emacs-like line-editing.
  +  "bindkey" builtin.
  +  The $PROMPT_COMMAND variable now can be an array.
  +  The value of the $YASH_AFTER_CD variable is now executed after
     the working directory was changed.
  =  The "fg" and "bg" builtin now always sends SIGCONT to the
     continued job.
  =  The "exit" builtin now warns about stopped jobs even when
     executed after the "fg", "bg", "disown" or "wait" builtin.
  *  In vi-like line-editing, the wrong text was put after 30th yank.
  *  In vi-like line-editing, the "s" command cannot be used if the
     cursor is at the beginning of line

----------------------------------------------------------------------
Yash 2.11

  +  Added the "--histspace" and "--le-noconvmeta" options.
  +  Support for the $HISTRMDUP variable.
  +  Support for the $YASH_LE_TIMEOUT variable.
  +  The "kill" builtin with the "-l" option now accepts signal names
     as operands.
  =  The "--le-convmeta" option now is a Boolean option.
  =  The "$-" special parameter now includes the "l" flag if the
     shell is a login shell.
  *  An empty case command "case i in (*) esac" now always returns the
     exit status of zero.
  *  Quoted words were incorrectly expanded with backslashes when the
     "-f" option is set.
  *  Fixed invalid memory access in the "v" command of vi-like
     line-editing.

----------------------------------------------------------------------
Yash 2.10

  +  History search in line-editing.
  =  Empty lines are no longer stored in the history.
  =  In the vi-like line-editing, "cw" and "cW" now work as in vi.
  *  Setting the "notifyle" option caused a segfault if yash was
     configured with line-editing disabled.
  *  In line-editing, undoing a change to a history entry did not
     restore the cursor position properly.
  *  Some fixes for invalid memory access during line-editing.

----------------------------------------------------------------------
Yash 2.9

  +  Line-editing in the interactive mode.
  x  Line-editing is not fully implemented.
  +  Multiple instances of shell that use the same file for the
     history file now share the history.
  -  The "history" builtin has been removed.
  =  Now non-ASCII alphabets are allowed in variable names.
  =  Now nested parameter expansions must be enclosed by braces.
  =  The "help" builtin now prints an error message if the specified
     builtin is not found.
  *  Fixed floating-point arithmetics in arithmetic expansions.
  *  Fixed parser for arithmetic expansions that was incorrectly
     rejecting identifiers that start with underscores.
  *  Fixed parser that had trouble parsing parameter expansions
     containing the hash sign like "${#=x}".
  *  Fixed the help message for the "pwd" builtin.

----------------------------------------------------------------------
Yash 2.8

  +  Brace expansion with delta: {a..b..c}
  +  The "command" builtin's -b and -B options now can be used with
     the -v and -V options.
  =  Yash now conforms to POSIX.1-2008.
    .  The "read" builtin now always removes trailing white-spaces
       from the input.
    .  The results of tilde expansion are no longer subject to field
       splitting and pathname expansion.
    .  The "pwd" builtin with the -P option no longer sets the $PWD
       variable.
    .  "cd -L foo/.." is no more the same as "cd -L ." in that it is
       an error when the directory "foo" does not exist.
    .  The "command" builtin's -p option now can be used with the -v
       and -V options.
    .  In posixly-correct mode, all asynchronous commands now ignore
       SIGINT and SIGQUIT (even when job control is active).
  *  When executing commands edited by the "fc" builtin, the $?
     variable was incorrectly assigned the exit status of the editor
     invoked by "fc".
  *  Backslashes, commas and braces in $IFS were incorrectly ignored
     in field splitting.
  *  Pathname expansion failed if we do not have the read permission
     for the specified directory even when we only need the search
     permission.
  *  The signal mask of commands invoked by the shell now inherits
     that of the shell (except for trapped signals).
  *  The "command" builtin now properly handles directories given as
     the commands when the "autocd" option is on.

----------------------------------------------------------------------
Yash 2.7

  +  Parameter expansion ${array[index]:=value} now allows assignment
     to an empty array element.
  +  Here-string by the "<<<" operator.
  +  New redirection operator ">>|" opens a pipe.
  -  Loop pipes no longer supported.
  =  The $IFS variable is always initialized to the default value when
     the shell is invoked.
  *  The "echo" and "printf" builtins now print an error message on
     failure.
  *  A quoted period at the beginning of a filename was not properly
     matching during filename expansion.

----------------------------------------------------------------------
Yash 2.6

  +  Added the -q option to the fc builtin.
  +  Compound commands may now contain no commands inside.
  *  "alias -p" now prints commands with proper escape.
  *  In posixly-correct mode, a semicolon followed by the identifier
     followed by "for" is now treated as an error.
  *  Global aliases are now allowed after compound commands.
  *  The "fg" and "wait" builtins were causing invalid memory access
     when the "-o notify" option is enabled.

----------------------------------------------------------------------
Yash 2.5

  =  Redirection of FDs used by the shell is now error.
  *  Some redirection syntax errors were overlooked.
  *  Fixed the "sig.y" test failure.
  *  When an "exec" command with redirections is enclosed in a brace
     with redirections, the redirections to the brace are now properly
     closed after execution.
  *  Fixed parsing error of a comment after the identifier of a for
     statement.

----------------------------------------------------------------------
Yash 2.4

  =  The long option for the -p option of the "jobs" builtin has been
     changed from "--pid-only" to "--pgid-only".
  *  Trap of SIGCHLD, SIGINT, SIGTERM, SIGQUIT, SIGTSTP, SIGTTOU were
     wrongly set to "ignore" in some condition.
  *  Signal handlers for SIGINT, SIGTERM, SIGQUIT, SIGTSTP, SIGTTOU
     were mistakenly reset in some moments.
  *  Fixed the exit status of the "wait" builtin returned when
     interrupted by a signal.
  *  Fixed file access permission test
  *  "command -V xxx/yyy" now prints an error message if "xxx/yyy" is
     not a valid command.

----------------------------------------------------------------------
Yash 2.3

  =  Now changing LC_CTYPE immediately takes effect if the shell is
     interactive and not in the posixly-correct mode.
  *  Fixed parameter expansion: empty words are now expanded properly.
  *  Fixed a race condition, which was causing some signals ignored.
  *  Assignments using the typeset/readonly/export builtins failed to
     update the shell's internal data. This caused the shell to keep
     using the old PATH after the PATH has been changed.

----------------------------------------------------------------------
Yash 2.2

  +  "help", "pushd", "popd" and "dirs" builtins
  =  The value of $PWD set by the "cd" builtin is fixed. It now has a
     correct value when changing to a relative path from the root
     directory.
  *  Pathname expansion not properly performed for patterns including
     "." or "..".

----------------------------------------------------------------------
Yash 2.1

  +  Array variables
  +  "array", "echo", "printf" and "test" builtins
  +  The -A option for the "read" builtin
  *  The colon flag in a parameter expansion like "${FOO:-bar}" was
     ignored if the value of the parameter begins with a certain
     character.
  *  The readonly attribute was ignored when an assignment occurs
     against a command invocation
  *  Passing "=" as a name to the "unset" builtin incorrectly unset
     the positional parameters and caused a potential invalid memory
     access.
  *  Field splitting on variable values that consist only of spaces
     produced wrong results.
  *  Test of file access permission now uses the effective user/group
     IDs rather than the real user/group IDs.

----------------------------------------------------------------------
Yash 2.0

  +  "history" builtin
  +  Command redirection
  *  A posixly-correct non-interactive shell exits when a paticular
     error occurred on a special builtin according to POSIX.
  *  Alias substitution routines were improved.
  *  Other bug fixes

----------------------------------------------------------------------
Yash 2.0 beta2

  +  Command history
  +  "type", "hash" and "fc" builtins
  =  If the "command" builtin with the -V option fails to find a
     command, an message is printed.
  *  Invocation of an external command with an assignent to the $PATH
     variable caused an invalid memory access.
  *  Single quote not parsed properly in some circumstances.
  *  Other bug fixes

----------------------------------------------------------------------
Yash 2.0 beta1

  +  "read", "getopts" and "command" builtins
  +  '--autocd' and '--curasync' option
  +  Mail check feature
  +  The prompt command
  =  The "readonly" and "export" builtins now affects global variables
     by default.
  *  The standard input is no longer buffered
  *  The "typeset" builtin now allows any characters other than '='
     for variable names.
  *  The special parameter $? reflects the exit status of a command
     substitution in a variable assignment.
  *  Many other bug fixes

----------------------------------------------------------------------
Yash 2.0 beta0

  +  "eval", "exec", ".", "times", "umask", "typeset", "export",
     "readonly", "unset", "shift" and "trap" builtins
  +  "wait" builtin now can be interrupted
  +  Arithmetic expansions
  +  Interactive shell now notifies the process killed by a signal
  -  "/etc/profile" and "~/.profile" are no longer sourced on start-up
  *  Fixed token delimitation in alias substitution
  *  Fixed token delimitation on assignments without values
  *  Many other bug fixes

----------------------------------------------------------------------
Yash 2.0 alpha2

  +  Initialization files such as "/etc/profile" and "~/.yashrc" are
     now sourced on start-up.
  +  '--noprofile', '--norcfile' and '--rcfile' options
  +  "pwd", "set", "exit", "return", "break", "continue", "jobs",
     "fg", "bg", "wait", "disown", "alias" and "unalias" builtins
  *  '--nocaseglob' was misinterpreted as '-c'.
  *  It was not fully case-insensitive when '--nocaseglob' is on.
  *  If job control is off, an interactive shell no longer prints
     changed status of jobs before prompt.
  =  Error handling for unset parameters was improved.
  =  The help message for 'yash --help' is now much briefer.

----------------------------------------------------------------------
Yash 2.0 alpha1

  +  New options implemented: -x, -h, -a
  =  The default value of 'PS3' is not set in posixly-correct mode.
  +  'configure' accepts new '--no-undefined' option
  +  ":", "true", "false", "cd" builtins
  *  Command hashtable is now cleared when PATH is assigned.
  *  Assertion failure when a null character is input
  *  Many other bug fixes

----------------------------------------------------------------------
Yash 2.0 alpha0 (the first release of version 2.x)

  x  Arithmetic expansion is not implemented
  x  Builtins are not implemented at all
