Skip to content

Releases: magicant/yash

2.58.1

04 Feb 12:28
2.58.1
Compare
Choose a tag to compare

What's Changed

  • tests/job-y.tst: Account for root PS1. by @pghvlaans in #106
    • Fixed a test case in tests/job-y.tst that was failing when run as root.
  • Update NEWS & THANKS for fzy completion by @magicant in #107
    • Version 2.58 added completion for fzy, but the NEWS file did not mention it. This has been fixed.
  • Redefine Actions workflow by @magicant in #108
  • share/initialization/common: create HISTFILE directory automatically by @unrealapex in #109
    • 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.

New Contributors

Full Changelog: 2.58...2.58.1

2.58

02 Feb 13:54
2.58
Compare
Choose a tag to compare

What's Changed

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

New Contributors

Full Changelog: 2.57...2.58

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.