Компиляторные плагины — потрясающая фича, которая позволяет нам, обычным разработчикам, почувствовать себя в шкуре системных программистов без зазубривания теории компиляции, педантичной поддержки краевых случаев разных платформ и написания собственных лексеров c парсерами. Вместо этого мы можем сразу работать с абстрактными синтаксическими деревьями (AST) или любым другим промежуточным представлением (IR) и изменять код программ или процесс компиляции под себя.
Возможность кастомизировать процесс компиляции и добавлять в него небольшие улучшения будет полезна каждому. Ярким примером является широко известный среди разработчиков Kotlin Spring плагин 'allopen'. В грядущем релизе Kotlin 2.0 писать компиляторные плагины станет еще проще, т.к. в нем вводятся новые сопособы взаимодействия, как с компиляторным фронтендом, так и бэкендом.
В докладе обсудим, почему компиляторные плагины так полезны и рассмотрим примеры компиляторов для различных языков с такой функциональностью. Кроме того, посмотрим на последние веяния и тренды в этой области с учетом приближающегося релиза Kotlin 2.0: заглянем в кишочки его компиляторного плагина и даже попробуем написать свой маленький плагин для компилятора Kotlin.