
Brush Àr en kommandotolk skriven i Rust som kombinerar kompatibilitet med POSIX och Bash med minnessÀkerhetsgarantier och prestanda. Projektet syftar till att bli ett fullvÀrdigt alternativ till traditionella skal, vilket möjliggör körning av befintliga skript och anvÀndning av .bashrc nÀstan utan Àndringar. Denna version sammanfogar flera mÄnaders arbete och mer Àn 200 sammanfogade pull-requestar, vilket betydligt avancerar skalet mot en fullstÀndig ersÀttning av Bash och POSIX-kompatibla miljöer.
HuvudomrÄden för utveckling i denna version:
- kompatibilitet med Bash: tillagt set -e, set -u, pipefail, failglob, ERR-hanterare, samarbeten och mycket mer;
- pĂ„litlighet: förbĂ€ttrad hantering av undantagsfall â stĂ€ngda kanaler, trasig utdata, icke-UTF8-historia och andra;
- plattformar: utökat stöd för macOS (arbete som inloggningsskal), förbÀttrad prestanda pÄ Windows, FreeBSD, Android och 32-bitars system;
- interaktivitet: tillagt valfria TOML-konfigurationer, preexec/precmd-hooks, förbÀttrat stöd för readline-makron och annat.
NyckelförbÀttringar av Bash-kompatibilitet
De viktigaste förbÀttringarna i denna version var en betydande utvidgning av stöd för Bash-funktioner. Felkodshantering:
- set -e (errexit) â omedelbar utgĂ„ng vid fel;
- set -u (nounset) â fel vid Ă„tkomst av odeklarerad variabel;
- pipefail â Ă„tervĂ€ndande koden för röret definieras av den senaste misslyckade kommandot;
- failglob â avsaknad av överensstĂ€mmelse för glob-uttryck resulterar nu i ett fel.
Hanterare och samarbeten:
- ERR-hanterare â möjliggör körning av kommandon vid uppkomst av fel;
- samarbeten (coproc) â starta bakgrundsprocesser med tvĂ„vĂ€gskommunikation.
Inbyggda kommandon:
- förbÀttrad hantering av mÄnga aritmetiska konstruktioner, inklusive litteraler med hög bas, överflöden och tilldelningsoperatörer;
- rÀttningar och förbÀttringar har berört inbyggda kommandon: caller, read, getopts, printf och andra.
Utvidgning av plattformsstöd:
Release v0.4.0 gör skalet tillgÀngligt pÄ ett bredare spektrum av enheter:
- macOS: ÄtgÀrdad det problem som gjorde att skalet hÀngde sig vid inloggning. Nu kan brush anvÀndas som inloggningsskal (login shell);
- Windows: förbÀttringar i hanteringen av sökvÀgar, tillÀgg av emulering av /dev/null, vilket avsevÀrt förbÀttrar anvÀndbarheten pÄ Windows;
- FreeBSD och Android: stöd för dessa plattformar finns;
Interaktiva funktioner och API
- Konfiguration: stöd för valfilen TOML (~/.config/brush/config.toml) för instÀllningar specifika för brush har lagts till;
- Anpassning: zsh-stilar för preexec/precmd-hakar har implementerats (bakom en experimentell flagga), anvÀndbara för att skapa anpassade prompts och tidsmÀtningsverktyg;
- API för utvecklare: Shell-typen Àr nu parametriserad av ShellExtensions, vilket ger utvecklare möjlighet att lÀgga till egna inbyggda kommandon och Àndra beteendet hos variabler utan att behöva forka projektet;
- Olika:
- möjligheter för serialisering av AST och skalets tillstÄnd via serde har lagts till;
- nu finns serde-funktioner tillgÀngliga i brush-parser och brush-core för möjlighet till serialisering av AST och skalets tillstÄnd.
KĂ€lla: linux.org.ru
