
Brush je prislužna ljuska napisana u jeziku Rust koja kombinira kompatibilnost s POSIX i Bashom s garancijama sigurnosti memorije i performansama. Projekt ima za cilj postati potpuna alternativa tradicionalnim ljuskama, omogućujući pokretanje postojećih skripti i korištenje .bashrc gotovo bez promjena. Ova verzija objedinjuje nekoliko mjeseci rada i više od 200 spojenih pull requestova, značajno napredujući prema punoj zamjeni Basha i POSIX-kompatibilnih okruženja.
Glavne točke razvoja u ovom izdanju:
- kompatibilnost s Bashom: dodani set -e, set -u, pipefail, failglob, obrada ERR, koprocesi i mnogo toga drugog;
- pouzdanost: poboljšana obrada iznimaka – zatvorenih kanala, pokvarenog izlaza, ne-UTF8 povijesti i drugih;
- platforme: proširena podrška za macOS (rad kao ulazna ljuska), poboljšana funkcionalnost na Windowsu, FreeBSD, Androidu i 32-bitnim sustavima;
- interaktivnost: dodane opcionalne TOML konfiguracije, preexec/precmd hookovi, poboljšana podrška za readline makroe i drugu.
Ključna poboljšanja Bash-kompatibilnosti
Najvažnija poboljšanja ovog izdanja bila su značajno proširenje podrške za mogućnosti Basha. Upravljanje pogreškama:
- set -e (errexit) – odmah izlazi pri pogrešci;
- set -u (nounset) – pogreška prilikom pristupa nezaštićenoj varijabli;
- pipefail – kod povratka cjevovoda određuje posljednja neuspješna komanda;
- failglob – nedostatak podudaranja za glob izraz sada dovodi do pogreške.
Obradnici (Traps) i koprocesi:
- obradnik ERR – omogućuje izvršavanje komandi prilikom pojave pogreške;
- koprocesi (coproc) – pokretanje pozadinskih procesa s dvosmjernom komunikacijom.
Ugrađene komande:
- poboljšana obrada mnogih aritmetičkih konstrukcija, uključujući literale s visokim bazama, preljeve i operatore dodjele;
- popravci i poboljšanja obuhvatili su ugrađene komande: caller, read, getopts, printf i druge.
Proširenje podrške platformama:
Izdanje v0.4.0 čini ljusku dostupnom na širem spektru uređaja:
- macOS: ispravljeni problemi koji su uzrokovali zastoje prilikom prijave. Sada je brush moguće koristiti kao ulaznu ljusku (login shell);
- Windows: poboljšanja u obradi putanja, dodana emulacija /dev/null, što značajno povećava korisnost na Windowsu;
- FreeBSD in Android: podpora za te platforme je vključena;
Interaktivne možnosti in API
- Конфигурация: dodana podpora za opcijsko TOML konfiguracijsko datoteko (~/.config/brush/config.toml) za nastavitve specifične za brush;
- Prilagoditev: uresničene zsh slogi preexec/precmd hooki (za eksperimentalno zastavico), koristni za ustvarjanje prilagojenih pozivov in orodij za merjenje časa;
- API za razvijalce: tip Shell je sedaj parametiziran z razširitvami (ShellExtensions), kar omogoča razvijalcem dodajanje lastnih vgrajenih ukazov in spremembo obnašanja spremenljivk brez potrebe po forkanju projekta;
- Razno:
- dodane možnosti za serializacijo AST in stanja lupine preko serde;
- sedaj so v brush-parser in brush-core dostopne funkcije serde za serializacijo AST in stanja lupine.
Izvor: linux.org.ru
