Spec-Zone.ru › Kotlin 2
Руководство по совместимости для Kotlin 2.3.x Поддержание современности языка и удобство обновлений — одни из основных принципов проектирования языка Kotlin. Первый гласит, что конструкции, препятствующие развитию языка, следует удалять, а второй — что об этом удалении нужно заранее сообщать, чтобы переход кода был как можно более плавным.
Хотя о большинстве изменений языка уже сообщалось по другим каналам, например в журналах изменений или предупреждениях компилятора, в этом документе они собраны вместе и приведена полная справочная информация о переходе с Kotlin 2.2 на Kotlin 2.3. Здесь также содержатся сведения об изменениях, связанных с инструментами.
Основные термины
В этом документе рассматриваются несколько видов совместимости:
исходная : изменение, нарушающее исходную совместимость, не позволяет скомпилировать код, который раньше компилировался без ошибок и предупреждений
бинарная : два бинарных артефакта считаются бинарно совместимыми, если их взаимная замена не приводит к ошибкам загрузки или связывания
поведенческая : изменение считается нарушающим поведенческую совместимость, если одна и та же программа ведет себя по-разному до и после его применения
Обратите внимание, что эти определения приведены только для чистого Kotlin. Совместимость кода Kotlin с точки зрения других языков (например, Java) выходит за рамки этого документа.
Язык
Отказ от поддержки -language-version для версий 1.8 и 1.9
Проблема : KT-76343 , KT-76344 .
Компонент : компилятор
Тип несовместимого изменения : исходная совместимость
Краткое описание : начиная с Kotlin 2.3 компилятор больше не поддерживает -language-version=1.8 . Поддержка -language-version=1.9 также прекращена для платформ, отличных от JVM.
Цикл устаревания :
2.2.0: выдавать предупреждение при использовании -language-version с версиями 1.8 и 1.9
2.3.0: повысить предупреждение до ошибки для -language-version с версией 1.8 на всех платформах и с версией 1.9 на платформах, отличных от JVM
Выдавать ошибки о нарушении ограничения верхней границы для выведенных типов с псевдонимами типов
Проблема : KTLC-287
Компонент : основной язык
Тип несовместимого изменения : исходная совместимость
Краткое описание : ранее компилятор никогда не выдавал ошибки о нарушении ограничений верхней границы для выведенных типов. В Kotlin 2.3.0 это исправлено: теперь ошибка последовательно выдается для всех параметров типа.
Цикл устаревания :
2.2.20: выдавать предупреждения об устаревании при нарушении границ неявными аргументами типа
2.3.0: повысить предупреждение до ошибки для UPPER_BOUND_VIOLATED при использовании неявных аргументов типа
Запретить аннотацию @JvmSerializableLambda для лямбд inline и crossinline
Проблема : KTLC-9
Компонент : основной язык
Тип несовместимого изменения : исходная совместимость
Краткое описание : теперь нельзя применять аннотацию @JvmSerializableLambda к лямбдам inline или crossinline. Эти лямбды не сериализуемы, поэтому применение @JvmSerializableLambda не давало эффекта.
Цикл устаревания :
Запретить делегирование интерфейса Kotlin классу Java, если обобщенные сигнатуры не совпадают
Проблема : KTLC-267
Компонент : основной язык
Тип несовместимого изменения : исходная совместимость
Краткое описание : Kotlin 2.3.0 запрещает делегирование классу Java, который реализует метод обобщенного интерфейса с помощью необобщенного переопределения. Ранее такое поведение могло приводить к несовпадению типов и к возникновению ClassCastException во время выполнения. Теперь ошибка возникает во время компиляции, а не выполнения.
Цикл устаревания :
Устаревшее использование return в функциях с телом-выражением без явно указанного типа возвращаемого значения
Проблема : KTLC-288
Компонент : основной язык
Тип несовместимого изменения : исходная совместимость
Краткое описание : в Kotlin использование return внутри тел-выражений теперь считается устаревшим, если тип возвращаемого значения функции не объявлен явно.
Цикл устаревания :
Запретить наследование от nullable-супертипов, введенных через псевдоним типа
Проблема : KTLC-279
Компонент : основной язык
Тип несовместимого изменения : исходная совместимость
Краткое описание : теперь Kotlin выдает ошибку при попытке наследования от nullable-псевдонима типа, что соответствует уже существующей обработке прямых nullable-супертипов.
Цикл устаревания :
Унифицировать генерацию обобщенных сигнатур для лямбд верхнего уровня и аргументов вызова
Проблема : KTLC-277
Компонент : рефлексия
Тип несовместимого изменения : поведенческая совместимость
Краткое описание : в Kotlin 2.3.0 для лямбд верхнего уровня используется та же логика проверки типов, что и для лямбд, передаваемых в качестве аргументов вызова. Это обеспечивает единообразную генерацию обобщенных сигнатур в обоих случаях.
Цикл устаревания :
Запретить вывод reified-параметров типа как типов-пересечений
Проблема : KTLC-13
Компонент : основной язык
Тип несовместимого изменения : исходная совместимость
Краткое описание : в Kotlin 2.3.0 запрещены случаи, когда reified-параметр типа выводится как тип-пересечение, поскольку это может привести к некорректному поведению во время выполнения.
Цикл устаревания :
2.1.0: выдавать предупреждение, если reified-параметр типа выводится как тип-пересечение
2.3.0: повысить предупреждение до ошибки
Запретить раскрытие менее видимых типов через ограничения параметров типа
Проблема : KTLC-275
Компонент : основной язык
Тип несовместимого изменения : исходная совместимость
Краткое описание : в Kotlin 2.3.0 запрещено использовать ограничения параметров типа, раскрывающие типы с более строгим уровнем видимости, чем у самой функции или объявления. Таким образом, правила для функций приводятся в соответствие с уже действующими правилами для классов.
Цикл устаревания :
Стандартная библиотека
Устаревшие преобразования Char в число и новые явные API для получения цифры и кода
Проблема : KTLC-321
Компонент : kotlin-stdlib
Тип несовместимого изменения : исходная совместимость
Краткое описание : в Kotlin 2.3.0 преобразования Char.toX() и X.toChar() для числовых типов объявлены устаревшими. Добавлены новые явные API для получения кода символа и значения цифры.
Цикл устаревания :
1.4.30: добавить новые функции в статусе Experimental
1.5.0: перевести новые функции в статус Stable; выдавать предупреждения для старых функций с рекомендациями по замене
2.3.0: повысить предупреждения до ошибок
Устаревшая функция Number.toChar()
Проблема : KT-56822
Компонент : kotlin-stdlib
Тип несовместимого изменения : исходная совместимость
Краткое описание : функция Number.toChar() объявлена устаревшей. Вместо нее используйте toInt().toChar() или конструктор Char.
Цикл устаревания :
Устаревшая функция String.subSequence(start, end)
Проблема : KTLC-282
Компонент : kotlin-stdlib
Тип несовместимого изменения : исходная совместимость
Краткое описание : функция String.subSequence(start, end) объявлена устаревшей. Вместо нее используйте функцию String.subSequence(startIndex, endIndex) .
Цикл устаревания :
1.0: выдавать предупреждение при использовании String.subSequence(start, end)
2.3.0: повысить предупреждение до ошибки
Устаревшие функции kotlin.io.createTempDirectory() и kotlin.io.createTempFile()
Проблема : KTLC-280
Компонент : kotlin-stdlib
Тип несовместимого изменения : исходная совместимость
Краткое описание : после длительного периода устаревания функция InputStream.readBytes(estimatedSize: Int = DEFAULT_BUFFER_SIZE): ByteArray теперь скрыта.
Цикл устаревания :
Проблема : KT-81431
Компонент : Kotlin/Native
Тип несовместимого изменения : поведенческая совместимость
Краткое описание : при форматировании трассировки стека исключения дополнительные причины не выводятся, если причина этого же исключения уже была выведена.
Цикл устаревания :
Исправить поведение Iterable<T>.intersect() и Iterable<T>.subtract()
Проблема : KTLC-268
Компонент : kotlin-stdlib
Тип несовместимого изменения : поведенческая совместимость
Краткое описание : функции Iterable<T>.intersect() и Iterable<T>.subtract() теперь проверяют принадлежность каждого элемента получателя перед его добавлением в результирующее множество. Результирующее множество сравнивает элементы с помощью Any::equals, обеспечивая правильный результат, даже если в коллекции-аргументе используется ссылочное равенство (например, IdentityHashMap.keys).
Цикл устаревания :
Предупреждение о неподдерживаемой версии KGP при использовании плагинов kotlin-dsl и kotlin("jvm")
Проблема : KT-79851
Компонент : Gradle
Тип несовместимого изменения : поведенческое
Краткое описание : В Kotlin 2.3, если в проекте Gradle используются оба плагина: kotlin-dsl и kotlin("jvm"), может появиться предупреждение Gradle о неподдерживаемой версии плагина Kotlin для Gradle (KGP).
Действия по миграции :
В целом мы не рекомендуем использовать плагины kotlin-dsl и kotlin("jvm") в одном проекте Gradle. Такая конфигурация не поддерживается.
Для плагинов соглашений, предварительно скомпилированных плагинов скриптов или любой другой формы неопубликованной логики сборки есть три варианта:
Не применяйте плагин kotlin("jvm") явно. Вместо этого позвольте плагину kotlin-dsl автоматически предоставить совместимую версию KGP.
Если вы хотите явно применить плагин kotlin("jvm"), используйте константу embeddedKotlinVersion , чтобы указать встроенную версию Kotlin.
Чтобы обновить встроенную версию Kotlin и версию языка, обновите версию Gradle. Совместимые версии Gradle можно найти в примечаниях Gradle о совместимости с Kotlin .
Не используйте плагин kotlin-dsl. Он может быть более подходящим для бинарных плагинов, не привязанных к определённой версии Gradle.
В крайнем случае можно настроить проект на использование версии языка 2.1 или выше, которая переопределяет конфликтующее поведение плагина kotlin-dsl. Однако мы настоятельно не рекомендуем этого делать.
Если при миграции возникнут трудности, обратитесь за помощью в канал #gradle в нашем Slack .
Этапы отказа от поддержки :
Отказ от поддержки плагина kotlin-android для версий AGP 9.0.0 и выше
Проблема : KT-81199
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.0 плагин org.jetbrains.kotlin.android объявлен устаревшим при использовании версии Android Gradle plugin (AGP) 9.0.0 или выше. Начиная с AGP 9.0.0, AGP предоставляет встроенную поддержку Kotlin , поэтому плагин kotlin-android больше не требуется.
Этапы отказа от поддержки :
Отказ от поддержки конфигурации testApi
Проблема : KT-63285
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.0 конфигурация testApi объявлена устаревшей. Эта конфигурация предоставляла другим модулям тестовые зависимости и исходный код, но Gradle не поддерживает такое поведение.
Варианты миграции : замените все вхождения testApi() на testImplementation() и сделайте то же самое для других вариантов. Например, замените kotlin.sourceSets.commonTest.dependencies.api() на kotlin.sourceSets.commonTest.dependencies.implementation().
Для проектов Kotlin/JVM рассмотрите возможность использования тестовых фикстур Gradle. Если вы хотите, чтобы поддержка тестовых фикстур появилась в многоплатформенных проектах, расскажите о своём варианте использования в YouTrack .
Этапы отказа от поддержки :
Отказ от поддержки функции createTestExecutionSpec()
Проблема : KT-75449
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.0 функция createTestExecutionSpec() в интерфейсе KotlinJsTestFramework объявлена устаревшей, так как больше не используется.
Этапы отказа от поддержки :
Проблема : KT-64273
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.0 из DSL closure удаляются функции closureTo() и createResultSet(), так как они больше не используются. Кроме того, удаляется функция KotlinToolingVersionOrNull(). Вместо неё используйте функцию KotlinToolingVersion().
Этапы отказа от поддержки :
1.7.20: выводится ошибка
2.3.0: функции удаляются
Проблема : KT-74915
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : API ExtrasProperty, который был объявлен устаревшим начиная с Kotlin 2.0.0, теперь стал внутренним в Kotlin 2.3.0. В качестве альтернативы используйте API ExtraPropertiesExtension Gradle.
Этапы отказа от поддержки :
2.0.0: выводится предупреждение
2.1.0: предупреждение повышается до ошибки
2.3.0: API становится внутренним
Отказ от поддержки HasKotlinDependencies в KotlinCompilation
Проблема : KT-67290
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.0 интерфейс HasKotlinDependencies в KotlinCompilation объявлен устаревшим. API, связанные с зависимостями, теперь доступны через интерфейс KotlinSourceSet .
Этапы отказа от поддержки :
Отказ от поддержки внутренних функций и свойств менеджеров пакетов npm и Yarn
Проблема : KT-81009
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Следующие функции и свойства, связанные с менеджерами пакетов npm и Yarn, объявлены устаревшими:
CompositeDependency.dependencyName, CompositeDependency.dependencyVersion, CompositeDependency.includedBuildDir.
KotlinNpmInstallTask.Companion.NAME.
LockCopyTask.Companion.STORE_PACKAGE_LOCK_NAME, LockCopyTask.Companion.RESTORE_PACKAGE_LOCK_NAME, LockCopyTask.Companion.UPGRADE_PACKAGE_LOCK.
Npm.npmExec().
NpmProject.require(), NpmProject.useTool().
PublicPackageJsonTask.jsIrCompilation.
YarnBasics.yarnExec().
YarnPlugin.Companion.STORE_YARN_LOCK_NAME, YarnPlugin.Companion.RESTORE_YARN_LOCK_NAME, YarnPlugin.Companion.UPGRADE_YARN_LOCK.
YarnSetupTask.Companion.NAME.
Этапы отказа от поддержки :
2.2.0 и 2.2.20: при использовании этих функций или свойств выводятся предупреждения
2.3.0: предупреждения повышаются до ошибок
2.4.0: функции и свойства удаляются
Отказ от поддержки PhantomJS
Проблема : KT-76019
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Поскольку PhantomJS больше не поддерживается, в Kotlin 2.3.0 свойство karmaPhantomjsLauncher в API NpmVersions объявлено устаревшим.
Этапы отказа от поддержки :
Запрет на создание подклассов классов, настраивающих запуск тестов или среду выполнения JavaScript
Проблема : KT-75869 , KT-81007
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.0 запрещено создавать подклассы следующих классов:
KotlinTest
KotlinNativeTest
KotlinJsTest
KotlinJsIrTarget
KotlinNodeJsIr
KotlinD8Ir
KotlinKarma
KotlinMocha
KotlinWebpack
TypeScriptValidationTask
YarnRootExtension
Эти классы никогда не предназначались для создания подклассов. Все сценарии использования подклассов теперь должны покрываться блоками конфигурации, предоставляемыми DSL плагина Kotlin Gradle. Если существующие API для этих задач не подходят для настройки запуска тестов или среды выполнения JavaScript, поделитесь отзывом в YouTrack .
Этапы отказа от поддержки :
2.2.0: выводится предупреждение для кода, создающего подклассы этих классов
2.3.0: предупреждения повышаются до ошибок
2.4.0: API удаляются
Отказ от поддержки класса аннотации ExperimentalWasmDsl
Проблема : KT-81005
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Класс аннотации ExperimentalWasmDsl объявлен устаревшим, поскольку его функциональность перенесена в модуль kotlin-plugin-annotations.
Этапы отказа от поддержки :
2.0.20: выводится предупреждение
2.3.0: предупреждение повышается до ошибки
2.4.0: класс аннотации удаляется
Отказ от поддержки класса аннотации ExperimentalDceDsl
Проблема : KT-81008
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Класс аннотации ExperimentalDceDsl больше не используется, поэтому он объявлен устаревшим.
Этапы отказа от поддержки :
2.2.0: выводится предупреждение
2.3.0: предупреждение повышается до ошибки
2.4.0: класс аннотации удаляется
Отказ от поддержки утилит JavaScript
Проблема : KT-81010
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Следующие функции и свойства используются только внутри системы, поэтому они объявлены устаревшими:
JsIrBinary.generateTs
KotlinJsIrLink.mode
NodeJsSetupTask.Companion.NAME
Appendable.appendConfigsFromDir()
ByteArray.toHex()
FileHasher.calculateDirHash()
String.jsQuoted()
Этапы отказа от поддержки :
2.2.0: при использовании свойства KotlinJsIrLink.mode выводится предупреждение
2.2.0: при использовании свойства и функций NodeJsSetupTask.Companion.NAME выводится предупреждение
2.2.20: при использовании свойства JsIrBinary.generateTs выводится предупреждение
2.3.0: предупреждения повышаются до ошибок
2.4.0: API удаляются
Отказ от поддержки перенесённых свойств D8 и Binaryen
Проблема : KT-81006
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Следующие свойства объявлены устаревшими, поскольку они перенесены из пакета org.jetbrains.kotlin.gradle.targets.js в пакет org.jetbrains.kotlin.gradle.targets.wasm:
binaryen.BinaryenEnvSpec
binaryen.BinaryenExtension
binaryen.BinaryenPlugin
binaryen.BinaryenRootPlugin
BinaryenSetupTask.Companion.NAME
d8.D8EnvSpec
d8.D8Plugin
D8SetupTask.Companion.NAME
Этапы отказа от поддержки :
2.2.0: выводится предупреждение
2.3.0: предупреждение повышается до ошибки
2.4.0: свойства удаляются
Отказ от поддержки функции create() в DSL NodeJsExec
Проблема : KT-81004
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Функция create() в объекте-компаньоне DSL NodeJsExec объявлена устаревшей. Вместо неё используйте функцию register().
Этапы отказа от поддержки :
Отказ от поддержки свойств в DSL kotlinOptions
Проблема : KT-76720
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Возможность настраивать параметры компилятора через DSL kotlinOptions и связанный с ним интерфейс задачи KotlinCompile<KotlinOptions> объявлена устаревшей начиная с Kotlin 2.2.0 в пользу нового DSL compilerOptions. В Kotlin 2.3.0 продолжается цикл отказа от поддержки всех свойств интерфейса kotlinOptions. Для миграции используйте DSL compilerOptions, чтобы настроить параметры компилятора. Инструкции по миграции см. в разделе Миграция с kotlinOptions {} на compilerOptions {} .
Этапы отказа от поддержки :
2.0.0: выводится предупреждение для DSL kotlinOptions
2.2.0: предупреждение повышается до ошибки, все свойства в kotlinOptions объявляются устаревшими
2.3.0: предупреждение повышается до ошибки для всех свойств в kotlinOptions
Устаревание API kotlinArtifacts
Задача : KT-77066
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Экспериментальный API kotlinArtifacts устарел. Используйте актуальный DSL, доступный в плагине Kotlin Gradle, чтобы собирать финальные нативные бинарные файлы . Если этого недостаточно для миграции, оставьте комментарий в этой задаче YouTrack .
Цикл устаревания :
Удаление свойства Gradle kotlin.mpp.resourcesResolutionStrategy
Задача : KT-74955
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Ранее свойство Gradle kotlin.mpp.resourcesResolutionStrategy было объявлено устаревшим, поскольку оно не использовалось. В Kotlin 2.3.0 свойство Gradle будет полностью удалено.
Цикл устаревания :
Задача : KT-61127
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : До Kotlin 2.3.0 мы поддерживали несколько режимов импорта многоплатформенных проектов в IDE. Теперь старый режим объявлен устаревшим, и доступен только один режим. Ранее старый режим включался с помощью свойства Gradle kotlin.mpp.import.enableKgpDependencyResolution=false. Использование этого свойства теперь вызывает предупреждение об устаревании.
Цикл устаревания :
Удаление свойств для отключения точного резервного копирования при компиляции
Задача : KT-81038
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 1.9.0 была представлена экспериментальная оптимизация инкрементальной компиляции под названием «точное резервное копирование при компиляции». После успешного тестирования эта оптимизация была включена по умолчанию в Kotlin 2.0.0. В Kotlin 2.3.0 удаляются свойства Gradle kotlin.compiler.preciseCompilationResultsBackup и kotlin.compiler.keepIncrementalCompilationCachesInMemory, отключающие эту оптимизацию.
Цикл устаревания :
Устаревание destinationDir в CInteropProcess
Задача : KT-74910
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Свойство destinationDir задачи CInteropProcess объявлено устаревшим. Вместо него используйте функцию CInteropProcess.destinationDirectory.set().
Цикл устаревания :
2.1.0: выдавать предупреждение при использовании свойства destinationDir
2.2.0: повысить уровень этого предупреждения до ошибки
2.3.0: скрыть свойство destinationDir
Устаревание konanVersion в CInteropProcess
Задача : KT-74911
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Свойство konanVersion задачи CInteropProcess объявлено устаревшим. Вместо него используйте CInteropProcess.kotlinNativeVersion.
Цикл устаревания :
2.1.0: выдавать предупреждение при использовании свойства konanVersion
2.2.0: повысить уровень этого предупреждения до ошибки
2.3.0: скрыть свойство konanVersion
Удаление свойств KotlinCompile.classpathSnapshotProperties
Задача : KT-76177
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Свойство Gradle kotlin.incremental.useClasspathSnapshot было удалено в Kotlin 2.2.0. В Kotlin 2.3.0 также удаляются следующие свойства:
Цикл устаревания :
2.0.20: объявить свойство kotlin.incremental.useClasspathSnapshot устаревшим и выдавать предупреждение
2.2.0: удалить свойство kotlin.incremental.useClasspathSnapshot
2.3.0: удалить свойства KotlinCompile.classpathSnapshotProperties.useClasspathSnapshot и KotlinCompile.classpathSnapshotProperties.classpath
Устаревание функции getPluginArtifactForNative()
Изменение подхода к регистрации всех сгенерированных исходных файлов
Задача : KT-45161
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.0 в интерфейсе Experimental KotlinSourceSet появился новый API, позволяющий регистрировать сгенерированные исходные файлы в проекте Gradle. Ранее для доступа ко всем сгенерированным исходным файлам можно было использовать свойство kotlin . Начиная с Kotlin 2.3.0, если вашему плагину или логике сборки нужен доступ ко всем сгенерированным исходным файлам, используйте вместо него свойство allKotlinSources .
Рекомендации по миграции :
Чтобы регистрировать сгенерированные исходные файлы, используйте свойство generatedKotlin .
Чтобы получить доступ ко всем исходным файлам, включая несгенерированные, используйте свойство allKotlinSources .
Устаревание свойства kotlin.publishJvmEnvironmentAttribute
Задача : KT-83678
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : В Kotlin 2.3.20 свойство kotlin.publishJvmEnvironmentAttribute объявлено устаревшим. Это свойство позволяло отключить публикацию атрибута org.gradle.jvm.environment для многоплатформенных библиотек. Начиная с Kotlin 2.0.20, org.gradle.jvm.environment публикуется по умолчанию, чтобы обеспечить стандартное разрешение зависимостей.
Цикл устаревания :
Устаревание интерфейса CleanableStore и класса CleanDataTask
Задача : KT-78104
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Интерфейс CleanableStore и класс CleanDataTask объявлены устаревшими, поскольку больше не используются.
Цикл устаревания :
Устаревание свойства Gradle kotlin.kmp.isolated-projects.support
Задача : KT-79257
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Поскольку многоплатформенные проекты по умолчанию совместимы с изолированными проектами и других вариантов нет, свойство Gradle kotlin.kmp.isolated-projects.support объявлено устаревшим.
Цикл устаревания :
Задача : KT-79924
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Поскольку артефакт kotlin-tooling-metadata.json теперь всегда создается для многоплатформенных проектов, свойство Gradle kotlin.mpp.enableKotlinToolingMetadataArtifact объявлено устаревшим.
Цикл устаревания :
Устаревание DSL LanguageSettings.enableLanguageFeature
Задача : KT-82323 , KT-82847
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : DSL LanguageSettings.enableLanguageFeature предоставлял доступ к внутренней конфигурации компилятора, предназначенной только для тестирования компилятора Kotlin. Поэтому этот DSL объявлен устаревшим.
Цикл устаревания :
Устаревание стратегии выполнения компилятора «вне процесса»
Задача : KT-83125
Компонент : Gradle
Тип несовместимого изменения : исходный код
Краткое описание : Стратегия выполнения компилятора «вне процесса» не поддерживается API инструментов сборки и является самой медленной из доступных стратегий. В Kotlin 2.3.20 эта стратегия объявлена устаревшей в пользу стратегий выполнения компилятора «демон» и «внутри процесса».
Цикл устаревания :
Удаление поддержки Ant
Задача : KT-75875
Компонент : Ant
Краткое описание : В Kotlin 2.3.0 прекращается поддержка Ant в качестве средства сборки. Вместо него используйте Gradle или Maven .
Цикл устаревания :
24 августа 2026 г.