ជក់ កំណែ ០.៤.០

ជក់ កំណែ ០.៤.០

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 для совместимости со ផ្កាយ, atuin и fzf (github.com);
    • добавлены возможности сериализации AST и состояния оболочки через serde;
    • теперь в brush-parser и brush-core доступны функции serde для возможности сериализации AST и состояния оболочки.

ប្រភព: linux.org.ru

បន្ថែមមតិយោបល់