13.4 Kotlin 各组件的稳定性

原文链接: https://kotlinlang.org/docs/components-stability.html

13.4 Kotlin 各组件的稳定性

Kotlin 语言和工具集被划分为许多组件,例如面向 JVM、JS 和 Native 目标的编译器、标准库、各种配套工具等等。其中许多组件已正式发布为稳定,也就是说它们按照_平滑升级_和_保持语言现代性_原则以向后兼容的方式演进。

遵循_反馈闭环_原则,我们会提前发布很多内容供社区试用,因此有不少组件尚未发布为稳定。其中一些还处于非常早期的阶段,另一些则比较成熟。我们根据每个组件的演进速度以及用户采用它时承担的风险程度,把它们标记为实验性、Alpha 或 Beta。

稳定性级别说明

下面是这些稳定性级别及其含义的简要指南:

**实验性(Experimental)**意味着"只在玩具项目中试用":

  • 我们只是在测试某个想法及其可行性。我们希望一些用户试用并分享反馈。范围很小,该特性随时可能变化或消失。我们不保证稳定性或兼容性。

Alpha 意味着"我们正在测试它是否应该成为生产可用":

  • 我们打算把它做成产品,并正在验证其用户价值和市场契合度,以确定它的最终形态。功能集仍不完整,并且预计会有破坏性变更。如果假设不成立,我们可能会大幅修改或停止该特性。

Beta 意味着"你可以使用它,我们会尽力为你减少迁移问题":

  • 它几乎完成了,此时用户反馈尤其重要。
  • 不过它还没有 100% 完成,因此仍可能有变化(包括基于你自己反馈的变化)。
  • 请留意提前出现的弃用警告,以获得最佳的升级体验。

我们把实验性、Alpha 和 Beta 统称为预稳定级别。

**稳定(Stable)**意味着"即使在最保守的场景中也可以使用":

请注意,稳定性级别并不说明某个组件多快会发布为稳定,也不表示该组件在发布前会有多大改动。它们只说明组件的变动速度以及用户承担的更新问题风险有多大。

Kotlin 组件的 GitHub 徽章

Kotlin GitHub 组织托管着各种与 Kotlin 相关的项目。其中一些是我们全职开发的,另一些则是业余项目。

每个 Kotlin 项目都有两个 GitHub 徽章,用来描述其稳定性和支持状态:

子组件的稳定性

一个稳定组件可能有实验性的子组件,例如:

  • 稳定的编译器可能有实验性特性;
  • 稳定的 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 | |

语言特性和设计提案

关于语言特性和新的设计提案,请参阅 。