Spec-Zone.ru › Kotlin 1.7

ЧАВО

Почему 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, включая предварительные версии (Бета или RC).

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

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

  • Android Gradle Plugin 4.1.0+

  • Gradle 6.5+

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

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

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

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

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

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

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

Последнее изменение: 06 сентября 2022
Запуск KSP из командной строки Kotlin и непрерывная интеграция с TeamCity

© 2010–2022 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