CARVIEW |
Navigation Menu
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Releases: fish-shell/fish-shell
fish 4.0.2 (released April 20, 2025)
Compare
This release of fish fixes a number of issues identified in fish 4.0.1:
- Completions are quoted, rather than backslash-escaped, only if the completion is unambiguous. Continuing to edit the token is therefore easier (#11271). This changes the behavior introduced in 4.0.0 where all completions were quoted.
- The warning when the terminfo database can’t be found has been downgraded to a log message. fish will act as if the terminal behaves like xterm-256color, which is correct for the vast majority of cases (#11277, #11290).
- Key combinations using the super (Windows/command) key can now (actually) be bound using the
super-
prefix (#11217). This was listed in the release notes for 4.0.1 but did not work correctly. - function is stricter about argument parsing, rather than allowing additional parameters to be silently ignored (#11295).
- Using parentheses in the test builtin works correctly, following a regression in 4.0.0 where they were not recognized (#11387).
delete
in Vi mode when Num Lock is active will work correctly (#11303).- Abbreviations cannot alter the command-line contents, preventing a crash (#11324).
- Improvements to various completions, including new completions for
wl-randr
(#11301), performance improvements forcargo
completions by avoiding network requests (#11347), and other improvements forbtrfs
(#11320),cryptsetup
(#11315),git
(#11319, #11322, #11323),jj
(#11046), andsystemd-analyze
(#11314). - The Mercurial (
hg
) prompt can handle working directories that contain an embedded newline, rather than producing errors (#11348). - A number of crashes have been fixed. Triggers include prompts containing backspace characters (#11280), history pager search (#11355), invalid UTF-8 in read (#11383), and the
kill-selection
binding (#11367). - A race condition in the test suite has been fixed (#11254), and a test for fish versioning relaxed to support downstream distributors’ modifications (#11173).
- Small improvements to the documentation (#11264, #11329, #11361).
Download links: To download the source code for fish, we suggest the file named "fish-4.0.2.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is 6e1ecdb164285fc057b2f35acbdc20815c1623099e7bb47bbfc011120adf7e83
. A GPG signature from David Adam (key ID 0x7A67D962D88A709A
is available as "fish-4.0.2.tar.xz.asc".
The files called fish-static-* are experimental, statically linked builds, for any Linux with the given architecture. Extract and run, and they will extract their data files as needed.
Assets 8
fish 4.0.1 (released March 12, 2025)
Compare
This release of fish includes the following improvements compared to fish 4.0.0:
- Key combinations using the super (Windows/command) key can be bound using the
super-
prefix (#11217). - Konsole’s menu shows the “Open folder with” option again (#11198).
$fish_color_search_match
will now only be applied to the foreground color if it has an explicit foreground. For example, this allows setting:
set -g fish_color_search_match --reverse
- Cursor shape commands (
\e[2 q
) are no longer sent in non-interactive shells or in redirections (#11255). - status gained a
is-interactive-read
subcommand, to check whether the script is being called from an interactive read invocation. - fish’s background tasks are now started in a way that avoids an error on macOS Terminal.app (#11181).
- Using key combinations within qemu should work correctly.
- Prompts containing control characters no longer cause incorrect display of command lines (#11252).
- Cancelling the command-line in Vi mode displays correctly again (#11261).
- The acidhub prompt properly displays the git branch again (#11179).
- Completions for
wine
correctly include files again (#11202). - On macOS, paths from
/etc/paths
and/etc/manpaths
containing colons are handled correctly (#10684). This functionality was included in the 4.0.0 release notes but was missing from the source code. - The XTerm
modifyOtherKeys
keyboard encoding is no longer used under WezTerm, as it does not work correctly in all layouts (#11204). option-left
and other similar keys should now work in iTerm versions before 3.5.12; the kitty keyboard protocol is now disabled on these versions (#11192).- The kitty keyboard protocol is no longer used under Midnight Commander, as it does not work correctly (#10640).
- fish now sends the commandline along with the OSC 133 semantic prompt command start sequence. This fixes a test in the kitty terminal (#11203).
- Git completions for third-party commands like “git-absorb” are completed correctly again (#11205).
- Completions for
diskutil
no longer produce an error (#11201). - The output of certain error messages no longer prints newlines to standard output (#11248).
- A number of crashes have been fixed, including file names longer than 255 bytes (#11221), using fish on a btrfs filesystem (#11219), history files that do not have the expected format (#11236), and pasting into an empty command line (#11256).
Download links: To download the source code for fish, we suggest the file named "fish-4.0.1.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is 4ed63a70207283e15cf21fc5f21db4230421e4f98d4826b5b1c8254d69c762b5
. A GPG signature from David Adam (key ID 0x7A67D962D88A709A
is available as "fish-4.0.1.tar.xz.asc".
The files called fish-static-* are experimental, statically linked builds, for any Linux with the given architecture. Extract and run, and they will extract their data files as needed.
Assets 8
fish 4.0.0 (released February 27, 2025)
Compare
fish’s core code has been ported from C++ to Rust (#9512). This means a large change in dependencies and how to build fish. However, there should be no direct impact on users. Packagers should see the For Distributors section at the end.
Notable backwards-incompatible changes
-
As part of a larger binding rework,
bind
gained a new key notation.
In most cases the old notation should keep working, but in rare cases you may have to change abind
invocation to use the new notation.
See below for details. -
ctrl-c
now calls a new bind function calledclear-commandline
. The old behavior, which leaves a “^C” marker, is available ascancel-commandline
(#10935) -
random
will produce different values from previous versions of fish when used with the same seed, and will work more sensibly with small seed numbers.
The seed was never guaranteed to give the same result across systems,
so we do not expect this to have a large impact (#9593). -
Variables in command position that expand to a subcommand keyword are now forbidden to fix a likely user error.
For example,set editor command emacs; $editor
is no longer allowed (#10249). -
functions --handlers
will now list handlers in a different order.
Now it is definition order, first to last, where before it was last to first.
This was never specifically defined, and we recommend not relying on a specific order (#9944). -
The
qmark-noglob
feature, introduced in fish 3.0, is enabled by default. That means?
will no longer act as a single-character glob.
You can, for the time being, turn it back on by addingno-qmark-noglob
tofish_features
and restarting fish:set -Ua fish_features no-qmark-noglob
The flag will eventually be made read-only, making it impossible to turn off.
-
Terminals that fail to ignore unrecognized OSC or CSI sequences may display garbage. We know cool-retro-term and emacs’ ansi-term are affected, but most mainstream terminals are not.
-
fish no longer searches directories from the Windows system/user
$PATH
environment variable for Linux executables. To execute Linux binaries by name (i.e. not with a relative or absolute path) from a Windows folder, make sure the/mnt/c/...
path is explicitly added to$fish_user_paths
and not just automatically appended to$PATH
bywsl.exe
(#10506). -
Under Microsoft Windows Subsystem for Linux 1 (not WSL 2), backgrounded jobs that have not been disowned and do not terminate on their own after a
SIGHUP
+SIGCONT
sequence will be explicitly killed by fish on exit (after the usual prompt to close or disown them) to work around a WSL 1 deficiency that sees backgrounded processes that run intoSIGTTOU
remain in a suspended state indefinitely (#5263). The workaround is to explicitlydisown
processes you wish to outlive the shell session.
Notable improvements and fixes
-
fish now requests XTerm’s
modifyOtherKeys
keyboard encoding and kitty keyboard protocol’s progressive enhancements (#10359).
Depending on terminal support, this allows to binding more key combinations, including arbitrary combinations of modifiersctrl
,alt
andshift
, and distinguishing (for example)ctrl-i
fromtab
.Additionally,
bind
now supports a human-readable syntax in addition to byte sequences.
This includes modifier names, and names for keys likeenter
andbackspace
.
For examplebind up 'do something'
binds the up-arrow key instead of a two-key sequence (“u” and then “p”)bind ctrl-x,alt-c 'do something'
binds a sequence of two keys.
Any key argument that starts with an ASCII control character (like
\e
or\cX
) or is up to 3 characters long, not a named key, and does not contain,
or-
will be interpreted in the old syntax to keep compatibility for the majority of bindings.Keyboard protocols can be turned off by disabling the “keyboard-protocols” feature flag:
set -Ua fish_features no-keyboard-protocols
This is a temporary measure to work around buggy terminals (#11056), which appear to be relatively rare.
Use this if something like “=0” or “=5u” appears in your commandline mysteriously. -
fish can now be built as a self-installing binary (#10367). That means it can be easily built on one system and copied to another, where it can extract supporting files.
To do this, run:cargo install --path . # in a clone of the fish repository # or `cargo build --release` and copy target/release/fish{,_indent,_key_reader} wherever you want
The first time it runs interactively, it will extract all the data files to
~/.local/share/fish/install/
. A specific path can be used for the data files withfish --install=PATH
To uninstall, remove the fish binaries and that directory.This build system is experimental; the main build system, using
cmake
, remains the recommended approach for packaging and installation to a prefix. -
A new function
fish_should_add_to_history
can be overridden to decide whether a command should be added to the history (#10302). -
Bindings can now mix special input functions and shell commands, so
bind ctrl-g expand-abbr "commandline -i \n"
works as expected (#8186). -
Special input functions run from bindings via
commandline -f
are now applied immediately, instead of after the currently executing binding (#3031, #10126).
For example,commandline -i foo; commandline | grep foo
succeeds now. -
Undo history is no longer truncated after every command, but kept for the lifetime of the shell process.
-
The
ctrl-r
history search now uses glob syntax (#10131). -
The
ctrl-r
history search now operates only on the line or command substitution at cursor, making it easier to combine commands from history (#9751). -
Abbreviations can now be restricted to specific commands. For instance:
abbr --add --command git back 'reset --hard HEAD^'
will expand “back” to
reset --hard HEAD^
, but only when the command isgit
(#9411).
Deprecations and removed features
-
commandline --tokenize
(short option-o
) has been deprecated in favor ofcommandline --tokens-expanded
(short option-x
) which expands variables and other shell syntax, removing the need to use eval in completion scripts (#10212). -
Two new feature flags:
remove-percent-self
(seestatus features
) disables PID expansion of%self
, which has been supplanted by$fish_pid
(#10262).test-require-arg
disablestest
’s one-argument mode. That meanstest -n
without an additional argument will return false,test -z
will keep returning true. Any other option without an argument, anything that is not an option and no argument will be an error. This also goes for[
, test’s alternate name.
This is a frequent source of confusion and so we are breaking with POSIX explicitly in this regard.
In addition to the feature flag, there is a debug category “deprecated-test”. Running fish withfish -d deprecated-test
will show warnings whenever atest
invocation that would change is used. (#10365).
These can be enabled with:
set -Ua fish_features remove-percent-self test-require-arg
We intend to enable them by default in future, and after that eventually make them read-only.
-
Specifying key names as terminfo names (using the
bind -k
syntax) is deprecated and may be removed in a future version. -
When a terminal pastes text into fish using bracketed paste, fish used to switch to a special
paste
bind mode.
This bind mode has been removed. The behavior on paste is no longer configurable. -
When an interactive fish is stopped or terminated by a signal that cannot be caught (SIGSTOP or SIGKILL), it may leave the terminal in a state where keypresses with modifiers are sent as CSI u sequences, instead of traditional control characters or escape sequences that are recognized by Readline and compatible programs, such as bash and python.
If this happens, you can use thereset
command fromncurses
to restore the terminal state. -
fish_key_reader --verbose
no longer shows timing information. -
Terminal information is no longer read from hashed terminfo databases, or termcap databases (#10269). The vast majority of systems use a non-hashed terminfo database, which is still supported.
-
source
returns an error if used without a filename or pipe/redirection (#10774).
Scripting improvements
...
Assets 8
fish 4.0b1 (released December 17, 2024)
Compare
These are the draft release notes for fish 4.0.0. Like this release of fish itself, they are in beta and are not complete. Please report any issues you find.
fish’s core code has been ported from C++ to Rust (#9512).
This means a large change in dependencies and how to build fish.
Packagers should see the For Distributors section at the end.
Notable backwards-incompatible changes
-
As part of a larger binding rework,
bind
gained a new key notation.
In most cases the old notation should keep working, but in rare cases you may have to change abind
invocation to use the new notation.
See below for details. -
Terminals that fail to ignore unrecognized OSC or CSI sequences may display garbage. We know cool-retro-term and emacs’ ansi-term are affected,
most mainstream terminals are not. -
alt-left
andalt-right
will now move by one argument (which may contain quoted spaces), not just one word likectrl-left
andctrl-right
do. -
alt-backspace
will delete an entire argument, not just one word (which isctrl-backspace
now). -
random
will produce different values from previous versions of fish when used with the same seed, and will work more sensibly with small seed numbers.
The seed was never guaranteed to give the same result across systems,
so we do not expect this to have a large impact (#9593). -
Variables in command position that expand to a subcommand keyword are now forbidden to fix a likely user error.
For example,set editor command emacs; $editor
is no longer allowed (#10249). -
functions --handlers
will now list handlers in a different order.
Now it is definition order, first to last, where before it was last to first.
This was never specifically defined, and we recommend not relying on a specific order (#9944). -
The
qmark-noglob
feature, introduced in fish 3.0, is enabled by default. That means?
will no longer act as a single-character glob.
You can, for the time being, turn it back on by addingno-qmark-noglob
tofish_features
and restarting fish:set -Ua fish_features no-qmark-noglob
The flag will eventually be made read-only, making it impossible to turn off.
-
fish no longer searches directories from the Windows system/user
$PATH
environment variable for Linux executables. To execute Linux binaries by name (i.e. not with a relative or absolute path) from a Windows folder, make sure the/mnt/c/...
path is explicitly added to$fish_user_paths
and not just automatically appended to$PATH
bywsl.exe
(#10506). -
Under Microsoft Windows Subsystem for Linux 1 (not WSL 2) , backgrounded jobs that have not been disowned and do not terminate on their own after a
SIGHUP
+SIGCONT
sequence will be explicitly killed by fish on exit (after the usual prompt to close or disown them) to work around a WSL 1 deficiency that sees backgrounded processes that run intoSIGTTOU
remain in a suspended state indefinitely (#5263). The workaround is to explicitlydisown
processes you wish to outlive the shell session.
Notable improvements and fixes
-
fish now requests XTerm’s
modifyOtherKeys
keyboard encoding and kitty keyboard protocol’s progressive enhancements (#10359).
Depending on terminal support, this allows to binding more key combinations, including arbitrary combinations of modifiersctrl
,alt
andshift
, and distinguishing (for example)ctrl-i
fromtab
.Additionally,
bind
now supports a human-readable syntax in addition to byte sequences.
This includes modifier names, and names for keys likeenter
andbackspace
.
For examplebind up 'do something'
binds the up-arrow key instead of a two-key sequence (“u” and then “p”)bind ctrl-x,alt-c 'do something'
binds a sequence of two keys.
Any key argument that starts with an ASCII control character (like
\e
or\cX
) or is up to 3 characters long, not a named key, and does not contain,
or-
will be interpreted in the old syntax to keep compatibility for the majority of bindings. -
fish can now be built as a self-installing binary (#10367). That means it can be easily built on one system and copied to another, where it can extract supporting files.
To do this, run:cargo install --path . # in a clone of the fish repository # or `cargo build --release` and copy target/release/fish{,_indent,_key_reader} wherever you want
The first time it runs interactively, it will extract all the data files to
~/.local/share/fish/install/
. To uninstall, remove the fish binaries and that directory.This build system is experimental; the main build system, using
cmake
, remains the recommended approach for packaging and installation to a prefix. -
A new function
fish_should_add_to_history
can be overridden to decide whether a command should be added to the history (#10302). -
ctrl-c
during command input no longer prints^C
and a new prompt, but merely clears the command line. This restores the behavior from version 2.2. To revert to the old behavior, usebind ctrl-c __fish_cancel_commandline
(#10213). -
Bindings can now mix special input functions and shell commands, so
bind ctrl-g expand-abbr "commandline -i \n"
works as expected (#8186). -
Special input functions run from bindings via
commandline -f
are now applied immediately, instead of after the currently executing binding (#3031).
For example,commandline -i foo; commandline | grep foo
succeeds now. -
Undo history is no longer truncated after every command, but kept for the lifetime of the shell process.
-
The
ctrl-r
history search now uses glob syntax (#10131). -
The
ctrl-r
history search now operates only on the line or command substitution at cursor, making it easier to combine commands from history. -
Abbreviations can now be restricted to specific commands. For instance:
abbr --add --command git back 'reset --hard HEAD^'
will expand “back” to
reset --hard HEAD^
, but only when the command isgit
(#9411).
Deprecations and removed features
-
commandline --tokenize
(short option-o
) has been deprecated in favor ofcommandline --tokens-expanded
(short option-x
) which expands variables and other shell syntax, removing the need to use eval in completion scripts (#10212). -
Two new feature flags:
remove-percent-self
(seestatus features
) disables PID expansion of%self
, which has been supplanted by$fish_pid
(#10262).test-require-arg
disablestest
’s one-argument mode. That meanstest -n
without an additional argument will return false,test -z
will keep returning true. Any other option without an argument, anything that is not an option and no argument will be an error. This also goes for[
, test’s alternate name.
This is a frequent source of confusion and so we are breaking with POSIX explicitly in this regard.
In addition to the feature flag, there is a debug category “deprecated-test”. Running fish withfish -d deprecated-test
will show warnings whenever atest
invocation that would change is used. (#10365).
These can be enabled with:
set -Ua fish_features remove-percent-self test-require-arg
We intend to enable them by default in future, and after that eventually make them read-only.
-
Specifying key names as terminfo names (using the
bind -k
syntax) is deprecated and may be removed in a future version. -
When a terminal pastes text into fish using bracketed paste, fish used to switch to a special
paste
bind mode.
This bind mode has been removed. The behavior on paste is no longer configurable. -
When an interactive fish is stopped or terminated by a signal that cannot be caught (SIGSTOP or SIGKILL), it may leave the terminal in a state where keypresses with modifiers are sent as CSI u sequences, instead of traditional control characters or escape sequences that are recognized by Readline and compatible programs, such as bash and python.
If this happens, you can use thereset
command fromncurses
to restore the terminal state. -
fish_key_reader --verbose
no longer shows timing information. -
Terminal information is no longer read from hashed terminfo databases, or termcap databases (#10269). The vast majority of systems use a non-hashed terminfo database, which is still supported.
Scripting improvements
Assets 8
fish 3.7.1 (released March 19, 2024)
Compare
This release of fish fixes the following problems identified in fish 3.7.0:
- Deleting the last history entry via
history delete
works again (#10190). - Wildcards (
*
) will no longer sometimes generate paths that did not exist (#10205).
This release also contains some improvements:
- A crash when trying to run an ELF program with a missing interpreter has been fixed. This crashed in the process after fork, so did not affect the fish process that tried to start the program (#10199).
funced
will now alwayssource
the file after it has written it, even if the contents did not change. This prevents issues if the file was otherwise modified (#10318).- The warning for when a builtin returns a negative exit code was improved, now mentioning the original status (#10187).
- Added completions for
- Some improvements to documentation and completions.
Download links: To download the source code for fish, we suggest the file named "fish-3.7.1.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is 614c9f5643cd0799df391395fa6bbc3649427bb839722ce3b114d3bbc1a3b250
. A GPG signature from David Adam (key ID 0x7A67D962D88A709A
) is available as "fish-3.7.1.tar.xz.asc".
Assets 6
fish 3.7.0 (released January 1, 2024)
Compare
This release of fish includes a number of improvements over fish 3.6.4, detailed below. Although work continues on the porting of fish internals to the Rust programming language, that work is not included in this release. fish 3.7.0 and any future releases in the 3.7 series remain C++ programs.
Notable improvements and fixes
- Improvements to the history pager, including:
- The history pager will now also attempt subsequence matches (#9476), so you can find a command line like
git log 3.6.1..Integration_3.7.0
by searching forgitInt
. - Opening the history pager will now fill the search field with a search string if you’re already in a search (#10005). This makes it nicer to search something with
↑
and then later decide to switch to the full pager. - Closing the history pager with enter will now copy the search text to the commandline if there was no match, so you can continue editing the command you tried to find right away (#9934).
- The history pager will now also attempt subsequence matches (#9476), so you can find a command line like
- Performance improvements for command completions and globbing, where supported by the operating system, especially on slow filesystems such as NFS (#9891, #9931, #10032, #10052).
- fish can now be configured to wait a specified amount of time for a multi-key sequence to be completed, instead of waiting indefinitely. For example, this makes binding
kj
to switching modes in vi mode possible.
The timeout can be set via the newfish_sequence_key_delay_ms
variable (#7401), and may be set by default in future versions.
Deprecations and removed features
LS_COLORS
is no longer set automatically by thels
function (#10080). Users
that set.dircolors
should manually import it using other means. Typically this would beset -gx LS_COLORS (dircolors -c .dircolors | string split ' ')[3]
Scripting improvements
- Running
exit
with a negative number no longer crashes fish (#9659). fish --command
will now return a non-zero status if parsing failed (#9888).- The
jobs
builtin will now escape the commands it prints (#9808). string repeat
no longer overflows if the count is a multiple of the chunk size (#9900).- The
builtin
builtin will now properly error out with invalid arguments instead of doing nothing and returning true (#9942). command time
in a pipeline is allowed again, as iscommand and
andcommand or
(#9985).exec
will now also apply variable overrides, soFOO=bar exec
will now set$FOO
correctly (#9995).umask
will now handle empty symbolic modes correctly, likeumask u=,g=rwx,o=
(#10177).- Improved error messages for errors occurring in command substitutions (#10054).
Interactive improvements
read
no longer enables bracketed paste so it doesn’t stay enabled in combined commandlines likemysql -p(read --silent)
(#8285).- Vi mode now uses
fish_cursor_external
to set the cursor shape for external commands (#4656). - Opening the history search in vi mode switches to insert mode correctly (#10141).
- Vi mode cursor shaping is now enabled in iTerm2 (#9698).
- Working directory reporting is enabled for iTerm2 (#9955).
- Completing commands as root includes commands not owned by root, fixing a regression introduced in fish 3.2.0 (#9699).
- Selection uses
fish_color_selection
for the foreground and background colors, as intended, rather than just the background (#9717). - The completion pager will no longer sometimes skip the last entry when moving through a long list (#9833).
- The interactive
history delete
interface now allows specifying index ranges like “1..5” (#9736), andhistory delete --exact
now properly saves the history (#10066). - Command completion will now call the stock
manpath
on macOS, instead of a potential Homebrew version. This prevents awkward error messages (#9817). - A new bind function
history-pager-delete
, bound toShift
+Delete
by default, will delete the currently-selected history pager item from history (#9454). fish_key_reader
will now use printable characters as-is, so pressing “ö” no longer leads to it telling you to bind\\u00F6
(#9986).open
can be used to launch terminal programs again, as anxdg-open
bug has been fixed and a workaround has been removed (#10045).- The
repaint-mode
binding will now only move the cursor if there is repainting to be done. This fixesAlt
combination bindings in vi mode (#7910). - A new
clear-screen
bind function is used forCtrl
+l
by default. This clears the screen and repaints the existing prompt at first,
so it eliminates visible flicker unless the terminal is very slow (#10044). - The
alias
convenience function has better support for commands with unusual characters, like+
(#8720). - A longstanding issue where items in the pager would sometimes display without proper formatting has been fixed (#9617).
- The
Alt
+l
binding, which lists the directory of the token under the cursor, correctly expands tilde (~
) to the home directory (#9954). - Various fish utilities that use an external pager will now try a selection of common pagers if the
PAGER
environment variable is not set, or write the output to the screen without a pager if there is not one available (#10074). - Command-specific tab completions may now offer results whose first character is a period. For example, it is now possible to tab-complete
git add
for files with leading periods. The default file completions hide these files, unless the token itself has a leading period (#3707).
Improved prompts
- The default theme now only uses named colors, so it will track the terminal’s palette (#9913).
- The Dracula theme has now been synced with upstream (#9807); use
fish_config
to re-apply it to pick up the changes. fish_vcs_prompt
now also supports fossil (#9497).- Prompts which display the working directory using the
prompt_pwd
function correctly display directories beginning with dashes (#10169).
Completions
- Added completions for:
age
andage-keygen
(#9813)airmon-ng
(#10116)ar
(#9720)blender
(#9905)bws
(#10165)calendar
(#10138)checkinstall
(#10106)crc
(#10034)doctl
gimp
(#9904)gojq
(#9740)horcrux
(#9922)ibmcloud
(#10004)iwctl
(#6884)java_home
(#9998)krita
(#9903)oc
(#10034)qjs
(#9723)qjsc
(#9731)rename
(#10136)rpm-ostool
([#9669](https://github.com/fish-shell/fish...
Assets 6
fish 3.6.4 (released December 5, 2023)
Compare
This release contains a complete fix for the test suite failure in fish 3.6.2 and 3.6.3.
Download links: To download the source code for fish, we suggest the file named "fish-3.6.4.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is 0f3f610e580de092fbe882c8aa76623ecf91bb16fdf0543241e6e90d5d4bc393
. A GPG signature from David Adam (key ID 0x7A67D962D88A709A
) is available as "fish-3.6.4.tar.xz.asc".
Assets 6
fish 3.6.3 (released December 4, 2023)
Compare
This release contains a fix for a test suite failure in fish 3.6.2.
Download links: To download the source code for fish, we suggest the file named "fish-3.6.3.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is 55520128c8ef515908a3821423b430db9258527a6c6acb61c7cb95626b5a48d5
. A GPG signature from David Adam (key ID 0x7A67D962D88A709A
) is available as "fish-3.6.3.tar.xz.asc".
Assets 4
fish 3.6.2 (released December 4, 2023)
Compare
(Please note: this release builds and runs successfully, but the test suite does not pass. A new version will be released shortly.)
This release of fish contains a security fix for CVE-2023-49284, a minor security problem identified in fish 3.6.1 and previous versions (thought to affect all released versions of fish).
fish uses certain Unicode non-characters internally for marking wildcards and expansions. It incorrectly allowed these markers to be read on command substitution output, rather than transforming them into a safe internal representation.
For example, echo \UFDD2HOME
has the same output as echo $HOME
.
While this may cause unexpected behavior with direct input, this may become a minor security problem if the output is being fed from an external program into a command substitution where this output may not be expected.
Download links: To download the source code for fish, we suggest the file named "fish-3.6.2.tar.xz". The file downloaded from "Source code (tar.gz)" will not build correctly. The SHA-256 sum of this file is a21a6c986f1f80273895ba7e905fa80ad7e1a262ddb3d979efa443367eaf4863
. A GPG signature from David Adam (key ID 0x7A67D962D88A709A
) is available as "fish-3.6.2.tar.xz.asc".
Assets 4
fish 3.6.1 (released March 25, 2023)
Compare
This release of fish contains a number of fixes for problems identified in fish 3.6.0, as well as some enhancements.
Notable improvements and fixes
abbr --erase
now also erases the universal variables used by the old abbr function. That means
abbr --erase (abbr --list)
can now be used to clean out all old abbreviations (#9468).
abbr --add --universal
now warns about--universal
being non-functional, to make it easier to detect old-styleabbr
calls (#9475).
Deprecations and removed features
- The Web-based configuration for abbreviations has been removed, as it was not functional with the changes abbreviations introduced in 3.6.0 (#9460).
Scripting improvements
abbr --list
no longer escapes the abbr name, which is necessary to be able to pass it toabbr --erase
(#9470).read
will now print an error if told to set a read-only variable, instead of silently doing nothing (#9346).set_color -v
no longer crashes fish (#9640).
Interactive improvements
- Using
fish_vi_key_bindings
in combination with fish’s--no-config
mode works without locking up the shell (#9443). - The history pager now uses more screen space, usually half the screen (#9458)
- Variables that were set while the locale was C (the default ASCII-only locale) will now properly be encoded if the locale is switched (#2613, #9473).
- Escape during history search restores the original command line again (fixing a regression in 3.6.0).
- Using
--help
on builtins now respects the$MANPAGER
variable, in preference to$PAGER
(#9488). Control-G
closes the history pager, like other shells (#9484).- The documentation for the
:
,[
and.
builtin commands can now be looked up withman
(#9552). - fish no longer crashes when searching history for non-ASCII codepoints case-insensitively (#9628).
- The
Alt-S
binding will now also useplease
if available (#9635). - Themes that don’t specify every color option can be installed correctly in the Web-based configuration (#9590).
- Compatibility with Midnight Commander’s prompt integration has been improved (#9540).
- A spurious error, noted when using fish in Google Drive directories under WSL 2, has been silenced (#9550).
- Using
read
infish_greeting
or similar functions will not trigger an infinite loop (#9564). - Compatibility when upgrading from old versions of fish (before 3.4.0) has been improved (#9569).
Improved prompts
- The git prompt will compute the stash count to be used independently of the informative status (#9572).
Completions
- Added completions for:
- Improvements to many completions, including the speed of completing directories in WSL 2 (#9574).
- Completions using
__fish_complete_suffix
are now offered in the correct order, fixing a regression in 3.6.0 (#8924). git
completions forgit-foo
-style commands was restored, fixing a regression in 3.6.0 (#9457).- File completion now offers
../
and./
again, fixing a regression in 3.6.0 (#9477). - The behaviour of completions using
__fish_complete_path
matches standard path completions (#9285).
Other improvements
- Improvements and corrections to the documentation.
For distributors
- fish 3.6.1 builds correctly on Cygwin (#9502).
Download links: To download the source code for fish, we suggest the file named "fish-3.6.1.tar.xz". The file downloaded from "Source code (tar.gz)" may not build correctly. The SHA-256 sum of this file is 55402bb47ca6739d8aba25e41780905b5ce1bce0a5e0dd17dca908b5bc0b49b2
. A GPG signature from David Adam (key ID 0x7A67D962D88A709A
) is available as "fish-3.6.1.tar.xz.asc".