Releases: magicant/yash
Releases · magicant/yash
2.57
What's Changed
- 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 aftergit 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.
Full Changelog: 2.56.1...2.57
2.56.1
What's Changed
- 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
andemacs-search-backward-current
line-editing commands. (by @vext01 in #37) - [line-editing] Added the completion script for
doas
. (by @DanisDGK in #45)
New Contributors
Full Changelog: 2.55...2.56.1
2.55
Yet another shell, version 2.55
Full Changelog: 2.54...2.55
- Added: [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. - Added: [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.
- Added: the sample initialization script (yashrc):
- Code example for binding Ctrl-L to clear-and-redraw-all
- Added: completion scripts:
- Completion for git-switch and pass
2.54
Yet another shell, version 2.54.
Full Changelog: 2.53...2.54
- Added: Changing font style of command line predictions with $PS1P, etc.
- Added: The '--le-trim-right' option.
- Changed: 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.
- Changed: 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.
- Changed: 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.
- Changed: The xtrace option is now ignored while expanding the $PS4 variable to prevent possible infinite recursion.
- Fixed: The allexport option was wrongly ignored in many assignment contexts.
- Fixed: The errexit and errreturn options now work for assignment error in a for loop.
- Fixed: The ">" redirection with the noclobber option no longer hangs when the operand names a symbolic link to a non-existing file.
- Fixed: The exported value of the $DIRSTACK variable was not being updated correctly in the "pushd" and "popd" built-ins.
- Fixed: The effect of "!" no longer applies to the exit status of the "break", "continue", and "return" built-ins.
- Fixed: 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):
- Added: The "o" alias for WSL
2.53
Yet another shell, version 2.53.
This is a maintenance release.
Full Changelog: 2.52...2.53
- Changed: The shell now deterministically rejects arithmetic expansions that result in undefined behavior.
- Fixed: 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.
Version 2.52
This is a maintenance release.
- Changed: 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. - Fixed: In word expansion, if a field consists of a single non-whitespace IFS character, it results in an empty field rather than no field.
- Fixed:
typeset -fp
now correctly distinguishes<<-FOO
and<< -FOO
. - Fixed: 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
.
- git: Fixed completion of arguments in a command line containing argument-taking options such as
Version 2.51
This is a maintenance release.
- Changed: When an expansion error occurs, the shell now immediately stops expansion rather than trying to expand the remaining part of the word.
- Changed: When there are no positional parameters,
"$@""$@"
now expands to nothing rather than one empty field, as defined in POSIX. - Changed: Quote removal in arithmetic expansion has been modified to match the behavior defined in POSIX. It no longer allows things like
$(("2" + \5))
. - Changed: 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 thanab
. - Changed: When there is no command word in a simple command, redirections are now performed in a subshell after assignments are performed.
- Changed: 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.
- Changed: Quoted characters are now handled in (almost) the same way as Bash in the regular expression in the
[[ word =~ regex ]]
syntax. - Fixed: 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 "//".
- Fixed: Redirections on a subshell command are now evaluated in the current shell rather than in the subshell.
- Fixed: When an EXIT trap is executed in a subshell with a redirection, the redirection was incorrectly not being applied to the trap.
- Fixed: When job control is off, the "trap" built-in was failing to set a new trap for SIGINT and SIGQUIT in an asynchronous command.
- Fixed: 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.
- Fixed: In pattern matching, when an unescaped backslash results from an expansion in the pattern, it is now treated as an escape character.
- Fixed: When there are no positional parameters, the nested expansion
"${{@}}"
now expands to nothing rather than one empty field. - Fixed: Unquoted parentheses and vertical bars now can be used in the regular expression in the
[[ word =~ regex ]]
syntax.
Version 2.50
This is a maintenance release.
- Fixed: With the "-o notify" option enabled, the "fg" built-in was redundantly reporting the status of the job that had been resumed and exited.
- Fixed: Line-editing no longer hangs when the terminfo database maps a key to an empty string.
- Fixed: 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 intendscrontab -e
.
- A wrapper function for the "crontab" command is now installed to prevent accidental removal by
- Updated completion scripts:
- git-rebase: support new options in Git 2.24.0.
Version 2.49
Yet another shell (yash), version 2.49.
This version is a maintenance release.
- Added:
--for-local
option. - Changed: The
--no-unset
option now rejects unset variables not only in parameter expansion but also in arithmetic expansion. - Fixed: Expansion of
""$*
,""$@
,$*""
, and$@""
now correctly yields an empty string rather than nothing when there are no positional parameters. - Fixed: The
$RANDOM
variable was expanding to a value larger than 32767 on some systems. - Fixed: The
\e
escape sequence was not working in the "echo" built-in. - Fixed: When a last command is a subshell, the parent shell's jobs were not being cleared when entering the subshell.
- Fixed: 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.
- Fixed: 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:
- Fixed: Remote branch names are now correctly completed for the argument to Git remote/fetch/pull/push commands.
- Fixed: Local pathname operands are now correctly completed for the rsync command.
Version 2.48
Yet another shell (yash), version 2.48.
This version introduces the [[ ... ]]
command syntax and the local
built-in.
Various fixes and improvements have been applied as well.
- Added: The double-bracket command (the
[[ ... ]]
syntax) - Added: The
local
built-in - Added: The '--le-predict-empty' option
- Added: The prompt string now can be defined with the
$YASH_PS...
variables. - Changed: 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.
- Changed: The default value of
$PS1
has been changed. - Fixed: The line number is now correctly counted in arithmetic expansions that contain newlines.
- Fixed: 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.
- Fixed: A new EXIT trap that was set in a subshell in the EXIT trap was unexpectedly being ignored.
- Fixed: 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. - Fixed: 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. - Fixed: 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.
- Fixed: The
do
keyword in a for loop is no longer subject to alias substitution. - Fixed: 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.
- Changed: 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):
- Changed: The prompt strings are now defined with the
$YASH_PS...
variables. - Fixed: Window title update should now work on more terminals.
- Fixed: Any predefined handlers for SIGTSTP, SIGTTIN, and SIGTTOU are now cancelled so that jobs can be suspended properly.
- Changed: The prompt strings are now defined with the
- Updated completion scripts:
- Fixed: git: pathnames are now correctly completed with the latest Git.
- Added: git-grep: support new options in Git 2.19.1.
- Added: git-stash: support new options in Git 2.18.0.
- Added: ping: support some common options
- Changed: ssh, ssh-keygen: support new options in OpenSSH 7.7.