Fish Shell 3.7.0: Restare in C++ mentre si introducono miglioramenti
Fish Shell 3.7.0 migliora il visualizzatore della cronologia, le prestazioni e lo scripting. Le future versioni 4.x migreranno l'infrastruttura di Fish su Rust.
Nell'ecosistema Linux, una caratteristica che si distingue per la sua versatilità e potenza è la varietà di shell tra cui gli utenti possono scegliere.
Insieme al classico Bash e ad altri come Zsh e Tcsh, Fish è stato ampiamente riconosciuto e adottato come scelta preferita tra molti utenti Linux per il suo approccio intuitivo e le sue funzionalità avanzate da molto tempo.
Il recentemente annunciato rilascio Fish 3.7.0, con oltre 1289 commit, rafforza questa posizione, promettendo miglioramenti e correzioni. Diamo un'occhiata a essi.
Fish Shell 3.7.0
Punti salienti principali
Fish 3.7.0 migliora la gestione della cronologia della riga di comando. Ora, gli utenti possono trovare facilmente comandi complessi con corrispondenze di sottosequenze. Il visualizzatore della cronologia introduce anche una funzione di ricerca più intelligente e un modo più intuitivo di gestire le query di ricerca non corrispondenti.
Per quanto riguarda le prestazioni, il completamento dei comandi e il globbing mostrano miglioramenti significativi della velocità, soprattutto su file system più lenti come NFS, il che rappresenta un grande vantaggio per gli utenti che devono gestire carichi di lavoro pesanti da riga di comando.
Un'altra caratteristica saliente di questo aggiornamento è la possibilità di impostare un timeout per le sequenze multi-tasto, migliorando la fruibilità di funzionalità come il cambio di modalità in modalità vi. Allo stesso tempo, LS_COLORS non verrà più impostato automaticamente, spingendo gli utenti ad adottare configurazioni più personalizzate.
Miglioramenti alla creazione di script e alla riga di comando
- Stabilità e Flessibilità: Fish 3.7.0 risolve diversi bug e migliora l'esperienza di scripting. Dalla correzione di scenari di crash al potenziamento del comando integrato ‘jobs‘, l'aggiornamento rende lo scripting più affidabile e versatile.
- Esperienza Interattiva: L'aggiornamento porta cambiamenti significativi all'esperienza interattiva, come una ricerca della cronologia migliorata in modalità vi, una migliore segnalazione della directory di lavoro in iTerm2 e configurazioni dei colori di selezione potenziate.
- Completamento dei comandi e miglioramenti dei prompt: Fish 3.7.0 introduce anche una nuova funzione bind per la gestione della cronologia, messaggi di errore migliorati e supporto esteso per i comandi esterni.
Modifiche estetiche e di usabilità
Il tema predefinito ora utilizza colori nominati, allineandosi con le palette del terminale, e il tema Dracula si sincronizza con le modifiche upstream. Inoltre, i prompt mostrano le directory di lavoro in modo più accurato.
Infine, Fish 3.7.0 aggiunge una miriade di completamenti per vari comandi, rendendo la vita più facile agli utenti. La release vede anche miglioramenti ai generatori di completamento delle pagine del manuale, e sono state apportate altre modifiche ai completamenti.
Ruggine: La strada avanti
La shell Fish è principalmente scritta in C++. Tuttavia, questo cambierà presto.
David Adam, uno dei principali sviluppatori di Fish, ha confermato che quasi tutto il codice C++ è stato trasferito con successo in Rust. Questa transizione ha aggiunto 87.029 righe di codice Rust eliminando tutte le 76.776 righe di codice C++, segnando una riscrittura completa al 100% secondo il loro ultimo aggiornamento.
Tuttavia, chiarisce che questo traguardo non significa che la nuova versione della shell Fish sia pronta per gli utenti finali. Lo stato attuale del progetto è promettente, con alcuni miglioramenti delle prestazioni, ma affronta anche delle sfide in alcuni settori.
È importante sottolineare che la riscrittura non ha ancora raggiunto i suoi obiettivi tecnici, in particolare per quanto riguarda la sicurezza dei thread, che era una delle principali motivazioni per il passaggio a Rust.
Inoltre, il supporto alle piattaforme rimane un ostacolo significativo. Il supporto a breve termine per piattaforme come Cygwin e MSys2 sembra improbabile, e la creazione di pacchetti per distribuzioni Linux più vecchie presenta delle sfide.
Considerando questo, la terza serie esistente di Fish continuerà a utilizzare il C++ per la sua programmazione. Tuttavia, quando lancerà la quarta serie, si prevede un cambiamento significativo spostando il suo linguaggio di programmazione principale a Rust.

