
Brush — это современная командная оболочка, написанная на языке Rust. Проект объединяет строгое соответствие стандартам POSIX и Bash с преимуществами Rust: высокой производительностью и гарантированной безопасностью памяти. Основная цель разработчиков — создать полноценную альтернативу традиционным шеллам, которая позволит запускать существующие скрипты и использовать конфигурационные файлы .bashrc практически без правок.
Релиз версии 0.4.0 стал итогом многомесячной работы сообщества, включающей интеграцию более 200 пулл-реквестов. Это обновление значительно приближает Brush к статусу полноценной замены Bash.
Ключевые направления развития в версии 0.4.0:
- Расширенная совместимость: добавлена поддержка
set -e,set -u,pipefail,failglob, обработчиковERR, сопроцессов и многих других механизмов. - Повышенная надёжность: проведена работа над ошибками при обработке нестандартных ситуаций, включая закрытые каналы, поврежденный вывод и историю, содержащую не-UTF8 символы.
- Кроссплатформенность: улучшена поддержка macOS (включая работу в качестве шелла входа), а также оптимизирована стабильность на Windows, FreeBSD, Android и 32-битных архитектурах.
- Интерактивность: появилась поддержка конфигурационных TOML-файлов, хуков
preexec/precmd, а также расширена работа с макросами readline.
Ключевые улучшения Bash-совместимости
Важнейшим достижением этого выпуска стало внедрение критических инструментов для управления выполнением скриптов и обработки ошибок:
- Управление ошибками: реализованы флаги
set -e(немедленный выход при ошибке),set -u(ошибка при обращении к необъявленной переменной),pipefail(код возврата конвейера зависит от последней упавшей команды) иfailglob(ошибка при отсутствии совпадений в glob-выражениях). - Обработчики и сопроцессы: добавлен обработчик
ERRдля выполнения команд при возникновении сбоев, а также полноценная поддержка сопроцессов (coproc) для организации двусторонней связи с фоновыми процессами. - Встроенные команды: существенно доработана математическая логика, включая работу с литералами с высоким основанием и исправление переполнений. Обновления затронули встроенные команды
caller,read,getopts,printfи ряд других.
Расширение поддержки платформ
Новая версия делает Brush более доступным инструментом для различных операционных систем:
- macOS: устранена ошибка, приводившая к зависанию оболочки при входе, что позволяет использовать Brush в качестве login shell.
- Windows: оптимизирована обработка путей и добавлена эмуляция
/dev/null, что делает работу с командной строкой в этой среде более естественной. - FreeBSD и Android: обеспечена стабильная сборка и запуск на данных платформах.
Интерактивные возможности и API
Помимо расширения функционала Bash, разработчики добавили ряд инструментов для глубокой настройки:
- Конфигурация: теперь можно использовать файл
~/.config/brush/config.tomlдля индивидуальных настроек оболочки. - Кастомизация: реализованы экспериментальные хуки
preexec/precmd(аналог Zsh), которые позволяют гибко настраивать приглашение командной строки и добавлять инструменты замера времени выполнения команд. - API для разработчиков: тип
Shellтеперь параметризован черезShellExtensions. Это позволяет сторонним разработчикам создавать собственные встроенные команды и изменять логику работы переменных без необходимости вмешательства в исходный код (форка) самого проекта. - Интеграция: улучшена поддержка макросов readline для корректной работы с популярными инструментами, такими как starship, atuin и fzf. Также добавлены возможности сериализации AST и состояния оболочки через библиотеку serde в модулях
brush-parserиbrush-core.






