Skip to content

Releases: magicant/yash

2.57

04 Aug 14:50
2.57
Compare
Choose a tag to compare

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 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.

Full Changelog: 2.56.1...2.57

2.56.1

20 Mar 13:27
2.56.1
Compare
Choose a tag to compare

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 and emacs-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

20 Aug 03:21
2.55
Compare
Choose a tag to compare

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

25 Feb 10:08
Compare
Choose a tag to compare

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

23 Aug 14:57
Compare
Choose a tag to compare

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

11 Oct 14:22
Compare
Choose a tag to compare

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.

Version 2.51

12 Dec 05:10
Compare
Choose a tag to compare

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 than ab.
  • 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

31 May 03:09
Compare
Choose a tag to compare

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 intends crontab -e.
  • Updated completion scripts:
    • git-rebase: support new options in Git 2.24.0.

Version 2.49

21 Sep 15:22
Compare
Choose a tag to compare

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

22 Dec 14:27
Compare
Choose a tag to compare

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.
  • 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.