From Fedora Project Wiki
< Changes
Fish 3.0
Summary
Update Fish to 3.0.
Owner
- Name: Igor Gnatenko
- Email: ignatenkobrain@fedoraproject.org
- Release notes owner:
Current status
- Targeted release: Fedora 30
- Last updated: 2019-02-12
- Tracker bug: #1676694
- Release notes tracker: #296
Detailed Description
Not only update it in F30 but also provide new version as opt-in for F28 and F29.
Benefit to Fedora
The new version of Fish has quite some number of bugfixes, features and performance improvements.
Scope
- Proposal owners: Put fish 3.0 into a module (that means it will be available for F28 and F29) and mark it as default in Rawhide.
- Other developers: N/A (not a System Wide Change)
- Release engineering: #8077 (a check of an impact with Release Engineering is needed)
- List of deliverables: N/A (not a System Wide Change)
- Policies and guidelines: N/A (not a System Wide Change)
- Trademark approval: N/A (not needed for this Change)
Upgrade/compatibility impact
- Process and job expansion has largely been removed.
%
will no longer perform these expansions, except for%self
for the PID of the current shell. Additionally, job management commands (disown
,wait
,bg
,fg
andkill
) will expand job specifiers starting with%
(#4230, #1202). set x[1] x[2] a b
, to set multiple elements of an array at once, is no longer valid syntax (#4236).- A literal
{}
now expands to itself, rather than nothing. This makes working withfind -exec
easier (#1109, #4632). - Literally accessing a zero-index is now illegal syntax and is caught by the parser (#4862). (fish indices start at 1)
- Successive commas in brace expansions are handled in less surprising manner. For example,
{,,,}
expands to four empty strings rather than an empty string, a comma and an empty string again (#3002, #4632). for
loop control variables are no longer local to thefor
block (#1935).- Variables set in
if
andwhile
conditions are available outside the block (#4820). - Local exported (
set -lx
) vars are now visible to functions (#1091). - The new
math
builtin (see below) does not support logical expressions;test
should be used instead (#4777). - Range expansion will now behave sensibly when given a single positive and negative index (
$foo[5..-1]
or$foo[-1..5]
), clamping to the last valid index without changing direction if the list has fewer elements than expected. read
now uses-s
as short for--silent
(à labash
);--shell
's abbreviation (formerly-s
) is now-S
instead (#4490).cd
no longer resolves symlinks. fish now maintains a virtual path, matching other shells (#3350).source
now requires an explicit-
as the filename to read from the terminal (#2633).- Arguments to
end
are now errors, instead of being silently ignored. - The names
argparse
,read
,set
,status
,test
and[
are now reserved and not allowed as function names. This prevents users unintentionally breaking stuff (#3000). - The
fish_user_abbreviations
variable is no longer used; abbreviations will be migrated to the new storage format automatically. - The
FISH_READ_BYTE_LIMIT
variable is now calledfish_byte_limit
(#4414). - Environment variables are no longer split into arrays based on the record separator character on startup. Instead, variables are not split, unless their name ends in PATH, in which case they are split on colons (#436).
- The
history
builtin's--with-time
option has been removed; this has been deprecated in favor of--show-time
since 2.7.0 (#4403). - The internal variables
__fish_datadir
and__fish_sysconfdir
are now known as__fish_data_dir
and__fish_sysconf_dir
respectively.
How To Test
0. Make sure to have modular repositories enabled 1. Run dnf module install fish:3 2. Try out normal workload in fish
User Experience
- fish now supports
&&
(likeand
),||
(likeor
), and!
(likenot
), for better migration from POSIX-compliant shells (#4620). - fish may be started in private mode via
fish --private
. Private mode fish sessions do not have access to the history file and any commands evaluated in private mode are not persisted for future sessions. A session variable$fish_private_mode
can be queried to detect private mode and adjust the behavior of scripts accordingly to respect the user's wish for privacy. - A new
wait
command for waiting on backgrounded processes (#4498). alias
has a new--save
option to save the generated function immediately (#4878).funced
has a new--save
option to automatically save the edited function after successfully editing (#4668).history search
supports globs for wildcard searching (#3136) and has a new--reverse
option to show entries from oldest to newest (#4375).set
has new--append
and--prepend
options (#1326).set
has a new--show
option to show lots of information about variables (#4265).string match
with an empty pattern and--entire
in glob mode now matches everything instead of nothing (#4971).string split
supports a new--no-empty
option to exclude empty strings from the result (#4779).string
has new subcommandssplit0
andjoin0
for working with NUL-delimited output.string
no longer stops processing text after NUL characters (#4605)string escape
has a new--style regex
option for escaping strings to be matched literally instring
regex operations.test
now supports floating point values in numeric comparisons.- Pressing Ctrl-C while running a script now reliably terminates fish (#5253).
See https://fishshell.com/release_notes.html for more.
Dependencies
N/A (not a System Wide Change)
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
- Blocks product? product
Documentation
https://fishshell.com/release_notes.html