Препроцессор в Go: как автоматически встроить OpenTelemetry в проект

Инфраструктура и эксплуатация

GO
Теория

Доклад принят в программу конференции

Целевая аудитория

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

Тезисы

В Go, насколько мы знаем, отсутствуют встроенные механизмы препроцессинга — у нас нет ни стандартного препроцессора, ни системы макросов. Но значит ли это, что нельзя написать свой?

Я расскажу о том, как зная детали работы тулчейна Go можно реализовать свой собственный препроцессор. Мы рассмотрим как общий подход к построению препроцессинга, так и конкретный практический пример в виде автоматического инструментария кода трейсами OpenTelemetry.

В ходе доклада мы с вами:
* узнаем о методе встраивания в компилятор (и почему сами авторы Go добавили это в язык);
* выясним, какие фазы компиляции представляют наибольший интерес;
* наметим общее решение для препроцессинга и научимся обманывать компилятор;
* столкнемся с проблемами восстановления импортов и героически их решим;
* рассмотрим работу кеширования во время компиляции в Go и как нам это поможет;
* применим все это на практике;
* рассмотрим, конечно же, проблемы и ограничения такого подхода.

Марк Чолак

Смартомато

7 лет опыта коммерческой разработки на бэкенде в FoodTech сегменте.
Молниеносно решаю проблемы бизнеса и коллег.

Видео