
Brush je príkazový shell napísaný v jazyku Rust, ktorý kombinuje kompatibilitu s POSIX a Bash so zárukami bezpečnosti pamäte a výkonu. Cieľom projektu je stať sa plnohodnotnou alternatívou k tradičným shellom, čo umožní spúšťanie existujúcich skriptov a používanie súboru .bashrc prakticky bez zmeny. Táto verzia predstavuje niekoľko mesiacov práce a viac ako 200 zlúčených pull requestov, čo výrazne posúva shell smerom k tomu, aby sa stal plnohodnotnou náhradou za Bash a prostredia kompatibilné s POSIX.
Kľúčové oblasti rozvoja v tejto problematike:
- Kompatibilita s Bash: pridané set -e, set -u, pipefail, failglob, obslužný program ERR, koprocesy a mnoho ďalšieho;
- spoľahlivosť: vylepšené spracovanie výnimočných prípadov – zatvorené kanály, poškodený výstup, história iná ako UTF8 a iné;
- Platformy: Rozšírená podpora macOS (funguje ako vstupný shell), vylepšená práca na Windows, FreeBSD, Android a 32-bitové systémy;
- Interaktivita: pridané voliteľné konfigurácie TOML, hooky preexec/precmd, vylepšená podpora makier readline a ďalšie.
Vylepšenia kompatibility s Key Bash
Najdôležitejšími vylepšeniami v tejto verzii bolo výrazné rozšírenie podpory funkcií Bash. Správa chýb:
- set -e (errexit) – okamžitý návrat pri chybe;
- set -u (podstatné meno) – chyba pri prístupe k nedeklarovanej premennej;
- pipefail – návratový kód pipeline je určený posledným neúspešným príkazom;
- failglob – Ak sa nenájde zhoda s výrazom typu glob, teraz sa vyskytne chyba.
Obsluha (pasce) a koprocesy:
- Obsluha ERR - umožňuje vykonávať príkazy, keď sa vyskytne chyba;
- koprocesy (coproc) - spúšťanie procesov na pozadí s obojsmernou komunikáciou.
Vstavané príkazy:
- Vylepšené spracovanie mnohých aritmetických konštruktov vrátane literálov s vysokým radixom, pretečenia a operátorov priradenia;
- Opravy a vylepšenia ovplyvnili vstavané príkazy: caller, read, getopts, printf a ďalšie.
Rozšírenie podpory platformy:
Verzia 0.4.0 sprístupňuje shell na širšej škále zariadení:
- macOSOpravený problém, kedy sa shell pri prihlasovaní zasekával. Brush je teraz možné použiť ako prihlasovací shell;
- WindowsVylepšenia v spracovaní ciest, pridaná emulácia /dev/null, ktorá výrazne zlepšuje použiteľnosť na Windows;
- FreeBSD a Android: assembly pre tieto platformy sú podporované;
Interaktívne funkcie a API
- konfiguráciaPridaná podpora pre voliteľný konfiguračný súbor TOML (~/.config/brush/config.toml) pre nastavenia špecifické pre štetce;
- PrispôsobenieImplementované hooky preexec/precmd v štýle zsh (za experimentálnym príznakom), užitočné na vytváranie vlastných výziev a nástrojov načasovania;
- API pre vývojárovTyp Shell je teraz parametrizovaný rozšíreniami (ShellExtensions), čo umožňuje vývojárom pridávať vlastné vstavané príkazy a meniť správanie premenných bez nutnosti rozvetvenia projektu.
- rôzne:
- Pridané možnosti serializácie AST a stavu shellu cez serde;
- Funkcie serde sú teraz dostupné v brush-parser a brush-core, ktoré umožňujú serializáciu AST a stavu shellu.
Zdroj: linux.org.ru
