
Brush ist eine Kommandozeile, die in Rust geschrieben wurde und POSIX- und Bash-KompatibilitĂ€t mit Sicherheitsgarantien fĂŒr den Speicher und hoher Leistung kombiniert. Das Projekt zielt darauf ab, eine vollstĂ€ndige Alternative zu herkömmlichen Shells zu werden, indem es ermöglicht, bestehende Skripte und .bashrc nahezu ohne Ănderungen auszufĂŒhren. Diese Version vereint mehrere Monate Arbeit und ĂŒber 200 zusammengefĂŒhrte Pull-Requests, wodurch die Shell erheblich in Richtung einer vollstĂ€ndigen Ersetzung von Bash und POSIX-kompatiblen Umgebungen vorangetrieben wird.
Die Hauptentwicklungsschwerpunkte in dieser Version sind:
- Bash-KompatibilitĂ€t: set -e, set -u, pipefail, failglob, ERR-Handler, Co-Prozesse und vieles mehr wurden hinzugefĂŒgt;
- ZuverlĂ€ssigkeit: die Behandlung von AusnahmefĂ€llen wurde verbessert â geschlossene KanĂ€le, fehlerhafte Ausgaben, nicht-UTF8-Historien und andere;
- Plattformen: erweiterte UnterstĂŒtzung fĂŒr macOS (Arbeiten als Login-Shell), verbesserte FunktionalitĂ€t unter Windows, FreeBSD, Android und 32-Bit-Systemen;
- InteraktivitĂ€t: optionale TOML-Konfigurationen, preexec/precmd-Hooks, verbesserte UnterstĂŒtzung fĂŒr Readline-Makros und mehr wurden hinzugefĂŒgt.
Wichtige Verbesserungen in der Bash-KompatibilitÀt
Die wichtigsten Verbesserungen dieser Version umfassen eine erhebliche Erweiterung der UnterstĂŒtzung fĂŒr Bash-Funktionen. Fehlerverwaltung:
- set -e (errexit) â sofortiger Ausstieg bei einem Fehler;
- set -u (nounset) â Fehler beim Zugriff auf eine nicht deklarierte Variable;
- pipefail â der RĂŒckgabecode der Pipeline wird durch den zuletzt fehlgeschlagenen Befehl bestimmt;
- failglob â das Fehlen von Ăbereinstimmungen fĂŒr einen Glob-Ausdruck fĂŒhrt jetzt zu einem Fehler.
Handler (Traps) und Koprozesse:
- Fehler-Handler ERR â ermöglicht das AusfĂŒhren von Befehlen bei Auftreten eines Fehlers;
- Koprozesse (coproc) â Starten von Hintergrundprozessen mit bidirektionalem Austausch.
Eingebaute Befehle:
- verbesserte Verarbeitung vieler arithmetischer Konstruktionen, einschlieĂlich Literalen mit hohem Basiswert, ĂberlĂ€ufen und Zuweisungsoperatoren;
- Fehlerbehebungen und Verbesserungen betrafen die eingebauten Befehle: caller, read, getopts, printf und andere.
Erweiterte PlattformunterstĂŒtzung:
Die Version v0.4.0 macht die Shell auf einem breiteren Spektrum von GerĂ€ten verfĂŒgbar:
- macOS: Ein Problem wurde behoben, wodurch die Shell beim Anmelden hÀngen blieb. Jetzt kann brush als Login-Shell verwendet werden;
- Windows: Verbesserungen bei der Pfadverarbeitung, eine Emulation von /dev/null wurde hinzugefĂŒgt, was die Benutzerfreundlichkeit unter Windows erheblich steigert;
- FreeBSD und Android: UnterstĂŒtzung fĂŒr den Build auf diesen Plattformen;
Interaktive Funktionen und API
- Konfiguration: UnterstĂŒtzung fĂŒr eine optionale TOML-Konfigurationsdatei (~/.config/brush/config.toml) fĂŒr spezifische Einstellungen von brush hinzugefĂŒgt;
- Anpassung: zsh-Stile fĂŒr preexec/precmd Hooks implementiert (hinter einem experimentellen Flag), nĂŒtzlich zur Erstellung benutzerdefinierter Eingabeaufforderungen und Zeitmesswerkzeuge;
- API fĂŒr Entwickler: Der Shell-Typ ist jetzt parametrisiert mit Erweiterungen (ShellExtensions), die es Entwicklern ermöglichen, eigene integrierte Befehle hinzuzufĂŒgen und das Verhalten von Variablen zu Ă€ndern, ohne das Projekt forken zu mĂŒssen;
- Verschiedenes:
- Möglichkeiten zur Serialisierung von AST und Shell-Zustand ĂŒber serde hinzugefĂŒgt;
- Jetzt sind in brush-parser und brush-core Funktionen von serde verfĂŒgbar, um die Serialisierung von AST und Shell-Zustand zu ermöglichen.
Quelle: linux.org.ru
