
Brush je příkazový shell napsaný v Rustu, který kombinuje kompatibilitu s POSIX a Bash se zárukami bezpečnosti paměti a výkonu. Projekt si klade za cíl stát se plnohodnotnou alternativou k tradičním shellům, což umožní spouštění stávajících skriptů a používání souboru .bashrc prakticky beze změny. Tato verze představuje několik měsíců práce a více než 200 sloučených pull requestů, což výrazně posouvá shell směrem k plnohodnotné náhradě pro Bash a prostředí kompatibilní s POSIX.
Klíčové oblasti rozvoje v tomto čísle:
- Kompatibilita s Bashem: přidány příkazy set -e, set -u, pipefail, failglob, obslužná rutina ERR, koprocesy a mnoho dalšího;
- spolehlivost: vylepšené zpracování výjimečných případů – uzavřené kanály, nefunkční výstup, historie mimo UTF8 a další;
- Platformy: Rozšířená podpora macOS (funguje jako vstupní shell), vylepšená práce na Windows, FreeBSD, Android a 32bitové systémy;
- Interaktivita: přidány volitelné konfigurace TOML, hooky preexec/precmd, vylepšená podpora maker readline a další.
Vylepšení kompatibility s Key Bash
Nejdůležitějšími vylepšeními v této verzi bylo významné rozšíření podpory funkcí Bash. Správa chyb:
- set -e (errexit) – okamžitý návrat při chybě;
- set -u (podstatné jméno) – chyba při přístupu k nedeklarované proměnné;
- pipefail – návratový kód pipeline je určen posledním neúspěšným příkazem;
- failglob – Pokud se nenajde shoda s výrazem typu glob, nyní dojde k chybě.
Obslužné rutiny (trapy) a koprocesy:
- Obsluha ERR - umožňuje spustit příkazy, když dojde k chybě;
- koprocesy (coproc) - spouštění procesů na pozadí s obousměrnou komunikací.
Vestavěné příkazy:
- Vylepšené zpracování mnoha aritmetických konstrukcí, včetně literálů s vysokým radixem, operátorů přetečení a přiřazovacích operátorů;
- Opravy a vylepšení ovlivnily vestavěné příkazy: caller, read, getopts, printf a další.
Rozšíření podpory platforem:
Verze 0.4.0 zpřístupňuje shell na širší škále zařízení:
- macOS: Opraven problém, kdy se shell při přihlašování zamrzával. Brush lze nyní použít jako přihlašovací shell;
- WindowsVylepšení v práci s cestami, přidána emulace /dev/null, která výrazně zlepšuje použitelnost na Windows;
- FreeBSD a Android: assembly pro tyto platformy je podporován;
Interaktivní funkce a API
- KonfiguracePřidána podpora pro volitelný konfigurační soubor TOML (~/.config/brush/config.toml) pro nastavení specifická pro štětce;
- PřizpůsobeníImplementovány hooky preexec/precmd ve stylu zsh (za experimentálním příznakem), užitečné pro vytváření vlastních výzev a nástrojů pro časování;
- API pro vývojářeTyp Shell je nyní parametrizován rozšířeními (ShellExtensions), což vývojářům umožňuje přidávat vlastní vestavěné příkazy a měnit chování proměnných bez nutnosti rozvětvování projektu;
- Různé:
- Přidány možnosti serializace AST a stavu shellu přes serde;
- Funkce serde jsou nyní k dispozici v brush-parser a brush-core, které umožňují serializaci AST a stavu shellu.
Zdroj: linux.org.ru
