Pular para o conteúdo
fish shell 4.7.0 lançado com melhorias na interface, correções de regressão e suporte a novos padrões

fish shell 4.7.0 lançado com melhorias na interface, correções de regressão e suporte a novos padrões

A nova versão do fish shell traz 198 commits, correções críticas (como histórico corrompido por SIGTERM), aprimoramentos em modos interativos e suporte expandido a diretórios XDG — tudo com foco em estabilidade e UX.

O fish shell, um interpretador de comandos moderno e voltado para usabilidade, lançou oficialmente a versão 4.7.0 em 6 de maio de 2024. A atualização incorpora 198 novos commits desde a versão 4.6.0, com contribuições de 21 autores — incluindo 12 colaboradores inéditos no projeto. O lançamento reforça o compromisso do fish com robustez, acessibilidade e conformidade com padrões do ecossistema Linux.

Principais destaques da versão 4.7.0

A nova versão prioriza correções de comportamentos indesejados, refinamentos na experiência interativa e maior compatibilidade com ferramentas externas — especialmente em ambientes de desenvolvimento e distribuição.

✅ Correções de regressão críticas

Várias falhas introduzidas em versões anteriores foram resolvidas:

  • No modo vi, o atalho dl (delete character) agora funciona corretamente — corrigindo regressão identificada na versão 4.6 (#12461).
  • O uso de backspace logo após uma quebra de linha não causa mais comportamento inconsistente (#12583).
  • Opções longas (ex.: --help) deixaram de ser sugeridas incorretamente após digitação de opções curtas (ex.: -h) — problema remanescente desde a versão 4.3.3.
  • Em pipelines condicionais como nosuchcommand || echo hello, o lado direito (echo hello) é executado apenas uma vez, conforme esperado — correção de um bug presente desde a versão 3.2 (#12654).

🖥️ Aprimoramentos na interface interativa

O fish 4.7.0 traz ajustes sutis, mas impactantes, para usuários diários:

  • A função prompt_pwd agora remove caracteres de controle automaticamente, evitando distorções visuais em prompts personalizados.
  • Eventos de repintura (ex.: alterações em variáveis de cor ou chamadas via commandline -f repaint) não reiniciam mais o pager de conclusões nem descartam estados transitórios da UI (#12683).
  • A variável fish_color_valid_path passa a respeitar cores de fundo e sublinhado — essencial para temas acessíveis e terminais com suporte a atributos avançados (#12622).
  • O editor integrado funced preserva o trabalho mesmo após múltiplos erros de análise sintática, desde que não haja novas edições no arquivo.
  • Completions de diretórios são ordenadas de forma previsível, eliminando surpresas em navegação por cd (#12695).
  • O atalho Alt+o agora abre arquivos somente leitura sem exigir permissões adicionais (#12671).
  • O histórico em memória usado em modo privado (set fish_history) não é mais compartilhado com o builtin read, garantindo isolamento de sessões sensíveis (#12662).

🛠️ Melhorias de infraestrutura e compatibilidade

  • Histórico de comandos não é mais corrompido com bytes nulos (\0) ao receber sinais SIGTERM ou SIGHUP — correção de um problema antigo reportado em #10300.
  • A ferramenta fish_update_completions passa a interpretar corretamente escapes de controle \X'...' usados pelo groff, permitindo geração precisa de completions para páginas de manual geradas por help2man 1.50+ (como as do coreutils 9.10).
  • A remoção de entradas de histórico pela interface web-based (fish_config) tornou-se mais intuitiva e confiável.
  • Quando XDG_DATA_DIRS está vazio, o fish assume o valor padrão, passando a reconhecer automaticamente diretórios como $PREFIX/share/fish/vendor_completions.d (#11349).
  • Descritores de arquivos internos foram realocados para números ≥10, reduzindo conflitos com scripts que usam FDs baixos.
  • Mensagens de erro foram padronizadas, especialmente para subcomandos internos — facilitando depuração e automação (#12556).

🧩 Atualizações para mantenedores e distribuidores

  • Ao instalar com CMake, o fish agora respeita corretamente a flag -DCMAKE_INSTALL_SYSCONFDIR, mesmo quando o diretório global padrão ($PREFIX/etc/fish) existe (#10748).
  • O script legado build_tools/update_translations.fish foi substituído por tarefas nativas do cargo xtask gettext {check,new,update} (#12676).
  • Nova tarefa cargo xtask shellcheck permite linting automatizado de scripts shell dentro do ecossistema de build.

📥 Como obter a versão 4.7.0

Para instalação a partir do código-fonte, recomenda-se baixar o pacote comprimido em formato .tar.xz:
fish-4.7.0.tar.xz
Uma assinatura GPG está disponível em fish-4.7.0.tar.xz.asc, verificável com a chave 7A6ED2326511A2ED.

Binários standalone para Linux estão disponíveis para múltiplas arquiteturas em arquivos nomeados como fish-4.7.0-linux-*.tar.xz.
⚠️ Atenção: o arquivo Source code (tar.gz) disponibilizado na página de lançamento não compila corretamente — use exclusivamente o .tar.xz.

👋 Novos e retornados colaboradores

O projeto dá boas-vindas a 12 novos colaboradores:
Armandas Jarušauskas, Daniel D. Beck, Dennis Yildirim, Jaakko Koivisto, Kayce Basques, Nathaniel, Saúl Nogueras, Vishrut Sachan, Yakov Till, cunlem, joveian e r-vdp.

Também celebra o retorno de Bacal Mesfin, Branch Vincent, Daniel Rainer, David Adam, Johannes Altmanninger, Nahor, Peter Ammon, Remo Senekowitsch e xtqqczze.

O fish shell continua sendo uma referência em shells modernos para Linux e macOS — combinando inteligência de completions, sintaxe legível e filosofia user-first. A versão 4.7.0 consolida seu papel como alternativa madura ao bash e zsh, especialmente em ambientes onde produtividade e acessibilidade são prioritárias.

Via github.com. Você pode conferir o post original em inglês:

fish 4.7.0

Por · Última atualização: