Руководство по совместимости для Kotlin 1.7.20
Поддержание современности языка и Удобные обновления относятся к фундаментальным принципам проектирования языка Kotlin. Первый принцип гласит, что конструкции, препятствующие эволюции языка, должны быть удалены, а второй — что об удалении следует сообщать заранее, чтобы минимизировать сложности при миграции кода.
Обычно несовместимые изменения происходят только в релизах с новыми функциями, но на этот раз нам необходимо внести два таких изменения в инкрементальный релиз, чтобы ограничить распространение проблем, возникших из-за изменений в Kotlin 1.7.
Этот документ обобщает их, предоставляя справочную информацию для миграции с Kotlin 1.7.0 и 1.7.10 на Kotlin 1.7.20.
Основные термины
В этом документе мы вводим несколько видов совместимости:
исходный код: изменение, несовместимое с исходным кодом, препятствует компиляции кода, который ранее компилировался без ошибок или предупреждений.
бинарный код: два бинарных артефакта считаются бинарно совместимыми, если их обмен не приводит к ошибкам загрузки или компоновки.
поведенческий код: изменение считается поведенчески несовместимым, если один и тот же код демонстрирует разное поведение до и после применения изменения.
Обратите внимание, что эти определения даны только для чистого Kotlin. Совместимость кода Kotlin с точки зрения других языков (например, Java) выходит за рамки этого документа.
Язык
Попытка отката для исправления обработки ограничений
Запрет некоторых случаев вывода типов для сборщиков, чтобы избежать проблемной взаимосвязи с несколькими лямбдами и разрешением
© 2010–2022 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/compatibility-guide-1720.html