Recherche de site Web

Fish Shell 3.7.0 : Rester en C++ tout en introduisant des améliorations


Fish Shell 3.7.0 améliore le visualiseur d'historique, les performances et le scripting. Les futures versions 4.x feront migrer les composants internes de Fish vers Rust.

Dans l'écosystème Linux, une caractéristique qui se distingue par sa polyvalence et sa puissance est la variété de shells parmi lesquels les utilisateurs peuvent choisir.

Avec le classique Bash et d'autres comme Zsh et Tcsh, Fish a longtemps été largement reconnu et adopté comme un choix privilégié parmi de nombreux utilisateurs de Linux en raison de son approche conviviale et de ses fonctionnalités avancées.

La version Fish 3.7.0 récemment annoncée, avec plus de 1289 commits, renforce cette position, promettant des améliorations et des correctifs. Voyons-les de plus près.

Fish Shell 3.7.0

Points forts

Fish 3.7.0 améliore la gestion de l'historique de la ligne de commande. Désormais, les utilisateurs peuvent trouver facilement des lignes de commande complexes grâce à des correspondances de sous-séquence. Le pagineur d'historique introduit également une fonction de recherche plus intelligente et une manière plus intuitive de gérer les requêtes de recherche sans correspondance.

En ce qui concerne les performances, l'achèvement des commandes et le globbing voient des améliorations de vitesse significatives, notamment sur les systèmes de fichiers plus lents comme NFS, ce qui est un grand avantage pour les utilisateurs ayant des charges de travail importantes en ligne de commande.

Une autre fonctionnalité remarquable de cette mise à jour est la possibilité de définir un délai d'expiration pour les séquences à plusieurs touches, ce qui améliore l'utilisabilité des fonctions comme le changement de mode en mode vi. Parallèlement, LS_COLORS ne sera plus défini automatiquement, incitant les utilisateurs à adopter des configurations plus personnalisées.

Améliorations des scripts et de la ligne de commande

  • Stabilité et flexibilité : Fish 3.7.0 corrige plusieurs bugs et améliore l'expérience de script. Qu'il s'agisse de résoudre des scénarios de plantage ou d'améliorer la commande intégrée « jobs », la mise à jour rend le scripting plus fiable et polyvalent.
  • Expérience interactive : La mise à jour apporte des changements notables à l'expérience interactive, tels qu'une recherche dans l'historique améliorée en mode vi, un meilleur rapport du répertoire de travail dans iTerm2 et des configurations de couleur de sélection renforcées.
  • Complétion des commandes et améliorations des invites : Fish 3.7.0 introduit également une nouvelle fonction bind pour la gestion de l'historique, des messages d'erreur améliorés et un support étendu pour les commandes externes.

Ajustements esthétiques et de convivialité

Le thème par défaut utilise désormais des couleurs nommées, en accord avec les palettes de terminal, et le thème Dracula se synchronise avec les changements en amont. De plus, les invites affichent les répertoires de travail de manière plus précise.

Enfin, Fish 3.7.0 ajoute une pléthore de complétions pour diverses commandes, facilitant la vie des utilisateurs. Cette version voit également des améliorations des générateurs de complétion pour les pages de manuel, et d'autres ajustements de complétion ont été réalisés.

Rust : La route à venir

Le shell Fish est principalement codé en C++. Cependant, cela va bientôt changer.

David Adam, l’un des principaux développeurs de Fish, a confirmé que presque tout le code C++ a été transféré avec succès vers Rust. Cette transition a ajouté 87 029 lignes de code Rust tout en supprimant les 76 776 lignes de code C++, marquant une réécriture complète à 100 % selon leur dernière mise à jour.

Cependant, il précise que cette étape ne signifie pas que la nouvelle version du shell Fish est prête pour les utilisateurs finaux. L'état actuel du projet est prometteur, avec certaines améliorations de performance, mais il rencontre également des défis dans certains domaines.

Notamment, la réécriture n'a pas encore atteint ses objectifs techniques, en particulier en ce qui concerne la sécurité des threads, qui était une motivation principale pour la transition vers Rust.

De plus, le support des plateformes reste un obstacle important. Un soutien à court terme pour des plateformes comme Cygwin et MSys2 semble improbable, et le packaging pour les anciennes distributions Linux pose des défis.

En tenant compte de cela, la troisième série existante de Fish continuera d'utiliser le C++ pour sa programmation. Cependant, lors du lancement de sa quatrième série, il est prévu qu'elle apporte un changement significatif en passant à Rust comme langage de programmation principal.