
Brush je príkazový interpreter napísaný v jazyku Rust, ktorý spája kompatibilitu s POSIX a Bash s garanciami bezpečnosti pamäte a výkonom. Projekt sa zameriava na to, aby sa stal plnohodnotnou alternatívou tradičných interpreterov, umožňujúcou spúšťať existujúce skripty a používať .bashrc takmer bez zmien. Táto verzia spája niekoľko mesiacov práce a viac ako 200 zlúčených pull-requestov, pričom výrazne posúva interpreter na ceste k plnohodnotnej náhrade Bash a POSIX-kompatibilných prostredí.
Hlavné smery rozvoja v tomto vydaní:
- kompatibilita s Bash: pridané set -e, set -u, pipefail, failglob, spracovanie ERR, súprocese a mnohé ďalšie;
- spoľahlivosť: vylepšené spracovanie výnimočných situácií – zatvorených kanálov, poškodeného výstupu, ne-UTF8 histórie a ďalších;
- platformy: rozšírená podpora pre macOS (práca ako login shell), zlepšená funkčnosť na Windows, FreeBSD, Android a 32-bitových systémoch;
- interaktivita: pridané voliteľné TOML konfigurácie, preexec/precmd háky, vylepšená podpora pre makrá readline a ďalšie.
Kľúčové vylepšenia kompatibility s Bashom
Najdôležitejšími vylepšeniami tohto vydania bolo významné rozšírenie podpory funkcií Bash. Správa chýb:
- set -e (errexit) – okamžité ukončenie pri chybe;
- set -u (nounset) – chyba pri pokuse o prístup k nevyhlásenej premene;
- pipefail – návratový kód potrubia je určený posledným zlyhávajúcim príkazom;
- failglob – absencia zhody pre glob-vyjadrenie teraz vedie k chybe.
Spracovatelia (Traps) a súprocese:
- spracovateľ ERR — umožňuje vykonávať príkazy pri výskyte chyby;
- súprocese (coproc) — spustenie pozadovaných procesov s obojsmerným spojením.
Zabudované príkazy:
- vylepšené spracovanie mnohých aritmetických konštrukcií, vrátane literálov s vysokým základom, preplnenia a priradenia;
- opravy a vylepšenia sa týkajú zabudovaných príkazov: caller, read, getopts, printf a ďalších.
Rozšírenie podpory platforiem:
Vydanie v0.4.0 robí Interpreter dostupný na širšom spektre zariadení:
- macOS: opravený problém, ktorý spôsobil zamrznutie interaktora pri prihlásení do systému. Teraz môže byť brush použitý ako login shell;
- Windows: vylepšenia v spracovaní ciest, pridaná emulácia /dev/null, čo významne zlepšuje použiteľnosť na Windows;
- FreeBSD a Android: podpora pre tieto platformy bola pridana;
Interaktívne možnosti a API
- Konfigurácia: bola pridaná podpora voliteľného konfiguračného súboru TOML (~/.config/brush/config.toml) pre nastavenia špecifické pre brush;
- Personalizácia: implementované zsh štýly preexec/precmd háčikov (pod experimentálnou vlajkou), užitočné na vytváranie prispôsobených výziev a nástrojov na meranie času;
- API pre vývojárov: typ Shell je teraz parametizovaný rozšíreniami (ShellExtensions), čo vývojárom umožňuje pridávať vlastné zabudované príkazy a meniť správanie premenných bez nutnosti forku projektu;
- Rôzne:
- pridané možnosti serializácie AST a stavu shellu cez serde;
- teraz sú v brush-parser a brush-core dostupné funkcie serde na serializáciu AST a stavu shellu.
Zdroj: linux.org.ru
