Brush v0.4.0

Brush v0.4.0

Brush este un shell de comandă scris în Rust, care combină compatibilitatea cu POSIX și Bash cu garanții de siguranță a memoriei și performanță. Proiectul vizează să devină o alternativă completă la shell-urile tradiționale, permițând rularea scripturilor existente și utilizarea .bashrc practic fără modificări. Această versiune reunește câteva luni de muncă și mai mult de 200 de pull requests unite, avansând considerabil shell-ul spre o înlocuire completă a Bash-ului și a mediilor compatibile POSIX.

Principalele direcții de dezvoltare în această versiune:

  • compatibilitate cu Bash: au fost adăugate set -e, set -u, pipefail, failglob, handler ERR, coprocesses și multe altele;
  • fiabilitate: a fost îmbunătățită gestionarea excepțiilor - canale închise, ieșire coruptă, istoric non-UTF8 și altele;
  • platforme: suport extins pentru macOS (funcționare ca shell de login), îmbunătățit suportul pe Windows, FreeBSD, Android și sisteme pe 32 de biți;
  • interactivitate: au fost adăugate configurații opționale TOML, hooks preexec/precmd, îmbunătățit suportul pentru macrocomenzi readline și altele.

Îmbunătățiri cheie în compatibilitatea cu Bash

Cele mai importante îmbunătățiri din această versiune au fost extinderea semnificativă a suportului pentru funcționalitățile Bash. Gestionarea erorilor:

  • set -e (errexit) – ieșire imediată în caz de eroare;
  • set -u (nounset) – eroare la referința unei variabile nedeclarați;
  • pipefail – codul de returnare al pipeline-ului este determinat de ultimul comandă care a eșuat;
  • failglob – absența potrivirilor pentru expresia glob duce acum la o eroare.

Handleri (Traps) și coprocesses:

  • handler ERR – permite execuția comenzilor în caz de eroare;
  • coprocesses (coproc) – rularea proceselor de fundal cu comunicare bidirecțională.

Comenzi încorporate:

  • a fost îmbunătățită gestionarea multor construcții aritmetice, inclusiv literale cu bază înaltă, depășiri și operatori de atribuiri;
  • corecțiile și îmbunătățirile au afectat comenzile încorporate: caller, read, getopts, printf și altele.

Extinderea suportului pentru platforme:

Versiunea v0.4.0 face shell-ul disponibil pe un spectru mai larg de dispozitive:

  • macOS: a fost rezolvată problema care cauza blocarea shell-ului la autentificare. Acum brush poate fi folosit ca shell de login;
  • Windows: îmbunătățiri în gestionarea căilor, adăugată emularea /dev/null, ceea ce crește considerabil ușurința de utilizare pe Windows;
  • FreeBSD și Android: există o arhivă suportată pentru aceste platforme;

Funcționalități interactive și API

  • Configurație: a fost adăugat suport pentru fișierul de configurare opțional TOML (~/.config/brush/config.toml) pentru setări specifice brush;
  • Personalizare: au fost implementate stilurile zsh preexec/precmd hooks (sub steagul experimental), utile pentru crearea de prompturi personalizate și instrumente de măsurare a timpului;
  • API pentru dezvoltatori: tipul Shell este acum parametrizat prin extensii (ShellExtensions), oferind dezvoltatorilor posibilitatea de a adăuga comenzi integrate proprii și de a modifica comportamentul variabilelor fără a necesita un fork al proiectului;
  • Diverse:
    • suport îmbunătățit pentru macrocomenzi readline pentru compatibilitate cu starship, atuin și fzf (github.com);
    • a fost adăugat suport pentru serializarea AST și a stării shell-ului prin serde;
    • funcțiile serde pentru serializarea AST și a stării shell-ului sunt acum disponibile în brush-parser și brush-core.

Sursa: linux.org.ru

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster