13.4 Kotlin 各组件的稳定性
4 分钟阅读
13.4 Kotlin 各组件的稳定性
Kotlin 语言和工具集被划分为许多组件,例如面向 JVM、JS 和 Native 目标的编译器、标准库、各种配套工具等等。其中许多组件已正式发布为稳定,也就是说它们按照_平滑升级_和_保持语言现代性_原则以向后兼容的方式演进。
遵循_反馈闭环_原则,我们会提前发布很多内容供社区试用,因此有不少组件尚未发布为稳定。其中一些还处于非常早期的阶段,另一些则比较成熟。我们根据每个组件的演进速度以及用户采用它时承担的风险程度,把它们标记为实验性、Alpha 或 Beta。
稳定性级别说明
下面是这些稳定性级别及其含义的简要指南:
**实验性(Experimental)**意味着"只在玩具项目中试用":
- 我们只是在测试某个想法及其可行性。我们希望一些用户试用并分享反馈。范围很小,该特性随时可能变化或消失。我们不保证稳定性或兼容性。
Alpha 意味着"我们正在测试它是否应该成为生产可用":
- 我们打算把它做成产品,并正在验证其用户价值和市场契合度,以确定它的最终形态。功能集仍不完整,并且预计会有破坏性变更。如果假设不成立,我们可能会大幅修改或停止该特性。
Beta 意味着"你可以使用它,我们会尽力为你减少迁移问题":
- 它几乎完成了,此时用户反馈尤其重要。
- 不过它还没有 100% 完成,因此仍可能有变化(包括基于你自己反馈的变化)。
- 请留意提前出现的弃用警告,以获得最佳的升级体验。
我们把实验性、Alpha 和 Beta 统称为预稳定级别。
**稳定(Stable)**意味着"即使在最保守的场景中也可以使用":
- 它已经完成。我们会按照严格的向后兼容规则来演进它。
请注意,稳定性级别并不说明某个组件多快会发布为稳定,也不表示该组件在发布前会有多大改动。它们只说明组件的变动速度以及用户承担的更新问题风险有多大。
Kotlin 组件的 GitHub 徽章
Kotlin GitHub 组织托管着各种与 Kotlin 相关的项目。其中一些是我们全职开发的,另一些则是业余项目。
每个 Kotlin 项目都有两个 GitHub 徽章,用来描述其稳定性和支持状态:
稳定性状态。它显示每个项目的演进速度以及用户采用它时承担的风险。稳定性状态与 Kotlin 语言特性及其组件的稳定性级别完全一致:
表示实验性
表示 Alpha
表示 Beta
表示稳定
支持状态。它显示我们对维护项目并帮助用户解决问题的承诺。支持级别对所有 JetBrains 产品是统一的。详情请参阅 JetBrains 开源文档。
子组件的稳定性
一个稳定组件可能有实验性的子组件,例如:
- 稳定的编译器可能有实验性特性;
- 稳定的 API 可能包含实验性的类或函数;
- 稳定的命令行工具可能有实验性选项。
我们会确保准确记录哪些子组件不是稳定的。我们也会尽可能提醒用户,并要求显式选择启用,以避免意外使用尚未发布为稳定的特性。
Kotlin 各组件当前的稳定性
注意: 默认情况下,所有新组件都处于实验性状态。
Kotlin 编译器
| 组件 | 状态 | 自哪个版本起 | 备注 |
| Kotlin/JVM | 稳定 | 1.0.0 | | | Kotlin/Native | 稳定 | 1.9.0 | | | Kotlin/JS | 稳定 | 1.3.0 | | | Kotlin/Wasm | Beta | 2.2.20 | | | Analysis API | 稳定 | | |
核心编译器插件
| 组件 | 状态 | 自哪个版本起 | 备注 |
| All-open | 稳定 | 1.3.0 | | | No-arg | 稳定 | 1.3.0 | | | SAM-with-receiver | 稳定 | 1.3.0 | | | kapt | 稳定 | 1.3.0 | | | Lombok | Alpha | 2.3.20 | | | Power-assert | 实验性 | 2.0.0 | |
Kotlin 库
| 组件 | 状态 | 自哪个版本起 | 备注 |
| kotlin-stdlib (JVM) | 稳定 | 1.0.0 | | | kotlinx-coroutines | 稳定 | 1.3.0 | | | kotlinx-serialization | 稳定 | 1.0.0 | | | kotlin-metadata-jvm | 稳定 | 2.0.0 | | | kotlin-reflect (JVM) | Beta | 1.0.0 | | | kotlinx-datetime | Alpha | 0.2.0 | | | kotlinx-io | Alpha | 0.2.0 | | | kotlinx-collections-immutable | Alpha | 0.3.5 | |
Kotlin Multiplatform
| 组件 | 状态 | 自哪个版本起 | 备注 |
| Kotlin Multiplatform | 稳定 | 1.9.20 | | | Kotlin Multiplatform plugin for Android Studio | Beta | 0.8.0 | 与语言分开版本管理 |
Kotlin/Native
| 组件 | 状态 | 自哪个版本起 | 备注 |
| Kotlin/Native Runtime | 稳定 | 1.9.20 | | | Kotlin/Native interop with C and Objective-C | Beta | 1.3.0 | C 和 Objective-C 库导入的稳定性 | | klib binaries | 稳定 | 1.9.20 | 不包括 cinterop klib,见下文 | | cinterop klib binaries | Beta | 1.3.0 | C 和 Objective-C 库导入的稳定性 | | CocoaPods integration | 稳定 | 1.9.20 | |
构建工具
| 组件 | 状态 | 自哪个版本起 | 备注 |
| Kotlin Gradle plugin | 稳定 | 1.1.1 | Kotlin Multiplatform Gradle 插件从 Kotlin 1.9.20 起稳定。 | | Kotlin Maven plugin | 稳定 | 1.0.0 | |
构建工具 API (BTA)
| 组件 | 状态 | 自哪个版本起 | 备注 |
| BTA for JVM | Beta | 2.4.20 | | | BTA for JS | Alpha | 2.4.20 | | | BTA for Wasm | Alpha | 2.4.20 | |
注意: 构建工具 API 目前不支持 Kotlin/Native。
语言工具
| 组件 | 状态 | 自哪个版本起 | 备注 |
| Scripting syntax and semantics | Alpha | 1.2.0 | | | Scripting embedding and extension API | Beta | 1.5.0 | | | Scripting IDE support | Beta | | 自 IntelliJ IDEA 2023.1 及更高版本可用 | | CLI scripting | Alpha | 1.2.0 | |