Brush v0.4.0

Brush v0.4.0

Brush ist eine Kommandozeilen-Shell, die in Rust geschrieben wurde und POSIX- sowie Bash-KompatibilitĂ€t mit Speicher漉慹heitsgarantien und LeistungsfĂ€higkeit kombiniert. Das Projekt zielt darauf ab, eine vollwertige Alternative zu traditionellen Shells zu bieten, die es ermöglicht, vorhandene Skripte nahezu ohne Änderungen auszufĂŒhren und .bashrc zu nutzen. Diese Version vereint mehrere Monate Arbeit und ĂŒber 200 zusammengefĂŒhrte Pull-Requests, was die Shell erheblich auf dem Weg zu einem vollwertigen Ersatz von Bash und POSIX-kompatiblen Umgebungen voranbringt.

Hauptentwicklungsrichtungen in dieser Veröffentlichung:

  • Bash-KompatibilitĂ€t: hinzugefĂŒgt wurden set -e, set -u, pipefail, failglob, ERROR-Handler, Co-Prozesse und vieles mehr;
  • ZuverlĂ€ssigkeit: verbesserte Verarbeitung von AusnahmefĂ€llen – geschlossene KanĂ€le, fehlerhafte Ausgaben, nicht-UTF8-Historien und anderen;
  • Plattformen: erweiterte UnterstĂŒtzung fĂŒr macOS (Einsatz als Login-Shell), verbesserte FunktionalitĂ€t unter Windows, FreeBSD, Android und 32-Bit-Systemen;
  • InteraktivitĂ€t: optionale TOML-Konfigurationen, preexec/precmd-Hooks hinzugefĂŒgt, verbesserte UnterstĂŒtzung von Readline-Makros und mehr.

Wesentliche Verbesserungen der Bash-KompatibilitÀt

Die wichtigsten Überarbeitungen dieser Veröffentlichung umfassten eine signifikante Erweiterung der Bash-Funktionen. Fehlerverwaltung:

  • set -e (errexit) – sofortiger Ausstieg bei Fehlern;
  • set -u (nounset) – Fehler bei Zugriff auf nicht deklarierte Variablen;
  • pipefail – Der RĂŒckgabewert der Pipeline wird durch den letzten gescheiterten Befehl definiert;
  • failglob – Abwesenheit von Übereinstimmungen fĂŒr das Glob-Muster fĂŒhrt nun zu einem Fehler.

Handler (Traps) und Co-Prozesse:

  • ERROR-Handler – ermöglicht die AusfĂŒhrung von Befehlen bei Auftreten eines Fehlers;
  • Co-Prozesse (coproc) – AusfĂŒhrung von Hintergrundprozessen mit bidirektionaler Kommunikation.

Eingebaute Befehle:

  • verbesserte Verarbeitung vieler arithmetischer Konstruktionen, einschließlich Literale mit hoher Basis, ÜberlĂ€ufe und Zuweisungsoperatoren;
  • Korrekturen und Verbesserungen betrafen die eingebauten Befehle: caller, read, getopts, printf und andere.

Erweiterung der PlattformunterstĂŒtzung:

Die Veröffentlichung v0.4.0 macht die Shell auf einem breiteren Spektrum von GerĂ€ten verfĂŒgbar:

  • macOS: behobenes Problem, das dazu fĂŒhrte, dass die Shell beim Anmelden hĂ€ngen blieb. Jetzt kann Brush als Login-Shell verwendet werden;
  • Windows: Verbesserungen bei der Handhabung von Pfaden, hinzugefĂŒgt wurde eine Emulation von /dev/null, die die Benutzerfreundlichkeit unter Windows erheblich verbessert;
  • FreeBSD und Android: UnterstĂŒtzung fĂŒr diese Plattformen wird bereitgestellt;

Interaktive Funktionen und API

  • Konfiguration: UnterstĂŒtzung fĂŒr eine optionale TOML-Konfigurationsdatei (~\/config\/brush\/config.toml) fĂŒr spezifische Brush-Einstellungen hinzugefĂŒgt;
  • Anpassung: Zsh-Stile fĂŒr preexec\/precmd-Hooks implementiert (unter experimentellem Flag), nĂŒtzlich zur Erstellung benutzerdefinierter Eingabeaufforderungen und Zeitmessungswerkzeuge;
  • API fĂŒr Entwickler: Typ Shell ist jetzt parametrisiert durch Erweiterungen (ShellExtensions), was Entwicklern ermöglicht, eigene integrierte Befehle hinzuzufĂŒgen und das Verhalten von Variablen zu Ă€ndern, ohne das Projekt forken zu mĂŒssen;
  • Verschiedenes:
    • Verbesserte UnterstĂŒtzung fĂŒr Readline-Makros zur KompatibilitĂ€t mit Starship, Atuin und fzf (github.com);
    • Möglichkeiten zur Serialisierung von AST und Shell-ZustĂ€nden ĂŒber Serde hinzugefĂŒgt;
    • Jetzt sind Serde-Funktionen zur Serialisierung von AST und Shell-ZustĂ€nden in brush-parser und brush-core verfĂŒgbar.

Quelle: linux.org.ru

60GB SSD 8Gb DDR4