Brush v0.4.0

Brush v0.4.0

Brush to powłoka komend napisana w języku Rust, która łączy zgodność z POSIX i Bash z gwarancjami bezpieczeństwa pamięci oraz wydajnością. Projekt ma na celu stanie się pełnoprawną alternatywą dla tradycyjnych powłok, umożliwiając uruchamianie istniejących skryptów i korzystanie z .bashrc praktycznie bez zmian. Ta wersja łączy kilka miesięcy pracy i ponad 200 scalonych pull-requestów, znacząco posuwając powłokę w kierunku pełnoprawnej alternatywy dla Bash i środowisk zgodnych z POSIX.

Główne kierunki rozwoju w tym wydaniu:

  • zgodność z Bash: dodano set -e, set -u, pipefail, failglob, obsługa ERR, współprocesy i wiele innych;
  • niezawodność: poprawiona obsługa wyjątkowych przypadków – zamkniętych kanałów, uszkodzonego wyjścia, historii nie-UTF8 i innych;
  • platformy: rozszerzona obsługa macOS (działanie jako powłoka logowania), poprawione działanie w Windows, FreeBSD, Androidzie i systemach 32-bitowych;
  • interaktywność: dodano opcjonalne pliki konfiguracyjne TOML, haki preexec/precmd, poprawiono obsługę makr readline i inne.

Kluczowe poprawki zgodności z Bash

Najważniejszymi usprawnieniami tego wydania było znaczące rozszerzenie wsparcia dla możliwości Bash. Zarządzanie błędami:

  • set -e (errexit) – natychmiastowe wyjście w przypadku błędu;
  • set -u (nounset) – błąd przy odwołaniu się do niezadeklarowanej zmiennej;
  • pipefail – kod wyjścia potoku określany jest przez ostatnią nieudającą się komendę;
  • failglob – brak dopasowań dla wzoru glob teraz prowadzi do błędu.

Obsługiwacze (Traps) i współprocesy:

  • obsługiwacz ERR – umożliwia wykonywanie komend przy wystąpieniu błędu;
  • współprocesy (coproc) – uruchamianie procesów w tle z dwukierunkową komunikacją.

Wbudowane komendy:

  • poprawiona obsługa wielu konstrukcji arytmetycznych, w tym literalów z wysoką podstawą, przepełnień i operatorów przypisywania;
  • poprawki i usprawnienia dotyczyły wbudowanych komend: caller, read, getopts, printf i innych.

Rozszerzenie wsparcia dla platform:

Wydanie v0.4.0 sprawia, że powłoka jest dostępna na szerszej gamie urządzeń:

  • macOS: naprawiono problem, przez który powłoka zawieszała się podczas logowania. Teraz brush można używać jako powłokę logowania (login shell);
  • Windows: poprawki w obsłudze ścieżek, dodana emulacja /dev/null, co znacznie zwiększa wygodę użytkowania w Windows;
  • FreeBSD i Android: wsparcie dla tych platform jest dostępne;

Interaktywne funkcje i API

  • Konfiguracja: dodano wsparcie dla opcjonalnego pliku konfiguracyjnego TOML (~/.config/brush/config.toml) dla ustawień specyficznych dla brush;
  • Personalizacja: wprowadzono style zsh dla preexec/precmd hooków (pod flagą eksperymentalną), przydatnych do tworzenia niestandardowych zaproszeń i narzędzi do pomiaru czasu;
  • API dla deweloperów: typ Shell jest teraz parametryzowany rozszerzeniami (ShellExtensions), co daje deweloperom możliwość dodawania własnych wbudowanych poleceń i zmiany zachowania zmiennych bez konieczności forka projektu;
  • Różne:
    • ulepszona obsługa makr readline dla zgodności z starship, atuin i fzf (github.com);
    • dodano możliwości serializacji AST i stanu powłoki za pomocą serde;
    • funkcje serde do serializacji AST i stanu powłoki są teraz dostępne w brush-parser i brush-core.

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster