
Brush er ein kommandolinjegrensesnitt utviklet i Rust, som kombinerer POSIX- og Bash-kompatibilitet med minnesikkerhet og ytelse. Prosjektet har som mål å bli et fullverdig alternativ til tradisjonelle skall, og lar kjøre eksisterende skript og bruke .bashrc praktisk talt uten endringer. Denne versjonen samler flere måneders arbeid og over 200 sammenføyde pull-forespørsel, og tar skjell mot å bli en fullverdig erstatning for Bash og POSIX-kompatible miljøer.
De viktigste utviklingene i denne utgaven:
- Bash-kompatibilitet: lagt til set -e, set -u, pipefail, failglob, ERR-håndterer, coproser og mye mer;
- Pålitelighet: forbedret håndtering av unntak – lukkede kanaler, ødelagte utdata, ikke-UTF8-historie og andre;
- Plattformer: utvidet støtte for macOS (kjøring som innloggingsskall), forbedret ytelse på Windows, FreeBSD, Android og 32-bits systemer;
- Interaktivitet: lagt til valgfrie TOML-konfigurasjoner, preexec/precmd-hooks, forbedret støtte for readline-makroer og annet.
Nøkkelforbedringer i Bash-kompatibilitet
De viktigste forbedringene i denne utgaven inkluderer betydelig utvidelse av støtten til Bash-funksjoner. Feilhåndtering:
- set -e (errexit) – umiddelbar utgang ved feil;
- set -u (nounset) – feil ved referanse til ikke-deklarert variabel;
- pipefail – returkode for pipelinen defineres av den siste feilede kommandoen;
- failglob – fravær av treff for glob-uttrykk fører nå til en feil.
Håndterere (Traps) og coproser:
- ERR-håndterer – lar kjøre kommandoer ved feil;
- coproser (coproc) – kjøre bakgrunnsprosesser med toveis kommunikasjon.
Innebygde kommandoer:
- forbedret håndtering av mange aritmetiske konstruksjoner, inkludert litteraler med høy basis, overløp og tilordningsoperatører;
- rettelser og forbedringer berørte de innebygde kommandoene: caller, read, getopts, printf og andre.
Utvidelse av plattformstøtte:
Utgaven v0.4.0 gjør skallet tilgjengelig på et bredere spekter av enheter:
- macOS: løste problemet som fikk skallet til å henge ved innlogging. Nå kan brush brukes som innloggingsskall;
- Windows: forbedringer i håndtering av stier, lagt til emulering av /dev/null, noe som betydelig øker brukervennligheten på Windows;
- FreeBSD og Android: det støttes bygg for disse plattformene;
Interaktive muligheter og API
- Konfigurasjon: lagt til støtte for valgfri TOML-konfigurasjonsfil (~/.config/brush/config.toml) for innstillinger spesifik for brush;
- Tilpasning: implementert zsh-stiler preexec/precmd-hooks (bak en eksperimentell flagg), nyttige for å lage tilpassede ledetekster og tidtakingverktøy;
- API for utviklere: nå er Shell-typen parametrisert med utvidelser (ShellExtensions), og gir utviklere mulighet til å legge til egne innebygde kommandoer og endre oppførselen til variabler uten å måtte forke prosjektet;
- Diverse:
- lagt til muligheter for serialisering av AST og shell-status via serde;
- nå er funksjoner for serde tilgjengelige i brush-parser og brush-core for å muliggjøre serialisering av AST og shell-status.
Kilde: linux.org.ru
