"experimental" 可以在生产中使用 Kotlin 协程吗?

Can "experimental" Kotlin coroutines be used in production?

Kotlin协程是否可以用于生产,其实验状态是什么意思?

更新:从 Kotlin 1.3 开始,Kotlin 协程不再是实验性的。

Kotlin 协程可以而且应该在生产中使用。这是在 Kotlin 1.1 中正式发布它们的主要原因。在发布它们之后,JetBrains 团队承诺在次要版本中随着它们的发展而引入的任何更改保持向后兼容性,同时允许人们在复杂的生产应用程序中安全地尝试它们。

简而言之,“实验性”和“正常”功能之间的区别在于,对于正常的 Kotlin 功能,不能在次要更新中添加新内容,因为有 "full compatibility" 保证,而对于实验性功能可以添加新内容,但不能删除任何内容(因为向后兼容性保证)。

实验性协程使用单独的 kotlin.coroutines.experimental 包名称,因此当协程设计完成并移至 kotlin.coroutines 包时,旧的编译代码不会中断,但会通过单独的支持库。

关于它们为何 "experimental" 以及这意味着什么的进一步讨论(长读)可以在 Andrey Breslav 的 forum post 中找到。

同样的问题适用于协程支持库。

kotlinx.coroutines 的当前版本专为生产使用而设计。它很好地覆盖了测试,很多东西已经优化,所有的更改都是考虑到与以前编译的代码的向后兼容性问题。它确实可以作为各种基于协程的东西的试验台,所以有些部分在相应功能的文档中明确标记为 "work in progress" 或 "unstable" 和 类 .但是,默认情况下,kotlinx.coroutines 中的所有 public API 都被认为是稳定的,并且在需要时使用适当的迁移辅助工具进行改进。