Some random GrafanCon EU 2k18 Notes – Telegram
Some random GrafanCon EU 2k18 Notes
73 subscribers
312 photos
9 files
54 links
Заметки по докладам на которые я пошел (начинаются с #talk) и флуд фоточками.

Связаться с автором можно так: @Civiloid
Download Telegram
Например год назад добавили компрессию enum'ов в компилятор, а в дебагер нет и дебагеру снесло крышу
Типичный workflow добавления патчей
1. Попатчить rust-llvm
2. Попатчить rustc
3. Попатчить gdb
4. Заапстримить патчи из №1 в llvm trunk
5. Пройти ревью
6. Бэк-поритровать и вернуться к пункту 1.
Причина почему патчат сначала rust-llvm - потому что там можно обкатать изменения
Почему патчим gdb а не lldb - потому что lldb завязан на Си++ и в нем нет плагинов
Из-за этого патчить gdb намного проще
4 пункт тоже сложен, ведь проходит время и нужно портировать их на новый транк
Прийдя в LLVM Trunk можно обнаружить что нужный уже переписали с нуля и поменяли чуть больше чем все.
Ревью - их оооочень много и они очень тщательные
и есть шанс что ты запатчил, а потом выяснили что стандарт на DWARF понят неверно
и нужно фиксить
А 6-ой пункт еще включает бэкпорт патчей в rust-llvm :)
И такой процесс может занимать пару месяцев
на мелкое изменение
полуготовый ллдб-плагин для раста
Там сделан RustASTContext, RustLanguage классы
В llvm парсинг DWARF на lldb а вот интерпретация на плагине
в gdb вот ваще не так
есть единый модуль который делает ВСЕ
Подход lldb хорош тем что ты не должен знать другой язык кроме своего