Компания Google представила альфа-версию Kotlin Symbol Processing (KSP) – API для создания облегченных плагинов компилятора в языке Kotlin.
Подобно плагину компилятора Kapt, предназначенному для обработки аннотаций, но работающему, по отзывам, быстрее, KSP предлагает прямой доступ к возможностям компилятора Kotlin. Реализованный в качестве плагина компилятора, KSP предназначен для внесения в компилятор малоизвестных изменений и минимизации усилий по технической поддержке.
KSP имеет API для прямого разбора кода Kotlin, что позволяет уменьшить накладные расходы, связанные с генерацией заглушек Kapt и замедляющие процесс компиляции. В бюллетене Google, опубликованном 10 февраля, говорится, что Kotlin сталкивается с нехваткой собственной системы обработки аннотаций, хотя для этого языка созданы процессоры аннотаций, например, Room.
Библиотека, поддерживающая KSP, напоминает обычный процессор аннотаций, но работает быстрее. Стоит заметить, что использование Kapt и KSP в одном модуле скорее всего замедляет первоначальное выполнение сборки. Поэтому рекомендуется, чтобы в альфа-версии KSP и Kapt поддерживались в отдельных модулях. Ожидается, что по мере поддержки KSP новыми процессорами аннотаций этот инструмент придет на смену Kapt.
Язык Kotlin уже сейчас используется для разработки приложений Android. А KSP разрабатывался с тем, чтобы сделать его мультиплатформенным и не привязанным к JVM. Обеспечивая совместимость с Kotlin 1.34.0, KSP, по сути, играет роль фреймворка препроцессора для программ Kotlin.
Исходный код и документация KSP находятся на GitHub. Посмотреть на KSP в действии можно в проекте KSP Playground, ссылка на который представлена в бюллетене проекта. Поскольку API еще находится в процессе разработки и, вероятно, будет подвергаться изменениям, использовать KSP в производстве пока не рекомендуется.