Brush v0.4.0

Brush v0.4.0

Brush est un shell de ligne de commande écrit en Rust, qui combine la compatibilité POSIX et Bash avec des garanties de sécurité mémoire et des performances. Le projet vise à devenir une alternative complète aux shells traditionnels, permettant d'exécuter des scripts existants et d'utiliser .bashrc avec pratiquement aucune modification. Cette version regroupe plusieurs mois de travail et plus de 200 demandes de tirage fusionnées, faisant avancer le shell vers un remplacement complet de Bash et des environnements compatibles POSIX.

Les principales directions de développement dans cette version :

  • Compatibilité avec Bash : ajout de set -e, set -u, pipefail, failglob, gestionnaire d'ERR, coproces et bien plus ;
  • Fiabilité : amélioration de la gestion des cas exceptionnels - canaux fermés, sortie corrompue, historique non UTF8 et autres ;
  • Plateformes : prise en charge étendue de macOS (fonctionnement en tant que shell de connexion), améliorations sur Windows, FreeBSD, Android et systèmes 32 bits ;
  • Interactivité : ajout de fichiers de configuration TOML optionnels, hooks preexec/precmd, amélioration du support des macros readline et autres.

Améliorations clés de la compatibilité avec Bash

Les principales améliorations de cette version incluent une augmentation significative de la prise en charge des fonctionnalités de Bash. Gestion des erreurs:

  • set -e (errexit) – sortie immédiate en cas d'erreur ;
  • set -u (nounset) – erreur lors de l'accès à une variable non déclarée ;
  • pipefail – le code de retour du pipeline est défini par la dernière commande échouée ;
  • failglob – l'absence de correspondances pour une expression glob provoque maintenant une erreur.

Gestionnaires (Traps) et coproces:

  • Gestionnaire ERR — permet d'exécuter des commandes en cas d'erreur ;
  • Coproces (coproc) — exécution de processus en arrière-plan avec communication bidirectionnelle.

Commandes intégrées:

  • amélioration du traitement de nombreuses constructions arithmétiques, y compris les littéraux à base élevée, les dépassements et les opérateurs d'affectation ;
  • les corrections et améliorations ont touché des commandes intégrées : caller, read, getopts, printf et autres.

Extension de la prise en charge des plateformes :

La version v0.4.0 rend le shell accessible sur une gamme plus large d'appareils :

  • macOS : correction d'un problème qui faisait que le shell se bloquait lors de l'authentification. Brush peut maintenant être utilisé en tant que shell de connexion (login shell) ;
  • Windows : améliorations du traitement des chemins, ajout d'une émulation /dev/null, ce qui augmente considérablement la convivialité sur Windows ;
  • FreeBSD et Android : une build pour ces plateformes est prise en charge ;

Fonctionnalités interactives et API

  • Configuration: ajout du support pour un fichier de configuration TOML optionnel (~/.config/brush/config.toml) pour les paramètres spécifiques à brush ;
  • Personnalisation: les styles de pré-exécution / pré-commande de zsh (derrière un drapeau expérimental) ont été implémentés, utiles pour créer des invites personnalisées et des outils de mesure de temps ;
  • API pour les développeurs: le type Shell est maintenant paramétré par des extensions (ShellExtensions), permettant aux développeurs d'ajouter leurs propres commandes intégrées et de modifier le comportement des variables sans avoir besoin de forker le projet ;
  • Divers:
    • amélioration de la prise en charge des macros readline pour la compatibilité avec starship, atuin et fzf (github.com);
    • ajout des capacités de sérialisation AST et d'état de shell via serde ;
    • des fonctions serde pour la sérialisation AST et l'état de shell sont maintenant disponibles dans brush-parser et brush-core.

Source : linux.org.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster