
Brush â Ă«shtĂ« njĂ« shell komandash e shkruar nĂ« gjuhĂ«n Rust, e cila kombinon pĂ«rputhshmĂ«rinĂ« me POSIX dhe Bash me garancitĂ« e sigurisĂ« sĂ« memories dhe performancĂ«s. Projekti ka si qĂ«llim tĂ« bĂ«het njĂ« alternativĂ« e plotĂ« ndaj shell-eve tradicionale, duke lejuar ekzekutimin e skripteve ekzistuese dhe pĂ«rdorimin e .bashrc praktikisht pa ndryshime. Kjo version pĂ«rfshin disa muaj punĂ« dhe mbi 200 kĂ«rkesa tĂ« bashkimeve, duke avancuar ndjeshĂ«m shellet drejt zĂ«vendĂ«simit tĂ« plotĂ« tĂ« Bash dhe mjediseve pĂ«rputhĂ«se me POSIX.
Drejtimet kryesore të zhvillimit në këtë lëshim:
- përputhshmëria me Bash: janë shtuar set -e, set -u, pipefail, failglob, menaxhuesi ERR, bashkë-proceset dhe shumë të tjera;
- besueshmëria: është përmirësuar trajtimi i rasteve të jashtme - kanalet e mbyllura, dalja e prishur, historia jo-UTF8 dhe të tjera;
- platforma: është zgjeruar mbështetje për macOS (për të punuar si shell hyrjeje), është përmirësuar funksionimi në Windows, FreeBSD, Android dhe sistemet 32-bit;
- interaktiviteti: janë shtuar konfigurimet opsionale TOML, preexec/precmd hooks, është përmirësuar mbështetja për makrosat readline dhe të tjera.
Përmirësimet kryesore të përputhshmërisë me Bash
Përmirësimet kryesore të këtij publikimi ishin zgjerimi i dukshëm i mbështetjes për funksionalitetin e Bash. Menaxhimi i gabimeve:
- set -e (errexit) â dalje e menjĂ«hershme nĂ« rast gabimi;
- set -u (nounset) â gabim kur i referoheni njĂ« variabli tĂ« pa deklaruar;
- pipefail â kodi i rikthimit tĂ« tubit pĂ«rcaktohet nga komanda e fundit qĂ« ka dĂ«shtuar;
- failglob â mungesa e pĂ«rputhshmĂ«rive pĂ«r njĂ« shprehje glob tani rezulton nĂ« njĂ« gabim.
Menaxherët (Traps) dhe subprocesset:
- menaxher ERR â lejon ekzekutimin e komandave nĂ« rast gabimi;
- subprocesset (coproc) â nisja e proceseve nĂ« sfond me lidhje dyanshmĂ«risht.
Komandat e integruara:
- përmirësimi i trajtimit të shumë strukturave aritmetike, duke përfshirë literalet me bazë të lartë, mbivendosjen dhe operatorët e caktimit;
- korrigjime dhe përmirësime prekën komandat e integruara: caller, read, getopts, printf dhe të tjera.
Zgjerimi i mbështetjes për platforma:
Ălirimi v0.4.0 e bĂ«n shell-in tĂ« disponueshĂ«m nĂ« njĂ« gamĂ« mĂ« tĂ« gjerĂ« pajisjesh:
- macOS: është zgjidhur një problem që bënte që shell-i të ngrinte gjatë hyrjes në sistem. Tani brush mund të përdoret si shell hyresi (login shell);
- Windows: përmirësime në trajtimin e rrugëve, është shtuar emulimi /dev/null, që rrit ndjeshëm komoditetin në përdorim në Windows;
- FreeBSD dhe Android: mbështetje për ndërtimin për këto platforma;
Mundësi interaktive dhe API
- Konfigurimi: është shtuar mbështetje për skedarin opsional të konfigurimit TOML (~/.config/brush/config.toml) për cilësime specifike për brush;
- Personalizimi: janë implementuar stilet e preexec/precmd të zsh (nëpërmjet flamurit eksperimenti), të dobishme për krijimin e thirrjeve të personalizuara dhe mjeteve për matjen e kohës;
- API për zhvilluesit: lloji Shell tani është parametrizuar me zgjerime (ShellExtensions), duke u dhënë zhvilluesve mundësinë për të shtuar komandat e tyre të ndërtuara dhe për të ndryshuar sjelljen e variablave pa pasur nevojë për fork të projektit;
- TĂ« tjera:
- shtuar mundësi për serializimin e 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 të AST dhe gjendjes së shell-it.
Burimi: linux.org.ru
