Brush v0.4.0

Brush е команден шел, написан на Rust, който съчетава съвместимост с POSIX и Bash с гаранции за безопасност на паметта и производителност. Проектът е насочен към това да стане пълноценна алтернатива на традиционните шелове, позволявайки изпълнението на съществуващи скриптове и използването на .bashrc почти без промени. Тази версия обединява няколко месеца работа и повече от 200 обединени пулл реквести, значително напредвайки по пътя на заместването на Bash и POSIX-съвместими среди.

Основни направления на развитие в този релиз:

  • съвместимост с Bash: добавени set -e, set -u, pipefail, failglob, обработчик ERR, сопроцеси и много други;
  • надеждност: подобрена обработка на изключителни случаи – затворени канали, повреден изход, не-UTF8 история и други;
  • платформи: разширена поддръжка за macOS (работа като влязъл шел), подобрено функциониране на Windows, FreeBSD, Android и 32-битови системи;
  • интерактивност: добавени опционални TOML конфигурации, preexec/precmd хукове, подобрена поддръжка на макроси readline и друго.

Ключови подобрения в съвместимостта с Bash

Най-важните доработки в този релиз са значително разширяване на поддръжката на възможностите на Bash. Управление на грешките:

  • set -e (errexit) – незабавно излизане при грешка;
  • set -u (nounset) – грешка при опит за достъп до неустановена променлива;
  • pipefail – кодът на връщане на конвейера се определя от последната провалена команда;
  • failglob – липсата на съвпадения за glob-израз сега води до грешка.

Обработчици (Traps) и сопроцеси:

  • обработчик ERR – позволява изпълнение на команди при възникване на грешка;
  • сопроцеси (coproc) – стартиране на фонови процеси с двустранна връзка.

Вградените команди:

  • подобрена обработка на много аритметични конструкции, включително литерали с висока основа, препълвания и оператори за присвояване;
  • поправки и подобрения засегнаха вградените команди: caller, read, getopts, printf и други.

Разширяване на поддръжката на платформи:

Релиз v0.4.0 прави шела достъпен на по-широк спектър от устройства:

  • macOS: решен е проблем, при който шелът зацикляше при влизане. Сега brush може да се използва като входен шел (login shell);
  • Windows: подобрения в обработката на пътища, добавена е емулация на /dev/null, което значително повишава удобството на ползване на Windows;
  • FreeBSD и Android: поддържа се изграждане за тези платформи;

Интерактивни възможности и API

  • Конфигурация: добавена е поддръжка на опционалния TOML конфигурационен файл (~/.config/brush/config.toml) за настройки, специфични за brush;
  • Персонализация: реализирани са zsh стилове за preexec/precmd хукове (при експерименталния флаг), полезни за създаване на персонализирани покани и инструменти за измерване на време;
  • API за разработчици: тип Shell сега е параметризирано с разширения (ShellExtensions), предоставяйки на разработчиците възможност да добавят свои собствени вградени команди и да променят поведението на променливите без необходимост от форкване на проекта;
  • Разнообразно:
    • подобрена е поддръжката на макроси readline за съвместимост с starship, atuin и fzf (github.com);
    • добавени са възможности за сериализация на AST и състоянието на командната оболочка чрез serde;
    • сега в brush-parser и brush-core са налични функции serde за сериализация на AST и състоянието на командната оболочка.

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster