
Brush është një shell komandash e shkruar në gjuhën Rust, e cila kombinon pajtueshmërinë me POSIX dhe Bash me garancitë për sigurinë e memories dhe performancën. Projekti ka për qëllim të bëhet një alternativë e plotë ndaj shelleve tradicionale, duke lejuar ekzekutimin e skenareve ekzistues dhe përdorimin e .bashrc pothuajse pa ndryshime. Kjo version bashkon disa muaj punë dhe më shumë se 200 kërkesa për bashkim, duke avancuar ndjeshëm shell-in në rrugën drejt një zëvendësimi të plotë për Bash dhe mjediset e kompatibilitetit POSIX.
Drejtimet kryesore të zhvillimit në këtë version:
- kompatibiliteti me Bash: janë shtuar set -e, set -u, pipefail, failglob, menaxher ERR, coproceset dhe shumë të tjera;
- besueshmëria: është përmirësuar trajtimi i rasteve të jashtme - kanaleve të mbyllura, daljes së prishur, historive jo-UTF8 dhe të tjera;
- platforma: është zgjeruar mbështetje për macOS (puna si shell hyrës), është përmirësuar performanca në Windows, FreeBSD, Android dhe sisteme 32-bit;
- interaktiviteti: janë shtuar konfigurimet opcionale TOML, preexec/precmd-hooks, është përmirësuar mbështetja për makrot e readline dhe të tjera.
Përmirësimet kryesore të kompatibilitetit me Bash
Rimëkëmbjet më të rëndësishme në këtë version përfshijnë zgjerimin e konsiderueshëm të mbështetjes për mundësitë e Bash. Menaxhimi i gabimeve:
- set -e (errexit) â dalja e menjĂ«hershme nĂ« rast gabimi;
- set -u (nounset) â gabim nĂ« kĂ«rkesĂ«n pĂ«r njĂ« variabĂ«l tĂ« padeklaruar;
- pipefail â kodi i kthimit tĂ« tubit pĂ«rcaktohet nga komandat e fundit tĂ« dĂ«shtuar;
- failglob â mungesa e pĂ«rputhjeve pĂ«r shprehjen glob tani shkakton njĂ« gabim.
Menaxherët (Traps) dhe coproceset:
- menaxheri ERR - lejon ekzekutimin e komandave në rast gabimi;
- coproceset (coproc) â ekzekutimi i proceseve nĂ« sfond me lidhje dyanshĂ«m.
Komandat e ndërtuara:
- është përmirësuar trajtimi i shumë strukturave aritmetike, përfshirë literaturat me bazë të lartë, mbingarkesat dhe operatorët e dërgesës;
- korrigjime dhe përmirësime kanë prekur komandat e ndërtuara: caller, read, getopts, printf dhe të tjera.
Zgjerimi i mbështetjes për platforma:
Shkëputja v0.4.0 e bën shell-in të disponueshëm në një gamë më të gjerë pajisjesh:
- macOS: është korrigjuar një problem që shkaktonte që shell-i të ngrinte gjatë hyrjes në sistem. Tani brush mund të përdoret si shell hyrës (login shell);
- Windows: përmirësime në trajtimin e rrugëve, është shtuar simulimi i /dev/null, që rrit ndjeshëm komoditetin e përdorimit në Windows;
- FreeBSD dhe Android: mbështetje për këto platforma është e disponueshme;
Mundësitë interaktive dhe API
- Konfigurimi: shtuar mbështetje për skedarin e konfigurimit opsional TOML (~/.config/brush/config.toml) për cilësime specifike për brush;
- Personalizimi: janë implementuar stillet preexec/precmd të zsh (pas flamurit eksperimental), të dobishme për krijimin e thirrjeve të personalizuara dhe mjeteve për matjen e kohës;
- API për zhvilluesit: lloji Shell tani parametrizohet me zgjerime (ShellExtensions), duke iu ofruar zhvilluesve mundësinë për të shtuar komandat e tyre të integruara dhe për të ndryshuar sjelljen e variablave pa pasur nevojë të forkojnë projektin;
- TĂ« tjera:
- shtuar mundësitë e serializimit AST dhe gjendjes së shell-it përmes serde;
- tani në brush-parser dhe brush-core janë të disponueshme funksione serde për mundësinë e serializimit AST dhe gjendjes së shell-it.
Burimi: linux.org.ru
