LINUX.ORG.RU

Brush v0.4.0

 , brush, ,

Brush v0.4.0

1

4

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 и состояния оболочки.

>>> Подробности на GitHub

★★★★★

Проверено: dataman ()
Последнее исправление: dataman (всего исправлений: 2)

Форк-бомбы работают?

question4 ★★★★★
()

@daemon подскажи, у них на главной гифка анимированная, а здесь просто как рисунок, можно ли как-то анимацию для гифки разрешить? У меня такое ощущение что это когда-то на ЛОРе было.

splinter ★★★★★
() автор топика

с гарантиями безопасности памяти

Гарантия — это когда за просак будет отвечать конкретное лицо или организация, и конкретным образом. Скажем, если бы написано было «в случае утечек памяти разработчики выплатят вам 100 долларов за каждый инцидент», это были бы гарантии, а «мамой клянус, памят на раст хорошо работат будет, вай!» это не гарантии.

Smacker ★★★★★
()
Ответ на: комментарий от splinter

у них на главной гифка анимированная, а здесь просто как рисунок, можно ли как-то анимацию для гифки разрешить?

У меня работает. И работало, когда я свой первый пост писал. Firefox 147.

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 2)
Ответ на: комментарий от question4

то есть у тебя сейчас на главной отображается? Не могу проверить с телефона, чебурнет опять врубили, а ЛОР не в халяльном списке роскома.

splinter ★★★★★
() автор топика
Ответ на: комментарий от splinter

то есть у тебя сейчас на главной отображается?

Нет, эта новость ещё не на главной, но в самой новости анимация работает.

Есть на главной новости с анимацией?

P.S. На странице неподтверждённых GIF заменяется на JPEG.

question4 ★★★★★
()
Последнее исправление: question4 (всего исправлений: 1)

А своё что-то есть? Или задача была просто переписать Bash на Rust? В новости только о совместимости с Bash говорится. Если она хотят догнать Bash, то когда же они догонят Zsh?

scanner
()

bash нужно закапывать, а не переписывать. Гарантировать теоретические утечки памяти – это одно, а гарантировать совместимость с сотней тысяч сишного кода – невыполнимая задача.

kaldeon ★★
()
Ответ на: комментарий от Mishahack

Brush - Btw RUst SHell ?

Та не, наверно: Btw RUst is Shit.

iron ★★★★★
()

Какая-то непонятно зачем нужная штука. Вот я просто не припомню, были у меня когда-то вообще проблемы с bash именно из-за утечек памяти? Вот просто не могу ответить на данный вопрос. А если это так, то на кой ХУдожник Репин мне что-то такое-же, но на расте, если и то - прекрасно работает? На черта такие эксперименты? Ну а ставить не то что клиента, а даже себе в прод вот такое вот я еще разумом не спятил.

DrRulez ★★★★★
()
Ответ на: комментарий от splinter

какого-то daemon’a

Да, я удивился, когда увидел.

старость блин

Вангую, что автодополнение. :)

dataman ★★★★★
()

Памяти ест где-то в 5 раз больше чем Bash.

Комбинации Alt+. и Esc+. - не работают.

Похоже ещё течёт память при автодополнении списка файлов - тест простой: зайти в /usr/bin и потыкать Tab / Esc в цикле.

Сыро.

Ja-Ja-Hey-Ho ★★★★★
()
Ответ на: комментарий от splinter

можно ли как-то анимацию для гифки разрешить?

Лучше не надо.

dataman ★★★★★
()

Лучше уж такое, чем оригинальный баш и его раковая опухоль в виде башизмов.

zabbal ★★★★☆
()
Ответ на: комментарий от kaldeon

bash нужно закапывать

ага, а еще я в неё ем...! :о)

sunjob ★★★★★
()
Ответ на: комментарий от zabbal

чем оригинальный баш и его раковая опухоль в виде башизмов

а можно поподробнее, по пункта, с примерами?! (не стеба ради а понимания ситуации для)

sunjob ★★★★★
()
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от splinter

WD-40 нужно брызнуть :)

// Я, вообще, по заголовку темы, первое, что подумал, что это какой-то новый софт для рисовальщиков :)

yars068 ★★★★★
()
Последнее исправление: yars068 (всего исправлений: 1)

Очень интересный прожект. Возможно он станет тем самым fish для людей, т.к. сохранена совместимость с bash.

MoldAndLimeHoney ★★★
()

А вот эти опасности памяти они с нами в одной комнате?

Dispetcher14 ★★★★★
()

Это ж надо столько ненужно собрать вместе.

wandrien ★★★★
()

Эм, переписывание ради переписывания? И нафиг это нужно?

Что-то я не пойму, под какой лицензией оно? Или я в глаза долблюсь… В файле LICENSE написано ../LICENSE

UriZzz ★★
()
Ответ на: комментарий от kaldeon

Дык в этом-то и прелесть - мы можем запускать кучу легаси-лапши не парясь убогостью и дырявостью запускалки.

zabbal ★★★★☆
()
Ответ на: комментарий от UriZzz

В файле LICENSE написано [LICENSE]

Что непонятного? «Суть лицензии изложена в данном предложении.»

-----END PGP PUBLIC IRONY BLOCK-----
kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 3)

расто-вайб-код ? о да, это безопасно...

MKuznetsov ★★★★★
()

А почему Brush а не bruh?

a1ba ★★★★
()
Ответ на: комментарий от zabbal

Но ведь если запускать легаси-лапшу на альтернативной реализации, она может непредсказуемо выстрелить в ногу. Проблема будет не в новой реализации (она может быть чище и корректнее), а в том, что гарантировать совместимость с монстром вроде баша невозможно.

Легаси-лапшу лучше вообще запускать, привязав её к конкретной версии баша (с патчами безопасности), на которой она была протестирована.

kaldeon ★★
()
Последнее исправление: kaldeon (всего исправлений: 3)
Ответ на: комментарий от Smacker

Гарантия — это когда за просак будет отвечать конкретное лицо или организация, и конкретным образом. Скажем, если бы написано было «в случае утечек памяти разработчики выплатят вам 100 долларов за каждый инцидент», это были бы гарантии, а «мамой клянус, памят на раст хорошо работат будет, вай!» это не гарантии.

Это пустые, голословные обещания, да. :)

Somebody ★★★★
()
Ответ на: комментарий от splinter

у них на главной гифка анимированная, а здесь просто как рисунок, можно ли как-то анимацию для гифки разрешить? У меня такое ощущение что это когда-то на ЛОРе было.

Это «фича» не сайта... Но тут, в комментариях, кто-то упомянул уже, что *.gif может заменяться на *.jpg... Если так, то это именно сайт, и с этим ничего не поделаешь.. Только «в консерватории изменить». ;))

Но вот прямо вот сейчас анимация вполне так себе работает (FF 151.0b3 (64-разрядный))...

Somebody ★★★★
()

Не взлетит как обычно с заменители баша

pihter ★★★★★
()
Ответ на: комментарий от splinter

блин, я кастовал вместо тебя какого-то daemon’a, старость блин.

Вызвал демона на мой лор, и такой, извините, мол, старость, как будто так и надо… :)

pihter ★★★★★
()
Ответ на: комментарий от zabbal

... а на словах просил передать... :о)

sunjob ★★★★★
()
Ответ на: комментарий от Somebody

Но тут, в комментариях, кто-то упомянул уже, что *.gif может заменяться на *.jpg … Но вот прямо вот сейчас анимация вполне так себе работает

Выше разобрались. На главной, на страницах архива новостей, в списке неподтверждённых и т.п. — заменяется на уменьшенный JPEG, в самой теме — показывает оригинальный GIF.

question4 ★★★★★
()
Ответ на: комментарий от question4

Да, я понял, спасибо. :)

Здесь-то уже нормально «фунциклирует»... :))

Somebody ★★★★
()
Последнее исправление: Somebody (всего исправлений: 1)
Ответ на: комментарий от Somebody

А что, у раста есть какие-то другие, что ли? Всё время это бесконечное «но мы же защищаем вас от ошибок с памятью!!!!!!11111одинодинодин». Можно подумать, что так-то ошибки с памятью прямо на каждом шагу, каждый второй запуск rm или mv крашится.

Smacker ★★★★★
()
Ответ на: комментарий от question4

Выше разобрались. На главной, на страницах архива новостей, в списке неподтверждённых и т.п. — заменяется на уменьшенный JPEG, в самой теме — показывает оригинальный GIF.

У меня и в самой теме не показывает (ungoogled-chromium 141.0.7390.65).

err
()
Ответ на: комментарий от zabbal

Дык в этом-то и прелесть - мы можем запускать кучу легаси-лапши не парясь убогостью и дырявостью запускалки.

так наоборот же
была запускалка, которая отлаживалась десятки лет
а теперь кот в мешке, да ещё и прожорливый

madcore ★★★★★
()
Ответ на: комментарий от question4

Нет, ничего такого. На гитхаб проекта показывает.

err
()
Ответ на: комментарий от Smacker

А что, у раста есть какие-то другие, что ли?

Не знаю: и не отслеживаю эту «повесточку», да и не интересно мне это... :))

Всё время это бесконечное «но мы же защищаем вас от ошибок с памятью!!!!!!11111одинодинодин». Можно подумать, что так-то ошибки с памятью прямо на каждом шагу, каждый второй запуск rm или mv крашится.

Не, сказки я в детстве любил, но это было та-а-ак давно-о-о... ;))

А сейчас я в сказки больше не верю. Даже в такие. :)

Somebody ★★★★
()
Ответ на: комментарий от madcore

а теперь кот в мешке, да ещё и прожорливый

Странно... И даже интересно, в каких питомниках вы таких (с)котиков берёте... У меня по сей день вполне приличный котейка... Не переедает... ;))

Somebody ★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.