# History of Yash ## Yash 2.62 (Unreleased) - [line-editing] Updated the completion script for tar to support GNU tar 1.35 and libarchive (bsdtar) 3.8.7. - Updated the sample initialization script (yashrc): - When `$TERM_PROGRAM` is `vscode`, the script now sends the current working directory to the VS Code shell integration. ## Yash 2.61 (2026-03-03) - The `configure` script now accepts the `--disable-doc` option to omit installing the manual pages. - The `configure` script now has minimal cross compilation support. Use the `--host=HOST` option to specify the cross-compilation target. - Fixed a bug where the `configure` script could produce false positive results for function checks when an optimizing compiler eliminates the test code. The `configure` script now uses the `-fno-builtin` compiler option when compiling function check programs. - The `times` built-in now uses the `getrusage` function to obtain resource usage statistics on systems where it is available, which improves precision. - Updated the sample initialization script (yashrc): - The script no longer suggests moving the history file from `~/.yash_history` to `${XDG_STATE_HOME}/yash/history` if they resolve to the same file. - [line-editing] Fixed a bug where attempting to auto-complete arguments for unknown commands when the `PREFIX` variable is defined would result in an error message. - [line-editing] Added completion for `mount`, `sv`, `aria2c`, `mkinitcpio`, `7z`, and `hdparm`. ## Yash 2.60 (2025-09-15) - Updated the sample initialization script (yashrc): - Redefined the `open` function for WSL to use `rundll32.exe` instead of `cmd.exe` for better stability. - `$VISUAL` is now preferred over `$EDITOR` for the default value of `$FCEDIT`. - [line-editing] The "vi-edit-and-accept" command now honors the `VISUAL` and `EDITOR` variables, so that you can use your favorite editor. - [line-editing] Added completion for `fd`, `dvtm`, `mw` (mutt-wizard), and `typst`. - [line-editing] Completion for `man` now supports the `-l` (`--local-file`) option. - The `export`, `readonly`, and `typeset` built-ins now print the `--` separator before the variable names when printing variables whose names begin with a hyphen (`-`), so that the output can be safely re-parsed by the shell. The same applies to function names. - Fixed a bug where the shell continued to export the previous value of an array even after it was updated using the `array` built-in. Also fixed an issue where the internal cache was not refreshed for the `PATH`, `CDPATH`, and `YASH_LOADPATH` variables after being modified via the `array` built-in. - Fixed a bug where single quote characters (`'`) in the `word` of parameter expansions of the forms `${foo+word}`, `${foo-word}`, `${foo=word}`, and `${foo?word}` were treated as quoting characters when the expansion was in double quotes. - Fixed a bug where tilde expansion was performed on the `word` of parameter expansions of the forms `${foo+word}`, `${foo-word}`, `${foo=word}`, and `${foo?word}` even when the expansion was in double quotes. ## Yash 2.59 (2025-05-13) - Improved POSIX.1-2024 support: - When an error that would terminate a non-interactive shell occurs in an interactive shell, the shell now discards any remaining commands that were typed but not yet executed, and immediately continues to read the next command. Parameter expansion errors and variable assignment errors are examples of such errors. - When a foreground job suspends in an interactive shell, the shell now discards any remaining commands that were typed but not yet executed, and immediately continues to read the next command. - The shell now considers a job to be suspended when any child process suspends in a pipeline, instead of when all child processes suspend. - Patterns no longer expand to the filename `.` or `..` in pathname expansion. - When the `exit` built-in is used without an operand in a trap action, the shell now exits with the exit status of the last command executed before the trap action, instead of the exit status of the last command executed in the trap action. - The `read` built-in now returns a more specific exit status depending on the cause of the error. - The `read` built-in now supports the `-d` option, which can be used to specify a delimiter character. - The `readonly` built-in now refuses to make the `$LINENO`, `$OLDPWD`, `$OPTARG`, `$OPTIND`, and `$PWD` variables read-only in the POSIXly-correct mode. - The `test` (`[`) built-in no longer accepts binary operators `-a` and `-o` and parentheses `(` and `)` in the POSIXly-correct mode. - The `trap` built-in now supports the `-p` option in the POSIXly- correct mode. When the `-p` option is used, the built-in prints all traps without filtering out traps that are not set. - The `trap` built-in now also reports signals that are ignored because the program that invoked the shell has set the signal to be ignored. - The `wait` built-in no longer returns when the target process is suspended if job-control is on. The built-in now waits for the target process to exit or be terminated by a signal regardless of mode. - The `true`, `false`, and `pwd` built-ins are now substitutive built-ins. - The `cd` built-in now exits with status code 5, when an empty operand is supplied. - The `cd` built-in now returns exit status 1 if the `$PWD` or `$OLDPWD` variable cannot be updated because it is read-only. - The interactive shell now errors out if pathname expansion applied to a file redirection operand results in more than one pathname, regardless of whether the POSIXly-correct mode is enabled. - The shell now becomes interactive if the shell is reading commands from the standard input and the standard input and standard error are both connected to a terminal. Previously, the shell became interactive only if there was no command line operand as well. - Job control can now be enabled even if the shell does not have a controlling terminal. - If the job-control shell is started in the same process group as the session leader, the shell now forces the process group to be in the foreground, rather than suspending the shell itself until brought to the foreground by some other means. - The shell now returns exit status 128 when encountering a command read error. - When the shell is exiting with an exit status that indicates that that the last command was terminated by a signal, the shell now terminates with the same signal to propagate the command's termination status. - When an interactive shell starts an asynchronous command, its job number and process ID are now printed to the standard error. - The `printf` built-in now treats as an error a numeric operand that starts with a quote followed by more than one character. For example, `printf '%d' '"ab'` used to silently ignore the character `b`, but now it is treated as an error. - When a field is made up of a single tilde expansion that expands to an empty string, the field is no longer removed from the command line words. - When a tilde expansion produces a directory name that ends with a slash and the expansion is followed by a slash, the trailing slash in the directory name is now removed to maintain the correct number of slashes. - The syntax for specifying a file descriptor with a variable name in braces before a redirection operator is now reserved for future implementation. The syntax is now treated as a syntax error. - [line-editing] Updated the completion scripts to support Git 2.48.1. - [line-editing] Added completion for `git-mv`, `bmake`, `gmake`, `fnf`, `cmus`, `cmus-remote`, and `catgirl`. - [line-editing] Completion for `cd` and `pushd` no longer incorrectly performs pathname expansion on the directory names listed in `$CDPATH` before searching for candidate directories. - Fixed a possible crash when the `read` built-in reads input in an interactive shell. - Subshells created for executing a process redirection in a job- control shell now ignore the `SIGTSTP` signal. - Added a workaround for an apparent bug in glibc's fsetpos function that prevents the shell from updating the history file. - Previously, you could enable job control in a subshell by setting the `-m` option inside the subshell. This undocumented behavior has been removed. ## Yash 2.58.1 (2025-02-04) - Updated the sample initialization script (yashrc): - Version 2.58 changed the default `$HISTFILE` location to `${XDG_STATE_HOME}/yash/history`, but the initialization script was not making the containing directory. This was causing the shell to fail to save the history file. The initialization script now creates the directory if it does not exist. - [line-editing] Version 2.58 added completion for fzy, but the NEWS file did not mention it. This has been fixed. - Fixed a test case in `tests/job-y.tst` that was failing when run as root. ## Yash 2.58 (2025-02-02) - The location of the initialization files can now be configured using the `XDG_CONFIG_HOME` variable (except in POSIXly-correct mode). - [line-editing] Command line prediction now works in the vi command mode. - [line-editing] Added completion for fzy and git-restore. - [line-editing] Added completion for git-merge's --continue option. - [line-editing] The completion for the `.` built-in now suggests directory names for the first operand even before the user enters a slash. - Improved POSIX.1-2024 support: - Case command items now can be terminated by `;&` instead of `;;' to force the shell to execute the next item. - The non-standard terminators `;|` and `;;&` are also supported to resume pattern matching with the next item unless in the POSIXly-correct mode. - Dollar-single-quotes are now supported. - Declaration utility semantics is now supported. Assignment-like arguments to the `export`, `local`, `readonly`, and `typeset` built-ins are now expanded in the same way as assignments are expanded. - The `printf` built-in now supports position specifiers in format strings as in `printf '%2$s %1$s\n' foo bar`. - The `cd` and `pushd` built-ins now support the `-e` option, which can be used to see if the `$PWD` variable is successfully updated. - The exit status of the `getopts` built-in is now 2 on any error. - After the `bg` built-in resumed a job, the `!` special parameter expands to the process ID of the job. - An interactive shell no longer exits on an error in the `exec` built-in, even if the POSIXly-correct mode is on. - The shell's syntax now always allows `esac` as the first pattern of a case branch as in `case esac in (esac|case) echo ok; esac`. Previously, it was a syntax error in the POSIXly-correct mode. - The exit statuses returned from the `cd`, `pushd`, and `popd` built-ins have been updated to make it easier to distinguish the reasons for failure. - Fixed a potential crash caused by an expansion error in nested parameter expansion. - Updated the sample initialization script (yashrc): - The default `$HISTFILE` is now set to `${XDG_STATE_HOME}/yash/history` unless `${HOME}/.yash_history` exists, in which case the latter is used and a warning is printed. To suppress the warning and keep using the previous location, you can set the `$HISTFILE` variable before the sample initialization script is sourced. - Added aliases h='fc -l' and j='jobs'. - Added the wrapper function for `doas` in an attempt to remove the misleading terminal title. ## Yash 2.57 (2024-08-04) - Added support for the "$POST_PROMPT_COMMAND" variable, whose value is executed after reading a command line in the interactive shell. - If the shell exits because of a shell error during the EXIT trap, the shell now returns the exit status of the error rather than that of the last command before the EXIT trap. - [line-editing] Fixed the spurious error message printed when completing after `git config alias.` with the nounset shell option enabled. - [line-editing] Completion no longer inserts a redundant backslash to escape a character included in the completed word when the cursor follows another backslash. - Updated the sample initialization script (yashrc): - Added setup for VS Code shell integration. ## Yash 2.56.1 (2024-03-20) - The shell can now open more file descriptors on Cygwin. - Fixed the bug where the "typeset -fp" built-in prints parameter expansions of the form `${foo:/bar/baz}` with a redundant `#` flag like `${foo:/#bar/baz}`. - Fixed the bug where the `emacs-capitalize-word` line-editing command misbehaves and possibly crashes the shell if there is no word following the cursor to be capitalized. - Added the `emacs-search-forward-current` and `emacs-search-backward-current` line-editing commands. - [line-editing] Added the completion script for `doas`. ====================================================================== Legend: +: new feature -: removed feature =: specification change *: bug fix x: new bug ---------------------------------------------------------------------- Yash 2.55 (2023-08-20) + [line-editing] The Enter/Send key ("\et") now has a default binding to the command the Ctrl-M key ("\^M") is bound to in each mode. = [line-editing] The redraw-all and clear-and-redraw-all commands now can be used with an argument to swap their behavior. * Fixed mistranslation in the Japanese language support. . Updated the sample initialization script (yashrc): + Code example for binding Ctrl-L to clear-and-redraw-all. . Updated completion scripts: + Completion for git-switch and pass ---------------------------------------------------------------------- Yash 2.54 (2023-02-25) + Changing font style of command line predictions with $PS1P, etc. + The '--le-trim-right' option. = When the POSIXly-correct mode is active, the shell now refuses to execute built-ins POSIX XCU 2.9.1 lists as utilities that cause unspecified results. To implement the new behavior, the previous "semi-special" built-ins are now categorized in either of the new categories "mandatory" and "elective". The "command" and "type" built-ins now report the new categories of such built-ins. = The shell now requires a corresponding external executable to exist in $PATH when running a built-in that works like a standard external utility even when the POSIXly-correct mode is inactive. Such built-ins are now categorized as "substitutive" built-ins. = The "array" built-in is now completely ignored in the POSIXly- correct mode. The built-in, formerly a regular built-in, is now categorized as an "extension" built-in. = The xtrace option is now ignored while expanding the $PS4 variable to prevent possible infinite recursion. * The allexport option was wrongly ignored in many assignment contexts. * The errexit and errreturn options now work for assignment error in a for loop. * The ">" redirection with the noclobber option no longer hangs when the operand names a symbolic link to a non-existing file. * The exported value of the $DIRSTACK variable was not being updated correctly in the "pushd" and "popd" built-ins. * The effect of "!" no longer applies to the exit status of the "break", "continue", and "return" built-ins. * An alias value ending with a blank followed by a line continuation no longer subjects the next token to alias substitution. . Updated the sample initialization script (yashrc): + The "o" alias for WSL ---------------------------------------------------------------------- Yash 2.53 (2022-08-23) = The shell now deterministically rejects arithmetic expansions that result in undefined behavior. * A non-interactive yash now exits on an assignment error in a for loop. * Fixed a bug where command substitutions contained in the regular expression inside the "[[ word =~ regex ]]" syntax were not parsed correctly. * Fixed a bug where unclosed quotes in an end-of-here-document indicator were causing the shell to crash or misbehave. * Fixed a bug where yash crashes when invoked with no argv. ---------------------------------------------------------------------- Yash 2.52 (2021-10-11) = Unquoted multiple empty fields resulting from a single word expansion are now removed. For example, the brace expansion {,} now expands to no fields rather than two empty fields. * In word expansion, if a field consists of a single non-whitespace IFS character, it results in an empty field rather than no field. * "typeset -fp" now correctly distinguishes "<<-FOO" and "<< -FOO". * Fixed possible memory leak caused by improper use of the realloc function. . Updated completion scripts: * git: Fixed completion of arguments in a command line containing argument-taking options such as "-C". ---------------------------------------------------------------------- Yash 2.51 (2020-12-12) = When an expansion error occurs, the shell now immediately stops expansion rather than trying to expand the remaining part of the word. = When there are no positional parameters, "$@""$@" now expands to nothing rather than one empty field, as defined in POSIX. = Quote removal in arithmetic expansion has been modified to match the behavior defined in POSIX. It no longer allows things like $(("2" + \5)). = The quotation rules for the substitution word in a parameter expansion inside double-quotes have been changed to match with the behavior of other existing shells. For example, "${x-\a'b'}" now expands to \a'b' rather than ab. = When there is no command word in a simple command, redirections are now performed in a subshell after assignments are performed. = The standard input of asynchronous commands in a non-job-control shell is now always implicitly redirected to /dev/null, regardless of whether the standard input has already been redirected. = Quoted characters are now handled in (almost) the same way as Bash in the regular expression in the "[[ word =~ regex ]]" syntax. * The "command" built-in with the -v or -V option was printing the pathnames of external commands with a redundant leading slash when the current working directory is "/" or "//". * Redirections on a subshell command are now evaluated in the current shell rather than in the subshell. * When an EXIT trap is executed in a subshell with a redirection, the redirection was incorrectly not being applied to the trap. * When job control is off, the "trap" built-in was failing to set a new trap for SIGINT and SIGQUIT in an asynchronous command. * When job control is off, SIGINT and SIGQUIT were not being ignored if a trap had been set for the signal the main shell process. * In pattern matching, when an unescaped backslash results from an expansion in the pattern, it is now treated as an escape character. * When there are no positional parameters, the nested expansion "${{@}}" now expands to nothing rather than one empty field. * Unquoted parentheses and vertical bars now can be used in the regular expression in the "[[ word =~ regex ]]" syntax. ---------------------------------------------------------------------- Yash 2.50 (2020-05-31) * With the "-o notify" option enabled, the "fg" built-in was redundantly reporting the status of the job that had been resumed and exited. * Line-editing no longer hangs when the terminfo database maps a key to an empty string. * When $LINENO is exported, external commands now receive the correct value of the variable. . Updated the sample initialization script (yashrc): + A wrapper function for the "crontab" command is now installed to prevent accidental removal by "crontab -r" where the user intends "crontab -e". . Updated completion scripts: + git-rebase: support new options in Git 2.24.0. ---------------------------------------------------------------------- Yash 2.49 (2019-09-22) + '--for-local' option. = The '--no-unset' option now rejects unset variables not only in parameter expansion but also in arithmetic expansion. * Expansion of ""$*, ""$@, $*"", and $@"" now correctly yields an empty string rather than nothing when there are no positional parameters. * The $RANDOM variable was expanding to a value larger than 32767 on some systems. * The "\e" escape sequence was not working in the "echo" built-in. * When a last command is a subshell, the parent shell's jobs were not being cleared when entering the subshell. * The job status was not being updated correctly if a process ID was reused by another process before the previous process was removed from the job list. * The "typeset" built-in now prints functions that contain a simple command whose command name is a keyword in a format that can successfully re-parsed by the shell. . Updated completion scripts: * Remote branch names are now correctly completed for the argument to Git remote/fetch/pull/push commands. * Local pathname operands are now correctly completed for the rsync command. ---------------------------------------------------------------------- Yash 2.48 (2018-12-22) + The double-bracket command (the [[ ... ]] syntax) + The "local" built-in + The '--le-predict-empty' option + The prompt string now can be defined with the $YASH_PS... variables. = Command line prediction no longer shows suggestion before you start typing a command. Use the new '--le-predict-empty' option to restore the previous behavior. = The default value of $PS1 has been changed. * The line number is now correctly counted in arithmetic expansions that contain newlines. * Subshells in the EXIT trap were unexpectedly exiting with the exit status of the last command executed before the EXIT trap on the main shell. * A new EXIT trap that was set in a subshell in the EXIT trap was unexpectedly being ignored. * The "typeset" built-in was crashing when printing a function that contains a here-document that contains a command substitution that contains more than one command. * The "typeset" built-in was forgetting to print here-document contents when printing a function that contains a process substitution (or redirection) that contains here-documents. * The variable name token in the for command and the word following a here-document redirection operator are now correctly parsed even when it resulted from an alias substitution whose value begins with a blank. * The "do" keyword in a for loop is no longer subject to alias substitution. * An invalid semicolon that appears at the beginning of a line as a result of alias substitution in a for loop is now correctly rejected. . For more strict POSIXly-correctness, some syntactic constructions are now regarded as an error in the POSIXly-correct mode: * An IO_NUMBER token cannot be the operand of a redirection. * Keywords immediately following a redirection are not recognized. . Updated the sample initialization script (yashrc): = The prompt strings are now defined with the $YASH_PS... variables. * Window title update should now work on more terminals. * Any predefined handlers for SIGTSTP, SIGTTIN, and SIGTTOU are now cancelled so that jobs can be suspended properly. . Updated completion scripts: * git: pathnames are now correctly completed with the latest Git. + git-grep: support new options in Git 2.19.1. + git-stash: support new options in Git 2.18.0. + ping: support some common options = ssh, ssh-keygen: support new options in OpenSSH 7.7. ---------------------------------------------------------------------- Yash 2.47 (2018-04-11) + '--errreturn' option. = Expansion results printed by the -x option is now quoted to disambiguate presence of special characters. = When the shell prints aliases, variables, key bindings, etc. they are now printed with less quotes. * The "set" built-in without any argument now prints not only local variables but also global. * The "." built-in no longer leaves temporary positional parameters after a file-not-found error. * The ">" redirection with the noclobber option is now more reliable than before. Previously, there was little possibility of overwriting an existing regular file in case another process simultaneously replaces the file. . Updated the sample initialization script (yashrc): + Example code for enabling "direnv". ---------------------------------------------------------------------- Yash 2.46 (2017-10-28) = Global aliases are now substituted in all locations, including part of compound commands where only operators are syntactically acceptable. * The shell now reads and executes all shell commands line by line. Previously, commands that are not from a file or the standard input were parsed all at once before being executed. * After alias substitution where the alias value ends with a blank, the next word is also subject to alias substitution, but previously this substitution was being applied only once, which was a different behavior from many other shells. * After alias substitution where the alias value ends with a blank, global aliases were being applied twice, which is now just once. * Line continuations no longer prevent recursive alias substitution. ---------------------------------------------------------------------- Yash 2.45 (2017-07-05) + [line-editing] new line-editing commands: complete-max-then-list, complete-max-then-next-candidate, complete-max-then-prev-candidate = In prompt strings $PS1 and $PS2, the job count printed by the \j notation included finished jobs that have not yet waited for. That was confusing, so the job count no longer includes finished jobs that have once had its "Done" status reported to the user. = The "jobs" built-in, with the -n option, no longer clears finished jobs that are not being reported. * In arithmetic expansion, unset variables now successfully expand to a value of "0". * With the "-o notify" option, job status change was not being printed until the shell receives a SIGCHLD. . Updated the default initialization script (yashrc): + Confirm before clearing the whole history by "history -c'. . Updated completion scripts: + carthage: --cache-builds option * git: at most 10 candidates are now proposed for a commit hash. ---------------------------------------------------------------------- Yash 2.44 (2017-01-17) + Command line prediction and the '--le-predict' option. + A default initialization script is automatically loaded if the ~/.yashrc file cannot be loaded. = During shell startup, $YASH_LOADPATH is now initialized only if not set in the environment. * Updated completion script for: carthage, git, git-log, git-revert, git-submodule, ssh * The "return" built-in was wrongly refusing to return from a script sourced by the "." built-in in an interactive shell. * In the "test" built-in, the unary "-o" operator was returning the wrong answer if the given option name was negated with the "no" prefix (e.g. "test -o noclobber"). * The "wait" built-in now returns an exit status of 1 if any operand is invalid, ignoring results for any other operands. * In a for loop without the "in" keyword, a semicolon that delimits the variable name, if any, now must appear on the same line as the variable name. = Support for POSIX.1-2008 Technical Corrigendum 2 (2016). This affects the shell's behavior only in the POSIXly-correct mode unless marked with (*) in the following: . In a pipeline, the reserved word "!" must now be delimited by a white space when followed by a parenthesis "(". . In a for loop without the "in" keyword, the variable name and the "do" keyword can now be separated by a semicolon. . Variables that are assigned in a simple command whose command is a function no longer persist after the function finishes. . The standard input of an asynchronous command is now implicitly redirected to /dev/null when job control is off. Previously, this was done when the shell was interactive in the POSIXly- correct mode. . The SIGINT and SIGQUIT signals on an asynchronous command are now ignored only when job control is off. . The "bindkey", "complete", "dirs", "disown", "hash", "help", "history", "popd", "pushd", "suspend", "type", "typeset", and "ulimit" built-ins are now semi-special built-ins. . The "break" and "continue" built-ins now interrupt lexically enclosing loops only. (*) . Unquoted $* and $@ now expand to separate positional parameters, even if $IFS is an empty string. (*) . On an assignment error, a non-interactive shell now always exits, regardless of command type. (*) . When any error occurs in a special built-in in non-interactive shell, the shell now exits, regardless of error type. ---------------------------------------------------------------------- Yash 2.43 (2016-09-22) * Updated completion script for: carthage, cd, su ---------------------------------------------------------------------- Yash 2.42 (2016-08-27) + '--pipefail' option. + New completion script for: carthage, dnf, git-rev-parse, tree, watch + Updated completion script for: cd, git, git-bisect, git-rev-list (Git 2.9.2). = Yash now supports the 2013 edition of POSIX.1-2008. = Unclosed here-documents are now always rejected. = A job-control shell now ignores SIGTTIN and SIGTTOU by default. = Line-editing can now be interrupted by SIGINT. = The "-o errexit" option is now applied to redirection errors on compound commands and expansion errors in the for and case commands. * In backquoted command substitutions that occur in double quotes, backslashes that escape a double quote are now handled before the containing command is parsed. ---------------------------------------------------------------------- Yash 2.41 (2016-03-20) + '--emptylastfield' option. + New option for the "shift" built-in: -A + The "shift" built-in now accepts negative counts. + New completion script for: git-notes, git-reflog, git-worktree = The non-interactive shell now exits on an assignment error in a simple command without a command name. = The exit status is now non-zero when a for loop has been interrupted because of an read-only variable. = When there is no positional parameter, the word """$@" is now expanded to an empty word, producing the same result as "$@""". = The behavior of field splitting has been modified to match the intended interpretation of POSIX: If field splitting yields more than one field and the last field is empty, the last field is now removed. = The "read" built-in now removes leading whitespaces when assigning the last input value to the variable. = The first character of $IFS is now always used as a separator when concatenating positional parameters. Previously, $IFS was ignored in some corner cases. * Unclosed process redirections are now detected as syntax error. * When $ECHO_STYLE was GNU or ZSH, the "echo" built-in was incorrectly ignoring single hyphen operands. * The "typeset" built-in was crashing when used with a temporary assignment to a variable not specified in the built-in operands. * In the "typeset" built-in, the -r option was not effective when printing functions. * The "typeset" built-in now detects combination of the -f and -g options as an error. * The "fg" and "bg" built-ins no longer try to resume a non-job- controlled job when given no operand. * In range brace expansion, integers were not always parsed correctly. * The "fc" built-in was not handling the history range correctly when the range was specified with an unused entry number. * The "fc" built-in was incorrectly rejecting the syntax of the form "fc -s foo=bar n". * The interactive shell was unexpectedly forgetting the exit status of background jobs when reporting the job status. * Fixed potential undefined behavior during reading a history file. * Parameter expansions of the form ${foo/bar/baz} are now rejected in the POSIXly-correct mode, as documented in the manual. * Single- or double-quoted empty words were incorrectly being removed in field splitting. * Backslash escapes are now recognized in parameter indexes. ---------------------------------------------------------------------- Yash 2.40 (2016-01-09) = The "unset" built-in no longer rejects variable names containing the "=" symbol as an error. They are now silently ignored. = In the POSIXly-correct mode, unclosed here-documents are now treated as an error. * Fixed possible arithmetic overflow errors in memory allocation which might result in an undefined behavior. * Fixed crash on assigning a floating-point number in arithmetic expansion. * Fixed memory leak on finding a command in a relative path from $PATH. * The parameter expansion ${foo##bar*} was being treated like ${foo##bar} where the asterisk should match up to the end of the parameter value. * The parameter expansion ${foo%%*} was being expanded to ${foo} where it should expand to an empty string. * The "getopts" built-in no longer rejects digits as option characters. * The non-interactive shell no longer exits when the "command" built-in executes the "." built-in and the script is not found. * Fixed incorrect exit status of simple commands where command substitution is performed during command word expansion which yields no command line words. * The "exec" built-in now correctly exits with an exit status of 127 for a script file not found. * Pipes were not being connected as expected during command word expansion. * The "fg" and "bg" built-ins now report an error when they fail to print the job name. ---------------------------------------------------------------------- Yash 2.39 (2015-08-27) + New options for the "read" built-in: -e, -P, -p + New completion script for: passwd, valgrind - The configuration option '--disable-alias' has been dropped. = The "read" built-in now requires the -e (--line-editing) option to enable line-editing. = The behavior of the "trap" built-in now conforms to POSIX.1-2013. The built-in prints the traps for the calling shell rather than the subshell when it is executed in a command substitution. = The manual for the "return" built-in has been clarified as to what the built-in can return from. The behavior of the built-in has been modified accordingly. It no longer interrupts the "eval" and "fc" built-ins. * Crash on division by zero with the "/=" or "%=" operator in arithmetic expansion. * Crash in the "complete" built-in called without the -D option. * Yash no longer tries to find the profile and rcfile scripts in the root directory when $HOME is not set. * The "read" built-in with a single operand was failing to trim initial IFS whitespaces in field splitting. * The "read" built-in was not handling backslashes correctly in field splitting if $IFS contained a backslash. * The "-o allexport" option was being ignored when an array is assigned by the "read" built-in with the -A option. * Traps are no longer handled while waiting for input with line- editing in the "read" built-in. * Operands to the "set" built-in are now correctly completed. * Minor fix in completion script for "git-svn". ---------------------------------------------------------------------- Yash 2.38 (2015-06-21) + New completion scripts for: git-rm = In the POSIXly-correct mode, functions must now be defined with a portable name. * Backslashes following IFS characters were wrongly being dropped in field splitting. * In the POSIXly-correct mode, non-portable variable names are no longer allowed in for loops. * Completion error on words following a tilde expansion. * Completion error on moved or copied tracked files for git-add and git-commit. * Completion error on untracked file for git-commit. ---------------------------------------------------------------------- Yash 2.37 (2015-01-25) + Updated completion scripts for: git-checkout (Git 2.1.2), git-push (Git 2.0.1), git-submodule (Git 2.1.2). ---------------------------------------------------------------------- Yash 2.36 (2014-04-06) + New completion scripts for: git-describe, tig. + Updated completion script for: git-branch (Git 1.9.0). ---------------------------------------------------------------------- Yash 2.35 (2013-06-08) + '--traceall' option. + New completion scripts for: git-clean, git-grep, git-ls-remote, git-submodule, git-whatchanged + Updated completion scripts for: git-cherry-pick, git-rebase (Git 1.8.1.4), ssh, ssh-add, ssh-keygen (OpenSSH 6.2) = The condition for exiting the shell when the -e option is enabled has been changed in accordance with the 2013 edition of POSIX.1-2008. = The "++" and "--" operators are no longer supported in the POSIXly-correct mode. = The $RANDOM variable now always returns random numbers, ignoring the value from the environment variable, if any. = If yash encounters a too long line that cannot be handled while reading a history file, it now tries to keep reading the rest of the file rather than stopping reading. = Very long command lines are no longer saved in the history file. * Minor fix in a syntax error message. * Minor fix in completion script for "git", "ssh" and "rsync". ---------------------------------------------------------------------- Yash 2.34 (2013-02-23) + New "test" built-in operator: =~, -o (unary) + New completion scripts for: configure, git-name-rev, git-request-pull, make, rsync = A syntax error or expansion error in .yash_profile or .yashrc no longer makes the shell exit even when the shell is not interactive. = In line-editing, overwritten characters are now restored when you hit the backspace key. = In line-editing, the undo history is no longer saved for each backspace. * Fixes in completion scripts for "git". ---------------------------------------------------------------------- Yash 2.33 (2012-10-27) = The "help" built-in now prints brief usage of built-ins. = Some error messages for command syntax error have been revised. = Some built-ins now check command syntax more strictly. * The "set" built-in aborts the shell on a command syntax error as specified in POSIX. ---------------------------------------------------------------------- Yash 2.32 (2012-09-22) + Man page and HTML manual in English and Japanese. = The "help" built-in now prints part of the man page. * Fixes in completion scripts for "git". ---------------------------------------------------------------------- Yash 2.31 (2012-06-24) + Completion of directory stack indices in extended tilde expansion. + New option for the "complete" built-in: --dirstack-index + Completion for "svn" version 1.7. * Fixes in "git", "tar" and "su" completion scripts. ---------------------------------------------------------------------- Yash 2.30 (2012-02-04) * Fixed pathname completion for redirections. + New completion scripts for: svn, git, gitg, gitk, and gitx. * Minor fixes in completion scripts. ---------------------------------------------------------------------- Yash 2.29 (2011-10-15) + An alias value now can contain newlines. * Fixed invalid memory access on printing an empty array using the "typeset" built-in. * The function body is now correctly executed in a subshell when the body is defined using the (...) compound command. * In line-editing, the undo command can now be applied only to the history entry that is being edited. ---------------------------------------------------------------------- Yash 2.28 (2011-08-20) = In an interactive shell, mail check is now done before job status report. * Fixed arithmetic expansion evaluating some expressions that should not be evaluated. * Fixed the "array" built-in removing the wrong elements when positive and negative indices are intermixed with the -d option. * Fixed the EXIT trap being wrongly executed after a command-not- found error. * The EXIT trap is now executed with the correct redirection when the last command had redirection. * The "exec" built-in now correctly exports arrays that are just assigned. * ${#@} is now correctly expanded to an array of integers that represent the lengths of array elements. * Fixed infinite loop in sequential brace expansion. * Fixed configuration file parsing in completion of the "ssh" command. * The "-T" option of the "ln" and "mv" commands now can be completed. * The EXIT trap now can be completed. ---------------------------------------------------------------------- Yash 2.27 (2011-05-16) * Minor bug fixes. + New completion scripts for: awk, chsh, gawk, nawk, pgawk, scp, sftp, ssh-add, ssh-agent, ssh-keygen, su, sudo, sudoedit, and useradd. * Fix in completion scripts for the "set" and "tar" commands. ---------------------------------------------------------------------- Yash 2.26 (2011-02-17) + New option for the "return" built-in: -n (--no-return) = Error messages have been revised. = Shell option names have been generalized: Option names are now case-insensitive. Non-alphanumeric characters are ignored in option names. Options can be inverted by prefixing "no" to their names. = "case foo in (esac) bar; esac" is now rejected in the POSIXly correct mode. = The "-o noexec" option is now ignored in an interactive shell. = New mail notification is now printed only when the mailbox file is not empty. = "printf %c ''" now prints nothing as "printf %c" do. = In an invocation of the "complete" built-in with the -A or -R option, the pattern is now matched against the last component of the pathname when generating pathname candidates with the -f option. * Function names containing an '=' sign can now be specified as arguments to the typeset and unset built-ins (with the -f option). * Fixed the exit status of iterative execution that was interrupted by SIGINT. + New completion scripts for: bsdtar, eview, evim, gex, gnutar, gtar, return, rgview, rgvim, rview, rvim, slogin, ssh, tar, and which. * Many fixes in completion scripts for: bash, chmod, dash, less, mksh, set, sh, and umask. ---------------------------------------------------------------------- Yash 2.25 (2010-11-21) = In the completion candidate list, options are now sorted case- insensitively. = While executing a completion function, the $IFS is reset to the default value. + New completion scripts for: bash, csplit, dash, diff, ed, egrep, env, ex, expand, fgrep, file, find, fold, getconf, grep, gview, gvim, gvimdiff, head, iconv, id, join, ksh, less, ln, locale, man, mesg, mkdir, mkfifo, mksh, more, mv, newgrp, nice, nl, nohup, od, paste, patch, pathchk, pr, ps, renice, rm, rmdir, sed, sh, sort, split, stty, tail, tee, time, touch, tr, uname, uniq, vi, view, vim, vimdiff, wc, who, xargs, and yash. * Many fixes in completion scripts for: cat, cd, chgrp, chmod, chown, cmp, comm, cp, crontab, cut, date, df, du, exec, ls, and set. ---------------------------------------------------------------------- Yash 2.24 (2010-10-03) + New option for the "." built-in: -L + New options for the "command" built-in: -a, -f, -k - Removed the -B option for the "command" built-in. = Fixed configuration process so that the shell can handle all kinds of signals on FreeBSD. = [line-editing] New command completion mechanism. The "complete" built-in now has new syntax and semantics. Completion settings are now autoloaded from $YASH_LOADPATH. + New completion scripts for: basename, bg, cat, chgrp, chmod, chown, cmp, comm, command, cp, crontab, cut, date, df, du, export, popd, pushd, readonly, type, ".", and "[". = Revised completion scripts for: alias, array, bindkey, break, cd, complete, continue, dirs, disown, echo, eval, exec, exit, fc, fg, getopts, hash, help, history, jobs, kill, ls, printf, pwd, read, set, suspend, test, trap, typeset, ulimit, umask, unalias, unset, and wait. - Removed completion script for the "return" built-in. = Short options now come before long options in a completion candidate list. * Symbolic links to non-existent files can now be completed. * Other fixes in command completion. * Fixed invalid memory access on parameter expansion failure in redirection. ---------------------------------------------------------------------- Yash 2.23 (2010-07-29) * Traps are no longer handled during completion to avoid messing up the display. * Fixed invalid memory access during completion. When the notify option is enabled, the shell was wrongly trying to notify the job status while executing a candidate generator function. * The "-o verbose" option is now disabled during completion to suppress the auto-loaded script being printed. * Fixed completion script for the "kill" built-in. ---------------------------------------------------------------------- Yash 2.22 (2010-07-25) + New "test" built-in operators: -G, -O, -N + Completion settings are now autoloaded from $YASH_COMPPATH. + New completion scripts for: alias, array, bindkey, break, cd, complete, continue, dirs, disown, echo, eval, exec, exit, fc, fg, getopts, hash, help, history, jobs, kill, ls, printf, pwd, read, return, set, suspend, test, trap, typeset, ulimit, umask, unalias, unset, and wait. * Fix a bug that was causing a signal received by a just-created subshell to be wrongly ignored. * Other bug fixes ---------------------------------------------------------------------- Yash 2.21 (2010-06-18) + Command line completion = In an interactive shell, the value of $LINENO is now reset to 1 every time a command is input and executed. * The "function" keyword was not recognized by "command -v". * Fixed handling of SIGINT so that the interactive shell properly gets back to normal after receiving SIGINT. * Input reading functions rewritten, including some bug fixes. ---------------------------------------------------------------------- Yash 2.20 (2010-05-16) + Function definition using the "function" keyword. = The "-nt" and "-ot" operators of the "test" built-in now consider a non-existent file older in favor of Korn shell. = [line-editing] some editing commands have been renamed: vi-change-all -> vi-change-line vi-yank-and-change-all -> vi-yank-all-change-line vi-append-end -> vi-append-to-eol * [line-editing] the clear-and-redraw-all command was broken. ---------------------------------------------------------------------- Yash 2.19 (2010-02-14) + The "ulimit" built-in is now available on FreeBSD. + In mail checking, the timestamp of the mail file is now compared by the nanosecond if possible. + [line-editing] new line-editing commands: oldest-history-bol, newest-history-bol, return-history-bol, prev-history-bol, next-history-bol, beginning-search-forward, beginning-search-backward = Faster filename pattern matching. = [line-editing] the "accept-line" command no longer accepts a failing history search result. = [line-editing] the following commands have been changed not to move the cursor to the beginning of the line: oldest-history, newest-history, return-history, prev-history, next-history The new commands whose names end with "-bol" provide the previous behaviors. * Fixed broken output of array assignment traces. * [line-editing] the "vi-edit-and-accept" command now handles the count. * [line-editing] fixed the cursor position after the search-again-forward/backward command in the emacs-like mode. ---------------------------------------------------------------------- Yash 2.18 (2009-12-27) + New operators for string comparison in the "test" built-in: ==, ===, !==, <, <=, >, >= + Operators "-nt" and "-ot" in the "test" built-in now compares the modification time by the nanosecond if possible. + '--default-directory' option for the "cd" and "pushd" built-in. + '--remove-duplicates' option for the "pushd" built-in. + The right prompt and the styler prompt. + '--le-alwaysrp' option. = The interpretation of escape sequences to change the font in $PS1 and $PS2 has been changed. = $PS3 no longer initialized. = Escape sequences are now interpreted in $PS4 as well as in $PS1 and $PS2. = The "echo" and "printf" built-ins now can print a null character. * [line-editing] $LINES and $COLUMNS were wrongly ignored. * [line-editing] fixed font color for some terminals. ---------------------------------------------------------------------- Yash 2.17 (2009-12-04) + '--le-visiblebell' option. + New operators for version comparison in the "test" built-in: -veq, -vne, -vgt, -vge, -vlt, -vle + [line-editing] "eof" command = The "typeset" built-in now prints only local variables when invoked without the -g option or operands. = The "typeset" built-in now prints function definitions in a pretty format. = When not in POSIXly-correct mode, commands in command substitu- tion are now parsed when the command containing the substitution is parsed. * Fixed the parse error on parameter expansion "${#}". * Fixed the "wait" built-in wrongly trying to wait for non-parent processes when invoked in a subshell. * [line-editing] vi-replace-char command was broken. * Many other bug fixes ---------------------------------------------------------------------- Yash 2.16 (2009-10-17) + '--curbg' and '--curstop' options. = '--curasync' option is now set by default. = Changed exit status of a while/until loop whose body is empty. = The "return" and "exit" built-ins now accepts an exit status of 256 or larger. = The "echo" built-in now interprets octal escapes only beginning with a backslash followed by a zero. * Fixed a syntax error of a special built-in invoked thru the "command" built-in causing the non-interactive shell to exit. * Fixed the exit status of the shell when the EXIT trap is set. * The '--allexport' option was wrongly ignored by the "read" and "getopts" built-ins. * Fixed segfaults and other errors in the "getopts" built-in. * [line-editing] Fixed the vi-replace-char command causing invalid memory access. * [line-editing] Fixed the emacs-just-one-space command not leaving space(s). ---------------------------------------------------------------------- Yash 2.15 (2009-09-07) + An interactive shell now can be interrupted by SIGINT. + Bracket expressions in pathname expansion are now fully supported (provided that libc's regex implementation is correct). = The "suspend" built-in now requires the -f option to suspend an interactive shell that is a session leader. = The shell no longer automatically sets the $YASH_LE_TIMEOUT variable. = A job-control shell now stops itself when invoked in the background. = A job-control shell no longer ignores SIGTTOU by default. = The '--nocaseglob' option no longer affects pattern matching in parameter expansions of the form "${var#xxx}", "${var%xxx}", etc. * Fixed pathname expansion on redirection target. * Couldn't set a signal handler to the default by the "trap" built-in if the signal was ignored on invocation of an inter- active shell. * Fixed accidental interruption of built-ins by signals. * Fixed parser so that a non-simple command is properly parsed after alias substitution. * Various bug fixes ---------------------------------------------------------------------- Yash 2.14 (2009-08-07) + The -l option for the "bindkey" built-in. + Negative array indices are now allowed. = $PWD is now set to "/" (rather than "/..") after "cd /..". = The "command" built-in with the -vb option now ignores shell keywords, aliases and functions. = Most of the built-ins now prints an error message and returns non-zero when they cannot print something to the standard output. = The "pwd" and "times" built-ins now fail when an operand is given. = The shell no longer exits when an assignment for a special built-in failed if not in POSIXly-correct mode. * "cd //" was failing if the current directory is "/". * Invoking the "bindkey" built-in in the yashrc file was causing an invalid memory access. * The "command" built-in with the -vb option was failing to find regular built-ins 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" built-in. * The "fg" built-in now refuses more than one operands in POSIXly- correct mode, as described in the help. ---------------------------------------------------------------------- Yash 2.13 (2009-07-28) + "history" built-in + The -i option for the "eval", "break" and "continue" built-ins. + 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" built-in is used outside a function in an interactive shell. = Revised command search and execution. * The shell would not exit after the "exit" built-in 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 (2009-07-18) + Emacs-like line-editing. + "bindkey" built-in. + 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" built-in now always sends SIGCONT to the continued job. = The "exit" built-in now warns about stopped jobs even when executed after the "fg", "bg", "disown" or "wait" built-in. * 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 (2009-06-22) + Added the "--histspace" and "--le-noconvmeta" options. + Support for the $HISTRMDUP variable. + Support for the $YASH_LE_TIMEOUT variable. + The "kill" built-in 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 (2009-05-27) + 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 (2009-05-10) + 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" built-in has been removed. = Now non-ASCII alphabets are allowed in variable names. = Now nested parameter expansions must be enclosed by braces. = The "help" built-in now prints an error message if the specified built-in 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" built-in. ---------------------------------------------------------------------- Yash 2.8 (2009-04-18) + Brace expansion with delta: {a..b..c} + The "command" built-in's -b and -B options now can be used with the -v and -V options. = Yash now conforms to POSIX.1-2008. . The "read" built-in 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" built-in 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" built-in'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" built-in, 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" built-in now properly handles directories given as the commands when the "autocd" option is on. ---------------------------------------------------------------------- Yash 2.7 (2009-03-02) + 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" built-ins 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 (2009-02-11) + Added the -q option to the fc built-in. + 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" built-ins were causing invalid memory access when the "-o notify" option is enabled. ---------------------------------------------------------------------- Yash 2.5 (2009-01-16) = 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 (2008-12-23) = The long option for the -p option of the "jobs" built-in 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" built-in 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 (2008-12-07) = 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 built-ins 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 (2008-10-31) + "help", "pushd", "popd" and "dirs" built-ins = The value of $PWD set by the "cd" built-in 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 (2008-10-16) + Array variables + "array", "echo", "printf" and "test" built-ins + The -A option for the "read" built-in * 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" built-in 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 (2008-09-25) + "history" built-in + Command redirection * A POSIXly-correct non-interactive shell exits when a particular error occurred on a special built-in according to POSIX. * Alias substitution routines were improved. * Other bug fixes ---------------------------------------------------------------------- Yash 2.0 beta2 (2008-09-11) + Command history + "type", "hash" and "fc" built-ins = If the "command" built-in with the -V option fails to find a command, an message is printed. * Invocation of an external command with an assignment to the $PATH variable caused an invalid memory access. * Single quote not parsed properly in some circumstances. * Other bug fixes ---------------------------------------------------------------------- Yash 2.0 beta1 (2008-09-06) + "read", "getopts" and "command" built-ins + '--autocd' and '--curasync' option + Mail check feature + The prompt command = The "readonly" and "export" built-ins now affects global variables by default. * The standard input is no longer buffered * The "typeset" built-in 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 (2008-07-27) + "eval", "exec", ".", "times", "umask", "typeset", "export", "readonly", "unset", "shift" and "trap" built-ins + "wait" built-in 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 (2008-07-10) + 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" built-ins * '--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 (2008-06-14) + 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" built-ins * 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) (2008-05-26) x Arithmetic expansion is not implemented x Built-ins are not implemented at all