Kotlin 1.7.20 兼容性指南
保证语言的现代化 以及 语言版本升级平滑便利 是 Kotlin 语言设计时的基本原则之一. 第一条原则认为, 阻碍语言演进的那些元素应该删除, 后一条原则则认为, 这些删除必须事先与使用者良好沟通, 以便让源代码的迁移尽量平滑.
不兼容的变更通常只出现在功能发布版中, 但这一次, 我们不得不在一个增量发布版中引入了 2 个这样的变更, 以便尽早解决由 Kotlin 1.7 的变更造成的一些问题.
本文档概述这些问题, 提供关于 Kotlin 1.7.0 和 1.7.10 向 Kotlin 1.7.20 迁移的参考.
基本术语
在本文档中, 我们介绍几种类型的兼容性:
源代码级兼容性: 源代码级别的不兼容会导致过去能够正确编译(没有错误和警告)的代码变得不再能够编译
二进制级兼容性: 如果交换两个二进制库文件, 不会导致程序的装载错误, 或链接错误, 那么我们称这两个文件为二进制兼容
行为级兼容性: 如果在某个变更发生之前和之后, 程序表现出不同的行为, 那么这个变更称为行为不兼容
请记住, 这些兼容性定义只针对纯 Kotlin 程序. 从其他语言(比如, Java)的观点来看 Kotlin 代码的兼容性如何, 本文档不予讨论.
语言
回滚了对约束处理的修正
禁止某些构建器推断情况, 以避免与多个 Lambda 表达式和解析之间的有问题的互动
最终更新: 2024/12/17