Spec-Zone.ru › Kotlin 1.6

ЧаВО

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

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

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

  • Android Gradle Plugin 4.1.0+

  • Gradle 6.5+

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

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

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

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

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

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

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

Последнее изменение: 07 апреля 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