Spec-Zone.ru › Kotlin 1.9

KSP FAQ

Почему KSP?

KSP имеет несколько преимуществ перед kapt:

  • Он быстрее.

  • API более удобен для пользователей Kotlin.

  • Он поддерживает обработку нескольких раундов сгенерированных Kotlin-источников.

  • Он разрабатывается с учетом совместимости с несколькими платформами.

Почему KSP быстрее, чем kapt?

kapt должен анализировать и разрешать каждую ссылку на тип для генерации Java-заглушек, тогда как KSP разрешает ссылки по требованию. Делегирование в javac также занимает время.

Кроме того, модель инкрементной обработки KSP имеет более тонкую гранулярность, чем просто изоляция и агрегирование. Она находит больше возможностей для избежания повторной обработки всего. Кроме того, поскольку KSP отслеживает разрешения символов динамически, изменение файла с меньшей вероятностью повлияет на другие файлы, а значит, набор файлов для повторной обработки будет меньше. Это невозможно для kapt, поскольку он делегирует обработку javac.

KSP специфичен для Kotlin?

KSP также может обрабатывать Java-источники. API унифицирован, то есть при разборе Java-класса и Kotlin-класса KSP получает унифицированную структуру данных.

Как обновить KSP?

KSP имеет API и реализацию. API редко изменяется и обратной совместим: могут появляться новые интерфейсы, но старые интерфейсы никогда не изменяются. Реализация связана с конкретной версией компилятора. С новой версией поддерживаемая версия компилятора может измениться.

Обработчики зависят только от API и поэтому не привязаны к версиям компилятора. Однако пользователям обработчиков необходимо повысить версию KSP при повышении версии компилятора в своём проекте. В противном случае произойдёт следующая ошибка:

ksp-a.b.c is too old for kotlin-x.y.z. Please upgrade ksp or downgrade kotlin-gradle-plugin

Пользователям обработчиков не нужно повышать версию обработчика, потому что обработчики зависят только от API.

Например, какой-то обработчик выпущен и протестирован с KSP 1.0.1, который строго зависит от Kotlin 1.6.0. Чтобы заставить его работать с Kotlin 1.6.20, единственное, что вам нужно сделать, это повысить KSP до версии (например, KSP 1.1.0), которая построена для Kotlin 1.6.20.

Можно ли использовать более новую реализацию KSP со старой версией компилятора Kotlin?

Если версия языка одинаковая, компилятор Kotlin должен быть обратной совместим. Повышение версии компилятора Kotlin обычно должно быть тривиальным. Если вам нужна более новая реализация KSP, пожалуйста, соответствующим образом обновите компилятор Kotlin.

Как часто вы обновляете KSP?

KSP старается максимально придерживаться Семантического управления версиями. С версией KSP major.minor.patch,

  • major зарезервировано для несовместимых изменений API. Нет заранее определённого графика для этого.

  • minor зарезервировано для новых функций. Это будет обновляться примерно один раз в квартал.

  • patch зарезервировано для исправления ошибок и новых версий Kotlin. Обновление происходит примерно раз в месяц.

Обычно соответствующая версия KSP доступна в течение нескольких дней после выхода новой версии Kotlin, включая предварительные версии (Beta или RC).

Помимо Kotlin, есть ли другие требования к версиям библиотек?

Вот список требований к библиотекам/инфраструктурам:

  • Android Gradle Plugin 4.1.0+

  • Gradle 6.5+

Какие планы на будущее KSP?

Были запланированы следующие пункты:

  • Поддержка новой версии компилятора Kotlin

  • Улучшение поддержки многоплатформенности. Например, выполнение KSP на подмножестве целевых платформ/обмен вычислениями между целевыми платформами.

  • Улучшение производительности. Есть много оптимизаций!

  • Продолжать исправлять ошибки.

Пожалуйста, не стесняйтесь обращаться к нам в канале #ksp в Kotlin Slack (получить приглашение), если вы хотите обсудить какие-либо идеи. Также приветствуются сообщения об ошибках/запросы функций или pull-запросы на GitHub!

Последнее изменение: 05 апреля 2023
Запуск KSP из командной строки Обзор обучающих материалов

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/ksp-faq.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API