при компиляции я вставляю в методы код, который проверяет есть ли апдейт. если есть, то вызываем его
если нет, то продолжаем выполнение
Nikita Tsukanov
@kekekeks
а, то есть инструментация всего и вся
Mihhail Maslakov
@ionoy
угу
можно добавлять типы, члены типов и т.д.
есть ограничения конечно, но для базовых вещей работает неплохо
Nikita Tsukanov
@kekekeks
а апдейты ты докомпилируешь рослином?
Mihhail Maslakov
@ionoy
да
потом сериализую в XML и десериализую в ET
но рослин только на стороне разработчика, так что приложение не становится от этого тяжелее
что важно для мобильников, ну и вообще для скорости выполнения
Nikita Tsukanov
@kekekeks
т. е. MSIL конвертируется в итоге в ET
занятно
Mihhail Maslakov
@ionoy
сейчас это скорее Roslyn AST -> ET
хочу перейти на Roslyn IOperation -> ET
но работы и так дофига
ищу людей, кстати. так что если есть кто толковый на примете, посоветуйте пожалуйста
зарплату могу волне нормальную обеспечить
Nikita Tsukanov
@kekekeks
а по перфомансу твоё чудо-решение как?
это ж на каждый вызов проверки надо делать
плюс инлайнинг JIT-ом
Mihhail Maslakov
@ionoy
это инструмент времени разработки. если есть метод, который реально вызывается миллион раз в секунду, то его можно добавить в исключения
вообще я первоначально не предполагал инструментировать все методы по умолчанию
но мне кажется это будет более юзер-френдли вариант, чем заставлять пользователя вручную каждый метод добавлять
_
Nikita Tsukanov
@kekekeks
ну так-то да
посмотри ещё в сторону API профайлеров
Mihhail Maslakov
@ionoy
а так перформанс очень даже нормальный, на тех платформах которые поддерживают Emit и не полагаются на интерпретатор
Nikita Tsukanov
@kekekeks
в моне и неткоре
Mihhail Maslakov
@ionoy
мне кажется они не кроссплатформены, не?
я когда смотрел в эту сторону
Nikita Tsukanov
@kekekeks
есть такое, да
но для инструментации можно их использовать
в качестве более быстрых бакэндов
если у тебя сборка под netcoreapp, то туда можно профайлер воткнуть
Mihhail Maslakov
@ionoy
вообще надо будет эту тему изучить, ты прав
я их когда-то откинул, и больше не брался
Nikita Tsukanov
@kekekeks
тот же newrelic через апи профайлера код инструментирует
и инжектит свои заголовки в HttpClient, например
Mihhail Maslakov
@ionoy
интересная штука, не слышал о них
я как раз думал сделать упор на "умный" дебаг
Nikita Tsukanov
@kekekeks
это очень недешёвый инструмент для мониторинга и сбора трейсов в гетерогенной серверной инфраструктуре
т. е. у тебя вызов проходит цепочкой через 5 микросервисов на .NET, Java, Python, Go
где-то в сервисе на Go делается очень медленный запрос к базе
и ты в веб-интерфейсе видишь, что вот этот конкретный медленный запрос к базе из сервиса на Go произошёл из-за того что дёрнули апишку в дотнетном вебапи
Mihhail Maslakov
@ionoy
то есть он инструментирует всё что только можно?
Nikita Tsukanov
@kekekeks
ну на дотнете он инструментирует серверную часть ASP.NET, HttpClient и все популярные коннекторы к базам
просто из коробки
ты подключаешь из модуль через переменную окружения