Kotlin 各组件的稳定性

The Kotlin language and toolset are divided into many components such as the compilers for the JVM, JS and Native targets, the Standard Library, various accompanying tools and so on. Many of these components were officially released as Stable which means that they are evolved in the backward-compatible way following the principles of Comfortable Updates and Keeping the Language Modern. Among such stable components are, for example, the Kotlin compiler for the JVM, the Standard Library, and Coroutines.

Following the Feedback Loop principle we release many things early for the community to try out, so a number of components are not yet released as Stable. Some of them are very early stage, some are more mature. We mark them as Experimental, Alpha or Beta depending on how quickly each component is evolving and how much risk the users are taking when adopting it.

Stability levels explained

Here’s a quick guide to these stability levels and their meaning:

实验性的 means “try it only in toy projects”:

  • We are just trying out an idea and want some users to play with it and give feedback. If it doesn’t work out, we may drop it any minute.

Alpha means “use at your own risk, expect migration issues”:

  • We decided to productize this idea, but it hasn’t reached the final shape yet.

Beta means “you can use it, we’ll do our best to minimize migration issues for you”:

  • It’s almost done, user feedback is especially important now.
  • Still, it’s not 100% finished, so changes are possible (including ones based on your own feedback).
  • Watch for deprecation warnings in advance for the best update experience.

We collectively refer to Experimental, Alpha and Beta as pre-stable levels.

已稳定 means “use it even in most conservative scenarios”:

Please note that stability levels do not say anything about how soon a component will be released as Stable. Similarly, they do not indicate how much a component will be changed before release. They only say how fast a component is changing and how much risk of update issues users are running.

GitHub badges for Kotlin components

The Kotlin GitHub organization hosts different Kotlin-related projects. Some of them we develop full-time, while others are side projects.

Each Kotlin project has two GitHub badges describing its stability and support status:

Stability of subcomponents

A stable component may have an experimental subcomponent, for example:

  • a stable compiler may have an experimental feature;
  • a stable API may include experimental classes or functions;
  • a stable command-line tool may have experimental options.

We make sure to document precisely which subcomponents are not stable. We also do our best to warn users where possible and ask to opt in explicitly to avoid accidental usages of features that have not been released as stable.

Current stability of Kotlin components

组件状态状态起始版本备注
Kotlin/JVM已稳定1.0
Kotlin K2 (JVM)Alpha1.7
kotlin-stdlib (JVM)已稳定1.0
协程已稳定1.3
kotlin-reflect (JVM)Beta1.0
Kotlin/JS(旧版后端)已稳定1.31.8.0 起已弃用,请参阅 IR 迁移指南
Kotlin/JVM(基于 IR)已稳定1.5
Kotlin/JS(基于 IR)已稳定1.8
Kotlin/Native 运行时Beta1.3
Kotlin/Native 新版内存管理器Beta1.7.20
klib 二进制Beta1.9.0
Kotlin 多平台Beta1.7.20
Kotlin/Native 与 C 语言及 Objective C 互操作Beta1.3
CocoaPods 集成Beta1.3
用于 Android Studio 的 Kotlin 多平台移动端插件Beta0.5.2与语言版本独立
expect/actual 语言特性Beta1.2
KDoc 语法已稳定1.0
DokkaBeta1.6
脚本语法与语义Alpha1.2
脚本嵌入与扩展 APIBeta1.5
脚本 IDE 支持BetaAvailable since IntelliJ IDEA 2023.1 and later
CLI 脚本Alpha1.2
编译器插件 API实验性的1.0
序列化编译器插件已稳定1.4
序列化核心库已稳定1.0.0与语言版本独立
内联类已稳定1.5
无符号算术已稳定1.5
stdlib 中的契约已稳定1.3
用户自定义契约实验性的1.3
默认情况下,所有其他实验性特性实验性的N/A

The pre-1.4 version of this page is available here.