
Brush je komandna ljuska napisana na jeziku Rust, koja kombinira kompatibilnost s POSIX-om i Bash-om sa garancijama sigurnosti memorije i performansama. Projekt ima za cilj postati potpuna alternativa tradicionalnim ljuskama, omogućavajući pokretanje postojećih skripti i korištenje .bashrc-a gotovo bez promjena. Ova verzija objedinjuje nekoliko mjeseci rada i više od 200 spojenih pull requestova, značajno napredujući ka punoj zamjeni Bash-a i POSIX-kompatibilnih okruženja.
Glavne smjernice razvoja u ovom izdanju:
- kompatibilnost s Bash-om: dodani set -e, set -u, pipefail, failglob, obrada ERR, koprocesi i mnogo toga drugog;
- pouzdanost: poboljšana obrada iznimaka - zatvorenih kanala, pokvarenog ispisa, ne-UTF8 povijesti i drugih;
- platforme: proširena podrška za macOS (rad kao ulazna ljuska), poboljšano funkcioniranje na Windows-u, FreeBSD-u, Android-u i 32-bitnim sustavima;
- interaktivnost: dodane opcijske TOML konfiguracije, preexec/precmd hook-ovi, poboljšana podrška za readline makroe i drugo.
Ključna poboljšanja Bash-kompatibilnosti
Najvažnije dorade ovog izdanja su značajno proširenje podrške za mogućnosti Bash-a. Upravljanje pogreškama:
- set -e (errexit) – odmah izlazi u slučaju pogreške;
- set -u (nounset) – pogreška prilikom pristupa nedeklariranoj varijabli;
- pipefail – povratni kod cjevovoda definira se kao posljednja neuspješna komanda;
- failglob – nedostatak podudaranja za glob izraz sada dovodi do pogreške.
Obraditelji (Traps) i koprocesi:
- obrada ERR – omogućava izvršavanje komandi u slučaju pogreške;
- koprocesi (coproc) – pokretanje pozadinskih procesa sa dvosmjernom vezom.
Ugrađene komande:
- poboljšana obrada mnogih aritmetičkih konstrukcija, uključujući litre visoke osnove, preljeve i operatore dodjele;
- ispravke i poboljšanja obuhvatila su ugrađene komande: caller, read, getopts, printf i druge.
Proširenje podrške platformi:
Izdanjem v0.4.0 ljuska postaje dostupna na širem spektru uređaja:
- macOS: ispravljen problem zbog kojeg se ljuska smrzavala prilikom prijave. Sada se brush može koristiti kao ulazna ljuska (login shell);
- Windows: poboljšanja u obradi putanja, dodana emulacija /dev/null, što značajno povećava praktičnost korištenja na Windows-u;
- FreeBSD i Android: podržana je izrada za te platforme;
Interaktivne mogućnosti i API
- Konfiguracija: dodana podrška za opcionalnu TOML konfiguracijsku datoteku (~/.config/brush/config.toml) za postavke specifične za brush;
- Prilagodba: implementirani su zsh stilovi preexec/precmd hookova (s eksperimentalnom zastavicom), korisni za stvaranje prilagođenih poziva i alata za mjerenje vremena;
- API za programere: tip Shell je sada parametiziran proširenjima (ShellExtensions), što programerima daje mogućnost dodavanja vlastitih ugrađenih naredbi i mijenjanja ponašanja varijabli bez potrebe za razdvajanjem projekta;
- Razno:
- dodane mogućnosti serijalizacije AST-a i stanja ljuske putem serde;
- sada su u brush-parseru i brush-core dostupne funkcije serde za serijalizaciju AST-a i stanja ljuske.
Izvor: linux.org.ru
