All kotlinx.coroutines
API comes into five flavors: stable, experimental, obsolete, internal and deprecated.
- Deprecated API is marked with
@Deprecated
and will be removed in1.0.0
release. - Internal API is marked with
@InternalCoroutinesApi
. It is intended to be used only bykotlinx.coroutines
machinery and can (will) be broken without a warning. If you are using internal API, please tell us what problem you are trying to solve, so we can provide a stable alternative. - Experimental API is marked with
ExperimentalCoroutinesApi
. Such API may have (known) design issues or we are unsure about its semantics. Roughly speaking, there is a chance that those declarations will be deprecated in the near future or the semantics of their behavior may change in the way that may break some code. In that case, proper migration aid will be provided for next several releases alongside with a stable alternative. - Obsolete API is marked with
@ObsoleteCoroutinesApi
. This API is known to have some serious issues, so it will be replaced with a better alternative. In the sense of migration and deprecation, it is equal to experimental. - Stable API is public API without any annotations. This API is proven to be stable and it is not going to change. If at some point it will be discovered that such API has unfixable design flaws, it will be gradually deprecated with proper replacement and migration aid, but won't be removed for at least a year.
The main difference between Kotlin 1.2 and 1.3 is that coroutines are now
stable public API, and thus kotlinx.coroutines
is leaving its "experimental" status. For that reason, future releases of kotlinx.coroutines
will be available only for Kotlin 1.3.
Version 1.0.0
(starting with its release candidate build) will have all its deprecated declarations removed and kotlinx.coroutines.experimental
package will be renamed to kotlinx.coroutines
without functional changes.
In order to migrate kotlinx.coroutines
to 1.0.0
, follow these steps:
- Update
kotlinx.coroutines
to0.30.2
version. - Inspect compiler warnings about deprecated API and migrate it to a proposed alternative. Most of deprecated API has a corresponding replacement which can be applied from IDEA with quickfix.
- Update Kotlin version to
1.3.0
andkotlinx.coroutines
to version0.30.2-eap13
. Then just get rid ofexperimental
suffix in all imports. - Update
kotlinx.coroutines
to version1.0.0
or to the corresponding release candidate of it).