Size: a a a

Rust — русскоговорящее сообществo

2020 November 14

KB

Kirill Bulatov in Rust — русскоговорящее сообществo
Yevhenii Babichenko
Можно, а нужно ли?)
Типичные растовопросы, и так на любую проблему: кто-то головастый разок сделал, а чтобы повторить, нужно вбухать неделю на разбирательства и допиливания.
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
Kirill Bulatov
С Го, наверное, так же, я не знаком.
Но решил поделиться чутка наболевшим)
Здесь прост изначально с го сравнили
источник

J

JvK in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Питон — промязык, а раст — игрушка
когда я пришёл в питон лет 15 назад, это тоже была странная игрушка. все будет и с растом хорошо
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Хочу простой логгер для консольного приложения: должен не тормозить и позволять мне задать строку формата самому.
INB4 просто написать три макроса
источник

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
Kirill Bulatov
Типичные растовопросы, и так на любую проблему: кто-то головастый разок сделал, а чтобы повторить, нужно вбухать неделю на разбирательства и допиливания.
На самом деле тоже иногда страдаю, просто мне довольно редко приходится отслеживать утечки
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Mikail Bagishov
Ну в принципе начать трассировку аллокаций наживую можно, но вряд ли кто-то таким занимался.
1. Аттачимся.
2. Быстренько останавливаем процесс.
3. Подгружаем в него so-шку/dll-ку с отладочным аллокатором.
4. Переопределяем malloc & free чтобы они дергали их
5.  Возобновляем процесс.
источник

AK

A Kazus in Rust — русскоговорящее сообществo
Kirill Bulatov
Мои пять копеек: писать обычно приятно и не очень сложно, а вот поддерживать и сопровождать иногда больновато.

Не весь тулинг доведён до ума, не все библиотеки нормально попользованы и вычищены от глупых багов, поэтому иногда, когда что-то ломается, мне, как человеку, избалованному JVM, бывает сложно быстро найти проблему и починить.

Пример: задеплоили приложение, всё, вроде ок.
Начали грузить load тестами — потекла память.
Ну ок, идём смотреть на профайлеры: всё серьёзное только под Linux, анализируют только аллокации, поэтому проблему показывают примерно.
Удалённо подключиться и потрекать память можно, но нужно менять немного сборку проекта, чтобы с кастомным аллокатором запуститься или ставить какие-нибудь доп. профайлеры и запускать ими.
А потом перезапускать тест, ждать и анализировать многогигабайтные дампы.

А в той же Java — подключился удалённо наживую к приложению (порт, конечно, нужно заранее открыть, но ставить или крутить дополнительно ничего не нужно) и сразу видишь всю кучу со всем графом, гуляй по жирным объектами смотри, что они себе в память понаписали, прямо сами данные посмотреть можно.
Хоть дебажь так же, если совсем нужно.

И так примерно со всем: на любой закидон приложения приходится тратить больше времени и сил, чем этого бы хотелось бы.
Но и таких проблемных закидонов сильно меньше, как мне кажется.
Благодарю, интересный опыт, буду иметь ввиду 👍
источник

EG

Emmanuel Goldstein in Rust — русскоговорящее сообществo
Emmanuel Goldstein
Хочу простой логгер для консольного приложения: должен не тормозить и позволять мне задать строку формата самому.
INB4 просто написать три макроса
А, env_logger это умеет, отлично
источник

AK

A Kazus in Rust — русскоговорящее сообществo
Mikail Bagishov
1. Аттачимся.
2. Быстренько останавливаем процесс.
3. Подгружаем в него so-шку/dll-ку с отладочным аллокатором.
4. Переопределяем malloc & free чтобы они дергали их
5.  Возобновляем процесс.
А есть, где почитать про такой умный манёвр подробнее😃?
источник

p

pragus in Rust — русскоговорящее сообществo
Mikail Bagishov
1. Аттачимся.
2. Быстренько останавливаем процесс.
3. Подгружаем в него so-шку/dll-ку с отладочным аллокатором.
4. Переопределяем malloc & free чтобы они дергали их
5.  Возобновляем процесс.
а что, профайлера из коробки нет?
источник
2020 November 15

YB

Yevhenii Babichenko in Rust — русскоговорящее сообществo
pragus
а что, профайлера из коробки нет?
увы нет
источник

KB

Kirill Bulatov in Rust — русскоговорящее сообществo
pragus
а что, профайлера из коробки нет?
Смотря где, обычно нет, кому они на фиг нужны в задеплоенных окружениях? (до первых проблем, хе-хе)
Но я бы лучше всё-таки его ставил, а не занимался некромантией)
источник

KB

Kirill Bulatov in Rust — русскоговорящее сообществo
Под Винду вообще нет, насколько я понимаю, под Макось как бы что-то есть, но нормальной интеграции с чем-то я не видел.
источник

p

pragus in Rust — русскоговорящее сообществo
Kirill Bulatov
Смотря где, обычно нет, кому они на фиг нужны в задеплоенных окружениях? (до первых проблем, хе-хе)
Но я бы лучше всё-таки его ставил, а не занимался некромантией)
Тут сравнивали с go, но в go нормальная практика гонять в проде со включенным профайлером, что позволяет в любой момент снять профиль по cpu/mem/block
источник

KB

Kirill Bulatov in Rust — русскоговорящее сообществo
Ну, видимо, в Rust тоже так будет, куда деваться.
А как с производительностью быть? Или всем по фигу, всё равно web?
источник

p

pragus in Rust — русскоговорящее сообществo
Kirill Bulatov
Ну, видимо, в Rust тоже так будет, куда деваться.
А как с производительностью быть? Или всем по фигу, всё равно web?
так семплирующий профайлер.  насколько я помню, цена вопроса - максимум 10%
источник

KB

Kirill Bulatov in Rust — русскоговорящее сообществo
Да понятно, просто всё равно как-то дико.
источник

АМ

Александр Мещеряков... in Rust — русскоговорящее сообществo
Ну вы же понимаете, что не у всех такие проблемы?)
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
pragus
а что, профайлера из коробки нет?
Я тут рассматриваю случай, когда мы подключаемся к живому процессу, который был собран безо всякого инструментирования.
источник

MB

Mikail Bagishov in Rust — русскоговорящее сообществo
Конечно гораздо проще поставить пару каких-нибудь ключиков при компиляции и перезапустить
источник