Новости
Google ускоряет сборку Kotlin с Kotlin Symbol Processing 1.0
KSP предлагает аналогичные функции Kotlin Annotation Processing Tool (KAPT), однако он работает до 2 раз быстрее, предлагает прямой доступ к конструкциям языка Kotlin и поддерживает многоплатформенные таргеты.
Google выпустил Kotlin Symbol Processing (KSP). KSP предлагает аналогичные функции Kotlin Annotation Processing Tool (KAPT), однако он работает до 2 раз быстрее, предлагает прямой доступ к конструкциям языка Kotlin и поддерживает многоплатформенные таргеты.
За последние несколько месяцев у KSP вышло 32 релиза, в которых было исправлено более 160 ошибок. Если вы ждали, чтобы начать использовать этот инструмент, то сейчас самое время, пишет Google.
Зачем сделали KSP
В команде Android регулярно спрашивают разработчиков: что вас сегодня больше всего разочаровывает в написании приложений? Одна из главных проблем, которая возникает постоянно — это скорость сборки. На протяжении многих лет Google постоянно улучшал инструментарий Android-сборки, и сегодня в нем появился стабильный KSP. KSP — это следующее поколение обработки аннотаций в Kotlin: он значительно повысит скорость сборки для разработчиков Kotlin и, в отличие от KAPT, предлагает поддержку Kotlin/Native и Kotlin/JS.
Почему KSP быстрее?
Kotlin Annotation Processing Tool (KAPT) работает с инфраструктурой обработки аннотаций Java, чтобы заставить большинство процессоров аннотаций языка Java работать в Kotlin из коробки. Для этого KAPT компилирует код Kotlin в заглушки (stubs) Java, которые сохраняют информацию, которая важна для процессоров аннотаций Java. Однако создание этих заглушек является “дорогостоящим” и означает, что компилятор должен разрешать все символы в вашей программе несколько раз (один раз для создания заглушек, а затем еще раз для выполнения фактической компиляции).
KSP отходит от модели генерации заглушек, работая как плагин компилятора Kotlin — он позволяет обработчикам аннотаций читать и анализировать исходные программы и ресурсы непосредственно в Kotlin, вместо того, чтобы требовать от вас зависимости от инфраструктуры обработки аннотаций Java. Это значительно увеличивает скорость сборки (до 2 раз быстрее для тестового приложения Kotlin с Room) и означает, что KSP можно использовать для сред без Android и без JVM, таких как Kotlin/Native и Kotlin/JS.
С чего начать
Чтобы начать использовать KSP, загрузите проект KSP Playground с GitHub, в котором показано, как использовать KSP как в качестве обработчика аннотаций, так и в качестве приложения/библиотеки.
Если вы разработчик приложений, ознакомьтесь со списком поддерживаемых библиотек и кратким руководством по переносу модуля с KAPT на KSP.