2 points par GN⁺ 2025-02-28 | 1 commentaires | Partager sur WhatsApp
  • Fish est un shell en ligne de commande convivial pour macOS, Linux et d'autres systèmes d'exploitation de type Unix
  • À partir de la version 4.0.0, le code cœur de Fish a été porté de C++ vers Rust
    • Cela entraîne d'importants changements au niveau des dépendances et du mode de build, mais n'a pas d'impact direct pour les utilisateurs
  • Changements incompatibles :
    • introduction d'une nouvelle notation des touches pour la commande bind
    • ctrl-c appelle désormais clear-commandline, et l'ancien comportement reste disponible via cancel-commandline
    • les résultats de la fonction random selon la valeur de seed peuvent différer de ceux des versions précédentes
    • les variables en position de commande ne peuvent désormais plus être développées en mots-clés de sous-commande
    • functions --handlers liste désormais les handlers dans l'ordre de leur définition
    • la fonctionnalité qmark-noglob est désormais activée par défaut

Améliorations et correctifs

  • Protocole clavier : prise en charge de modifyOtherKeys de XTerm et du protocole clavier de kitty
  • Binaire auto-installable : fish peut être compilé en binaire auto-installable
  • Historique des commandes : la fonction fish_should_add_to_history permet de décider quelles commandes ajouter à l'historique
  • Fonction d'annulation : l'historique est conservé même après l'exécution d'une commande
  • Restriction des abréviations : l'expansion des abréviations peut être limitée à certaines commandes

Fonctionnalités dépréciées et supprimées

  • commandline --tokenize est remplacé par commandline --tokens-expanded
  • la désignation des noms de touches via la syntaxe bind -k est dépréciée
  • le mode collage a été supprimé

Améliorations du scripting

  • Nouvelle commande d'historique : history append permet d'ajouter des commandes à l'historique sans les exécuter
  • Nouvelle redirection : `

1 commentaires

 
GN⁺ 2025-02-28
Commentaires Hacker News
  • Le point le plus intéressant de Fish 4.0 est qu’il est désormais écrit en Rust
    • J’aimerais vérifier par des tests s’il y a une différence perceptible
  • Il est dit qu’il n’y aura pas d’impact direct pour les utilisateurs
    • Le cœur de Fish a été réécrit, mais presque tout fonctionne de la même manière
  • Je me demande quel est le plus gros inconvénient pour ceux qui sont passés au shell Fish
    • Une fois qu’on s’y est habitué sur son système, il faut utiliser Bash ou Zsh sur les serveurs de l’entreprise
    • Si l’on envisage de passer de Bash à Fish, cela vaut aussi la peine d’envisager Nushell
  • En tant qu’utilisateur de Zsh, j’aimerais essayer Fish
    • J’ajoute des plugins à Zsh pour le faire fonctionner comme Fish
  • Si vous utilisez Homebrew, Fish n’est pas encore disponible
    • Cela devrait être ajouté
  • J’utilise Fish depuis plusieurs années, principalement pour son excellente autocomplétion
    • Le système de thèmes/prompts simplifié et la gestion des plugins avec oh-my-fish sont aussi appréciables, mais secondaires
  • Le reste des fonctionnalités de Fish, incompatibles avec Bash, est gênant
    • La gestion des variables d’environnement pose particulièrement problème
    • En principe, la conception est meilleure que celle de Bash, mais la différence n’est pas si grande et comme on s’en sert rarement, il faut la réapprendre à chaque fois
    • C’est gênant quand on copie-colle des instructions de configuration depuis la documentation
  • Je me demande comment les ajustements de développement pour la migration vers Rust ont été réalisés
    • Je ne vois qu’une seule PR (#9512)
  • Je me demande de combien la taille du binaire a augmenté après la réécriture en Rust
  • clear-commandline est une fonctionnalité intéressante
    • Il est difficile de conserver une cohérence entre Windows et macOS
    • Je n’arrive pas à bien utiliser Karabiner
    • Je vais vérifier la configuration par défaut de cancel-commandline