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%selffor the PID of the current shell. Additionally, job management commands (disown,wait,bg,fgandkill) 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 -execeasier (#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). forloop control variables are no longer local to theforblock (#1935).- Variables set in
ifandwhileconditions are available outside the block (#4820). - Local exported (
set -lx) vars are now visible to functions (#1091). - The new
mathbuiltin (see below) does not support logical expressions;testshould 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. readnow uses-sas short for--silent(à labash);--shell's abbreviation (formerly-s) is now-Sinstead (#4490).cdno longer resolves symlinks. fish now maintains a virtual path, matching other shells (#3350).sourcenow requires an explicit-as the filename to read from the terminal (#2633).- Arguments to
endare now errors, instead of being silently ignored. - The names
argparse,read,set,status,testand[are now reserved and not allowed as function names. This prevents users unintentionally breaking stuff (#3000). - The
fish_user_abbreviationsvariable is no longer used; abbreviations will be migrated to the new storage format automatically. - The
FISH_READ_BYTE_LIMITvariable 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
historybuiltin's--with-timeoption has been removed; this has been deprecated in favor of--show-timesince 2.7.0 (#4403). - The internal variables
__fish_datadirand__fish_sysconfdirare now known as__fish_data_dirand__fish_sysconf_dirrespectively.
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_modecan be queried to detect private mode and adjust the behavior of scripts accordingly to respect the user's wish for privacy. - A new
waitcommand for waiting on backgrounded processes (#4498). aliashas a new--saveoption to save the generated function immediately (#4878).funcedhas a new--saveoption to automatically save the edited function after successfully editing (#4668).history searchsupports globs for wildcard searching (#3136) and has a new--reverseoption to show entries from oldest to newest (#4375).sethas new--appendand--prependoptions (#1326).sethas a new--showoption to show lots of information about variables (#4265).string matchwith an empty pattern and--entirein glob mode now matches everything instead of nothing (#4971).string splitsupports a new--no-emptyoption to exclude empty strings from the result (#4779).stringhas new subcommandssplit0andjoin0for working with NUL-delimited output.stringno longer stops processing text after NUL characters (#4605)string escapehas a new--style regexoption for escaping strings to be matched literally instringregex operations.testnow 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
