Pesquisa de site

Fish Shell 3.7.0: Mantendo o C++ Enquanto Introduz Melhorias


O Fish Shell 3.7.0 melhora o paginador de histórico, o desempenho e a criação de scripts. As futuras versões 4.x irão migrar os componentes internos do Fish para Rust.

No ecossistema Linux, uma característica que se destaca por sua versatilidade e potência é a variedade de shells entre os quais os usuários podem escolher.

Junto com o clássico Bash e outros como Zsh e Tcsh, o Fish tem sido amplamente reconhecido e adotado como uma escolha preferida entre muitos usuários de Linux por sua abordagem amigável e recursos avançados há muito tempo.

O recém-anunciado lançamento do Fish 3.7.0, com mais de 1289 commits, reforça essa posição, prometendo melhorias e correções. Vamos dar uma olhada nelas.

Fish Shell 3.7.0

Principais Destaques

O Fish 3.7.0 melhora o gerenciamento do histórico da linha de comando. Agora, os usuários podem encontrar facilmente linhas de comando complexas com correspondências de subsequência. O visualizador de histórico também introduz um recurso de busca mais inteligente e uma maneira mais intuitiva de lidar com consultas de pesquisa que não tenham correspondências.

Em relação ao desempenho, a conclusão de comandos e o uso de globbing apresentam melhorias significativas de velocidade, especialmente em sistemas de arquivos mais lentos como NFS, o que é uma grande vantagem para usuários que lidam com cargas de trabalho intensas na linha de comando.

Outro recurso de destaque nesta atualização é a capacidade de definir um tempo limite para sequências de múltiplas teclas, melhorando a usabilidade de recursos como a troca de modo no modo vi. Ao mesmo tempo, o LS_COLORS não será mais definido automaticamente, incentivando os usuários a adotarem configurações mais personalizadas.

Melhorias em Scripts e Linha de Comando

  • Estabilidade e Flexibilidade: O Fish 3.7.0 corrige diversos bugs e melhora a experiência de scripting. Desde a correção de cenários de travamento até a melhoria do comando incorporado ‘jobs‘, a atualização torna o scripting mais confiável e versátil.
  • Experiência Interativa: A atualização traz mudanças notáveis na experiência interativa, como busca de histórico aprimorada no modo vi, melhor relatório do diretório de trabalho no iTerm2 e configurações de cor de seleção aprimoradas.
  • Conclusão de Comandos e Melhorias no Prompt: O Fish 3.7.0 também introduz uma nova função bind para gerenciamento de histórico, mensagens de erro aprimoradas e suporte ampliado para comandos externos.

Ajustes Estéticos e de Usabilidade

O tema padrão agora usa cores nomeadas, alinhando-se com as paletas do terminal, e o tema Dracula sincroniza com as alterações da versão original. Além disso, os prompts exibem os diretórios de trabalho com mais precisão.

Finalmente, o Fish 3.7.0 adiciona uma infinidade de complementos para vários comandos, tornando a vida dos usuários mais fácil. O lançamento também traz melhorias nos geradores de complementação de páginas de manual, e outros ajustes de complementação foram feitos.

Rust: O Caminho à Frente

O shell Fish é codificado principalmente em C++. No entanto, isso vai mudar em breve.

David Adam, um dos principais desenvolvedores da Fish, confirmou que quase todo o código em C++ foi transferido com sucesso para Rust. Essa transição adicionou 87.029 linhas de código em Rust enquanto removia todas as 76.776 linhas de código em C++, marcando uma reescrita de 100% segundo a última atualização deles.

No entanto, ele esclarece que esse marco não significa que a nova versão do shell Fish esteja pronta para os usuários finais. O estado atual do projeto é promissor, com algumas melhorias de desempenho, mas também enfrenta desafios em certas áreas.

Notavelmente, a reescrita ainda não atingiu seus objetivos técnicos, especialmente no que diz respeito à segurança de threads, que foi uma das principais motivações para a transição para Rust.

Além disso, o suporte a plataformas continua sendo um obstáculo significativo. O suporte de curto prazo para plataformas como Cygwin e MSys2 parece improvável, e o empacotamento para distribuições Linux mais antigas apresenta desafios.

Considerando isso, a terceira série existente de Fish continuará usando C++ para sua codificação. Mas, quando lançar a quarta série, espera-se que faça uma mudança significativa ao mudar sua linguagem de programação principal para Rust.