
Brush je příkazový interpretr napsaný v jazyce Rust, který kombinuje kompatibilitu s POSIX a Bash s garantovanou paměťovou bezpečností a výkonem. Cílem projektu je být plnohodnotnou alternativou tradičních shellů, umožňující spouštění stávajících skriptů a používání .bashrc téměř bez změn. Tato verze slučuje několik měsíců práce a více než 200 sloučených pull requestů, což výrazně posouvá shell blíže k plnohodnotné náhradě Bash a POSIX-kompatibilních prostředí.
Hlavní směry vývoje v této verzi:
- kompatibilita s Bsh: přidány set -e, set -u, pipefail, failglob, ošetřovač ERR, spolupracující procesy a mnoho dalšího;
- spolehlivost: zlepšené zpracování výjimečných situací – uzavřených kanálů, poškozeného výstupu, ne-UTF8 historie a dalších;
- platformy: rozšířena podpora pro macOS (funkčnost jako login shell), zlepšena podpora pro Windows, FreeBSD, Android a 32-bitové systémy;
- interaktivita: přidány volitelné TOML konfigurace, preexec/precmd hooky, vylepšena podpora makra readline a další.
Klíčová zlepšení kompatibility s Bash
Nejdůležitějšími vylepšeními této verze bylo výrazné rozšíření podpory funkcí Bash. Zpracování chyb:
- set -e (errexit) – okamžité ukončení při chybě;
- set -u (nounset) – chyba při přístupu k neoznačené proměnné;
- pipefail – návratový kód trubky je určen posledním selhávajícím příkazem;
- failglob – absence shody pro glob výraz nyní vede k chybě.
Ošetřovače (Traps) a spolupracující procesy:
- ošetřovač ERR – umožňuje vykonávat příkazy při výskytu chyby;
- spolupracující procesy (coproc) – spuštění pozadí procesů s obousměrnou komunikací.
Vestavěné příkazy:
- vylepšeno zpracování mnoha aritmetických konstrukcí, včetně literálů s vysokým základem, přetečení a přiřazovacích operátorů;
- opravy a vylepšení se dotkly vestavěných příkazů: caller, read, getopts, printf a dalších.
Rozšíření podpory platforem:
Verze v0.4.0 zpřístupňuje shell na širším spektru zařízení:
- macOS: opraven problém, který způsobil, že shell zamrzl při přihlášení. Nyní lze brush používat jako login shell;
- Windows: zlepšení zpracování cest, přidána emulace /dev/null, což výrazně zvyšuje uživatelský komfort na Windows;
- FreeBSD a Android: je podporována kompilace pro tyto platformy;
Interaktivní funkce a API
- Konfigurace: byla přidána podpora volitelného TOML konfiguračního souboru (~/.config/brush/config.toml) pro nastavení specifická pro brush;
- Přizpůsobení: byly implementovány zsh styly preexec/precmd hooků (za experimentálního příznaku), které jsou užitečné pro vytváření vlastních výzev a nástrojů pro měření času;
- API pro vývojáře: typ Shell je nyní parametrizován pomocí rozšíření (ShellExtensions), což vývojářům umožňuje přidávat vlastní integrované příkazy a měnit chování proměnných bez nutnosti forkování projektu;
- Různé:
- byly přidány možnosti serializace AST a stavu shellu prostřednictvím serde;
- nyní jsou v brush-parser a brush-core dostupné funkce serde pro možnost serializace AST a stavu shellu.
Zdroj: linux.org.ru
