Fish Shell 3.7.0: Rămânând în C++ în timp ce aduce îmbunătățiri


Fish Shell 3.7.0 îmbunătățește pagerul de istoric, performanța și scriptingul. Viitoarele versiuni 4.x vor trece internals-urile Fish la Rust.

În ecosistemul Linux, o caracteristică care se remarcă prin versatilitate și putere este varietatea de shell-uri din care utilizatorii pot alege.

Împreună cu clasicele Bash și altele precum Zsh și Tcsh, Fish a fost recunoscut și adoptat pe scară largă ca o alegere preferată de mulți utilizatori Linux datorită abordării sale prietenoase și funcțiilor sale avansate de mult timp.

Recent anunțata versiune Fish 3.7.0, cu peste 1289 de commit-uri, întărește această poziție, promițând îmbunătățiri și remedieri. Hai să le analizăm.

Fish Shell 3.7.0

Repere principale

Fish 3.7.0 îmbunătățește gestionarea istoricului liniei de comandă. Acum, utilizatorii pot găsi cu ușurință linii de comandă complexe prin potriviri de subsecvență. Pagina de istoric introduce, de asemenea, o funcție de căutare mai inteligentă și un mod mai intuitiv de a gestiona interogările de căutare care nu au rezultate.

În ceea ce privește performanța, finalizarea comenzilor și globbing-ul înregistrează îmbunătățiri semnificative de viteză, în special pe sistemele de fișiere mai lente, cum ar fi NFS, ceea ce reprezintă un mare avantaj pentru utilizatorii care lucrează cu sarcini complexe de linie de comandă.

O altă caracteristică remarcabilă a acestei actualizări este posibilitatea de a seta un timp de expirare pentru secvențele cu mai multe taste, îmbunătățind utilizabilitatea funcțiilor precum schimbarea modului în modul vi. În același timp, LS_COLORS nu va mai fi setat automat, încurajând utilizatorii să adopte configurații mai personalizate.

Îmbunătățiri în scripting și linia de comandă

  • Stabilitate și flexibilitate: Fish 3.7.0 remediază mai multe erori și îmbunătățește experiența de scriptare. De la corectarea scenariilor de blocare până la îmbunătățirea comenzii încorporate ‘jobs‘, actualizarea face scriptarea mai fiabilă și mai versatilă.
  • Experiență Interactivă: Actualizarea aduce schimbări notabile în experiența interactivă, cum ar fi căutarea istoriei îmbunătățită în modul vi, raportarea mai bună a directorului de lucru în iTerm2 și configurări îmbunătățite ale culorii selecției.
  • Completarea comenzilor și îmbunătățiri ale promptului: Fish 3.7.0 introduce, de asemenea, o nouă funcție bind pentru gestionarea istoricului, mesaje de eroare îmbunătățite și suport extins pentru comenzile externe.

Ajustări estetice și de utilizare

Tema implicită folosește acum culori denumite, aliniindu-se cu paletele terminalului, iar tema Dracula se sincronizează cu modificările din versiunea principală. De asemenea, prompturile afișează mai precis directoarele de lucru.

În sfârșit, Fish 3.7.0 adaugă o multitudine de completări pentru diverse comenzi, făcând viața mai ușoară utilizatorilor. Această versiune aduce, de asemenea, îmbunătățiri pentru generatoarele de completare a paginilor de manual, și au fost făcute și alte ajustări ale completărilor.

Rugina: Drumul Înainte

Shell-ul Fish este scris în principal în C++. Totuși, acest lucru se va schimba în curând.

David Adam, unul dintre dezvoltatorii principali ai Fish, a confirmat că aproape tot codul C++ a fost transformat cu succes în Rust. Această tranziție a adăugat 87.029 de linii de cod Rust, eliminând în același timp toate cele 76.776 de linii de cod C++, marcând o rescriere de 100% conform ultimei lor actualizări.

Totuși, el precizează că acest prag nu înseamnă că noua versiune a shell-ului Fish este gata pentru utilizatorii finali. Starea actuală a proiectului este promițătoare, cu unele îmbunătățiri de performanță, dar se confruntă și cu provocări în anumite domenii.

Notabil, rescrierea nu și-a atins încă obiectivele tehnice, în special în ceea ce privește siguranța firelor de execuție, care a fost o motivație principală pentru trecerea la Rust.

În plus, suportul pentru platforme rămâne un obstacol semnificativ. Suportul pe termen scurt pentru platforme precum Cygwin și MSys2 pare puțin probabil, iar împachetarea pentru distribuțiile mai vechi de Linux prezintă provocări.

Având în vedere acest lucru, a treia serie existentă de Fish va continua să folosească C++ pentru programarea sa. Dar, când va lansa a patra serie, se așteaptă să facă o schimbare semnificativă prin trecerea la limbajul de programare principal Rust.