
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), предоставляя разработчикам возможность добавлять собственные встроенные команды и изменять поведение переменных без необходимости форка проекта;
- Разное:
- добавлены возможности сериализации AST и состояния оболочки через serde;
- теперь в brush-parser и brush-core доступны функции serde для возможности сериализации AST и состояния оболочки.
سرچینه: linux.org.ru
