
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
