chore(deps): update kotlin (#800)
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [com.google.devtools.ksp](https://goo.gle/ksp)
([source](https://togithub.com/google/ksp)) | `2.0.0-1.0.22` ->
`2.0.0-1.0.23` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.devtools.ksp/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.devtools.ksp/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.devtools.ksp/2.0.0-1.0.22/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.devtools.ksp/2.0.0-1.0.22/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin](https://goo.gle/ksp)
([source](https://togithub.com/google/ksp)) | `2.0.0-1.0.22` ->
`2.0.0-1.0.23` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.0-1.0.22/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.devtools.ksp:com.google.devtools.ksp.gradle.plugin/2.0.0-1.0.22/2.0.0-1.0.23?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[org.jetbrains.kotlinx:kotlinx-coroutines-play-services](https://togithub.com/Kotlin/kotlinx.coroutines)
| `1.4.1` -> `1.8.1` |
[![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.4.1/1.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlinx:kotlinx-coroutines-play-services/1.4.1/1.8.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
---
> [!WARNING]
> Some dependencies could not be looked up. Check the Dependency
Dashboard for more information.
---
### Release Notes
<details>
<summary>google/ksp (com.google.devtools.ksp)</summary>
###
[`v2.0.0-1.0.23`](https://togithub.com/google/ksp/compare/2.0.0-1.0.22...2.0.0-1.0.23)
[Compare
Source](https://togithub.com/google/ksp/compare/2.0.0-1.0.22...2.0.0-1.0.23)
</details>
<details>
<summary>Kotlin/kotlinx.coroutines
(org.jetbrains.kotlinx:kotlinx-coroutines-play-services)</summary>
###
[`v1.8.1`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-181)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.8.0...1.8.1)
- Remove the `@ExperimentalTime` annotation from usages of `TimeSource`
([#​4046](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4046)).
Thanks, [@​hfhbd](https://togithub.com/hfhbd)!
- Introduce a workaround for an Android bug that caused an occasional
`NullPointerException` when setting the `StateFlow` value on old Android
devices
([#​3820](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3820)).
- No longer use `kotlin.random.Random` as part of `Dispatchers.Default`
and `Dispatchers.IO` initialization
([#​4051](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4051)).
- `Flow.timeout` throws the exception with which the channel was closed
([#​4071](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4071)).
- Small tweaks and documentation fixes.
##### Changelog relative to version 1.8.1-Beta
- `Flow.timeout` throws the exception with which the channel was closed
([#​4071](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4071)).
- Small documentation fixes.
###
[`v1.8.0`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-180)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.7.3...1.8.0)
- Implement the library for the Web Assembly (Wasm) for JavaScript
([#​3713](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3713)).
Thanks [@​igoriakovlev](https://togithub.com/igoriakovlev)!
- Major Kotlin version update: was 1.8.20, became 1.9.21.
- On Android, ensure that `Dispatchers.Main !=
Dispatchers.Main.immediate`
([#​3545](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3545),
[#​3963](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3963)).
- Fixed a bug that caused `Flow` operators that limit cancel the
upstream flow to forget that they were already finished if there is
another such operator upstream
([#​4035](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4035),
[#​4038](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4038))
- `kotlinx-coroutines-debug` is published with the correct Java 9 module
info
([#​3944](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3944)).
- `kotlinx-coroutines-debug` no longer requires manually setting
`DebugProbes.enableCoroutineCreationStackTraces` to `false`, it's the
default
([#​3783](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3783)).
- `kotlinx-coroutines-test`: set the default timeout of `runTest` to 60
seconds, added the ability to configure it on the JVM with the
`kotlinx.coroutines.test.default_timeout=10s`
([#​3800](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3800)).
- `kotlinx-coroutines-test`: fixed a bug that could lead to not all
uncaught exceptions being reported after some tests failed
([#​3800](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3800)).
- `delay(Duration)` rounds nanoseconds up to whole milliseconds and not
down
([#​3920](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3920)).
Thanks [@​kevincianfarini](https://togithub.com/kevincianfarini)!
- `Dispatchers.Default` and the default thread for background work are
guaranteed to use the same context classloader as the object containing
it them
([#​3832](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3832)).
- It is guaranteed that by the time `SharedFlow.collect` suspends for
the first time, it's registered as a subscriber for that `SharedFlow`
([#​3885](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3885)).
Before, it was also true, but not documented.
- Atomicfu version is updated to 0.23.1, and Kotlin/Native atomic
transformations are enabled, reducing the footprint of coroutine-heavy
code
([#​3954](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3954)).
- Added a workaround for miscompilation of `withLock` on JS
([#​3881](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3881)).
Thanks [@​CLOVIS-AI](https://togithub.com/CLOVIS-AI)!
- Small tweaks and documentation fixes.
##### Changelog relative to version 1.8.0-RC2
- `kotlinx-coroutines-debug` no longer requires manually setting
`DebugProbes.enableCoroutineCreationStackTraces` to `false`, it's the
default
([#​3783](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3783)).
- Fixed a bug that caused `Flow` operators that limit cancel the
upstream flow to forget that they were already finished if there is
another such operator upstream
([#​4035](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4035),
[#​4038](https://togithub.com/Kotlin/kotlinx.coroutines/issues/4038))
- Small documentation fixes.
###
[`v1.7.3`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-173)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.7.2...1.7.3)
- Disabled the publication of the multiplatform library metadata for the
old (1.6 and earlier) KMP Gradle plugin
([#​3809](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3809)).
- Fixed a bug introduced in 1.7.2 that disabled the coroutine debugger
in IDEA
([#​3822](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3822)).
###
[`v1.7.2`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-172)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.7.1...1.7.2)
##### Bug fixes and improvements
- Coroutines debugger no longer keeps track of coroutines with empty
coroutine context
([#​3782](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3782)).
- `CopyableThreadContextElement` now properly copies an element when
crossing the coroutine boundary in `flowOn`
([#​3787](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3787)).
Thanks [@​wanyingd1996](https://togithub.com/wanyingd1996)!
- Coroutine timeouts no longer prevent K/N `newSingleThreadContext` from
closing
([#​3768](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3768)).
- A non-linearizability in `Mutex` during `tryLock`/`unlock` sequence
with owners is fixed
([#​3745](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3745)).
- Atomicfu version is updated to 0.21.0.
###
[`v1.7.1`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-171)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.7.0...1.7.1)
##### Bug fixes and improvements
- Special characters in coroutine names in JSON dumps are supported
([#​3747](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3747))
- The binary compatibility of the experimental overload of `runTest` is
restored
([#​3673](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3673))
- Channels that don't use `onUndeliveredElement` now allocate less
memory
([#​3646](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3646))
###
[`v1.7.0`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-170)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.6.4...1.7.0)
##### Core API significant improvements
- New `Channel` implementation with significant performance improvements
across the API
([#​3621](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3621)).
- New `select` operator implementation: faster, more lightweight, and
more robust
([#​3020](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3020)).
- `Mutex` and `Semaphore` now share the same underlying data structure
([#​3020](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3020)).
- `Dispatchers.IO` is added to K/N
([#​3205](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3205))
- `newFixedThreadPool` and `Dispatchers.Default` implementations on K/N
were wholly rewritten to support graceful growth under load
([#​3595](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3595)).
- `kotlinx-coroutines-test` rework:
- Add the `timeout` parameter to `runTest` for the whole-test timeout,
10 seconds by default
([#​3270](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3270)).
This replaces the configuration of quiescence timeouts, which is now
deprecated
([#​3603](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3603)).
- The `withTimeout` exception messages indicate if the timeout used the
virtual time
([#​3588](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3588)).
- `TestCoroutineScheduler`, `runTest`, and `TestScope` API are promoted
to stable
([#​3622](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3622)).
- `runTest` now also fails if there were uncaught exceptions in
coroutines not inherited from the test coroutine
([#​1205](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1205)).
##### Breaking changes
- Old K/N memory model is no longer supported
([#​3375](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3375)).
- New generic upper bounds were added to reactive integration API where
the language since 1.8.0 dictates
([#​3393](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3393)).
- `kotlinx-coroutines-core` and `kotlinx-coroutines-jdk8` artifacts were
merged into a single artifact
([#​3268](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3268)).
- Artificial stackframes in stacktrace recovery no longer contain the
`\b` symbol and are now navigable in IDE and supplied with proper
documentation
([#​2291](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2291)).
- `CoroutineContext.isActive` returns `true` for contexts without any
job in them
([#​3300](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3300)).
##### Bug fixes and improvements
- Kotlin version is updated to 1.8.20
- Atomicfu version is updated to 0.20.2.
- `JavaFx` version is updated to 17.0.2 in `kotlinx-coroutines-javafx`
([#​3671](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3671))..
- JPMS is supported
([#​2237](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2237)).
Thanks [@​lion7](https://togithub.com/lion7)!
- `BroadcastChannel` and all the corresponding API are deprecated
([#​2680](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2680)).
- Added all supported K/N targets
([#​3601](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3601),
[#​812](https://togithub.com/Kotlin/kotlinx.coroutines/issues/812),
[#​855](https://togithub.com/Kotlin/kotlinx.coroutines/issues/855)).
- K/N `Dispatchers.Default` is backed by the number of threads equal to
the number of available cores
([#​3366](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3366)).
- Fixed an issue where some coroutines' internal exceptions were not
properly serializable
([#​3328](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3328)).
- Introduced `Job.parent` API
([#​3201](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3201)).
- Fixed a bug when `TestScheduler` leaked cancelled jobs
([#​3398](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3398)).
- `TestScope.timeSource` now provides comparable time marks
([#​3617](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3617)).
Thanks [@​hfhbd](https://togithub.com/hfhbd)!
- Fixed an issue when cancelled `withTimeout` handles were preserved in
JS runtime
([#​3440](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3440)).
- Ensure `awaitFrame` only awaits a single frame when used from the main
looper
([#​3432](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3432)).
Thanks [@​pablobaxter](https://togithub.com/pablobaxter)!
- Obsolete `Class-Path` attribute was removed from
`kotlinx-coroutines-debug.jar` manifest
([#​3361](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3361)).
- Fixed a bug when `updateThreadContext` operated on the parent context
([#​3411](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3411)).
- Added new `Flow.filterIsInstance` extension
([#​3240](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3240)).
- `Dispatchers.Default` thread name prefixes are now configurable with
system property
([#​3231](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3231)).
- Added `Flow.timeout` operator as `@FlowPreview`
([#​2624](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2624)).
Thanks [@​pablobaxter](https://togithub.com/pablobaxter)!
- Improved the performance of the `future` builder in case of exceptions
([#​3475](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3475)).
Thanks [@​He-Pin](https://togithub.com/He-Pin)!
- `Mono.awaitSingleOrNull` now waits for the `onComplete` signal
([#​3487](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3487)).
- `Channel.isClosedForSend` and `Channel.isClosedForReceive` are
promoted from experimental to delicate
([#​3448](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3448)).
- Fixed a data race in native `EventLoop`
([#​3547](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3547)).
- `Dispatchers.IO.limitedParallelism(valueLargerThanIOSize)` no longer
creates an additional wrapper
([#​3442](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3442)).
Thanks [@​dovchinnikov](https://togithub.com/dovchinnikov)!
- Various `@FlowPreview` and `@ExperimentalCoroutinesApi` are promoted
to experimental and stable respectively
([#​3542](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3542),
[#​3097](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3097),
[#​3548](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3548)).
- Performance improvements in `Dispatchers.Default` and `Dispatchers.IO`
([#​3416](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3416),
[#​3418](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3418)).
- Fixed a bug when internal `suspendCancellableCoroutineReusable` might
have hanged
([#​3613](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3613)).
- Introduced internal API to process events in the current system
dispatcher
([#​3439](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3439)).
- Global `CoroutineExceptionHandler` is no longer invoked in case of
unprocessed `future` failure
([#​3452](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3452)).
- Performance improvements and reduced thread-local pressure for the
`withContext` operator
([#​3592](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3592)).
- Improved performance of `DebugProbes`
([#​3527](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3527)).
- Fixed a bug when the coroutine debugger might have detected the state
of a coroutine incorrectly
([#​3193](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3193)).
- `CoroutineDispatcher.asExecutor()` runs tasks without dispatching if
the dispatcher is unconfined
([#​3683](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3683)).
Thanks [@​odedniv](https://togithub.com/odedniv)!
- `SharedFlow.toMutableList` and `SharedFlow.toSet` lints are introduced
([#​3706](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3706)).
- `Channel.invokeOnClose` is promoted to stable API
([#​3358](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3358)).
- Improved lock contention in `Dispatchers.Default` and `Dispatchers.IO`
during the startup phase
([#​3652](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3652)).
- Fixed a bug that led to threads oversubscription in
`Dispatchers.Default`
([#​3642](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3642)).
- Fixed a bug that allowed `limitedParallelism` to perform dispatches
even after the underlying dispatcher was closed
([#​3672](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3672)).
- Fixed a bug that prevented stacktrace recovery when the exception's
constructor from `cause` was selected
([#​3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)).
- Improved sanitizing of stracktrace-recovered traces
([#​3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)).
- Introduced an internal flag to disable uncaught exceptions reporting
in tests as a temporary migration mechanism
([#​3736](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3736)).
- Various documentation improvements and fixes.
Changelog for previous versions may be found in
[CHANGES_UP_TO\_1.7.md](CHANGES_UP_TO\_1.7.md)
###
[`v1.6.4`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.4)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.6.3...1.6.4)
- Added `TestScope.backgroundScope` for launching coroutines that
perform work in the background and need to be cancelled at the end of
the test
([#​3287](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3287)).
- Fixed the POM of `kotlinx-coroutines-debug` having an incorrect
reference to `kotlinx-coroutines-bom`, which cause the builds of Maven
projects using the debug module to break
([#​3334](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3334)).
- Fixed the `Publisher.await` functions in `kotlinx-coroutines-reactive`
not ensuring that the `Subscriber` methods are invoked serially
([#​3360](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3360)).
Thank you, [@​EgorKulbachka](https://togithub.com/EgorKulbachka)!
- Fixed a memory leak in `withTimeout` on K/N with the new memory model
([#​3351](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3351)).
- Added the guarantee that all `Throwable` implementations in the core
library are serializable
([#​3328](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3328)).
- Moved the documentation to
<https://kotlinlang.org/api/kotlinx.coroutines/>
([#​3342](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3342)).
- Various documentation improvements.
###
[`v1.6.3`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.3)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.6.2...1.6.3)
- Updated atomicfu version to 0.17.3
([#​3321](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3321)),
fixing the projects using this library with JS IR failing to build
([#​3305](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3305)).
###
[`v1.6.2`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.2)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.6.1...1.6.2)
- Fixed a bug with `ThreadLocalElement` not being correctly updated when
the most outer `suspend` function was called directly without
`kotlinx.coroutines`
([#​2930](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2930)).
- Fixed multiple data races: one that might have been affecting
`runBlocking` event loop, and a benign data race in `Mutex`
([#​3250](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3250),
[#​3251](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3251)).
- Obsolete `TestCoroutineContext` is removed, which fixes the
`kotlinx-coroutines-test` JPMS package being split between
`kotlinx-coroutines-core` and `kotlinx-coroutines-test`
([#​3218](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3218)).
- Updated the ProGuard rules to further shrink the size of the resulting
DEX file with coroutines
([#​3111](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3111),
[#​3263](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3263)).
Thanks, [@​agrieve](https://togithub.com/agrieve)!
- Atomicfu is updated to `0.17.2`, which includes a more efficient and
robust JS IR transformer
([#​3255](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3255)).
- Kotlin is updated to `1.6.21`, Gradle version is updated to `7.4.2`
([#​3281](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3281)).
Thanks,
[@​wojtek-kalicinski](https://togithub.com/wojtek-kalicinski)!
- Various documentation improvements.
###
[`v1.6.1`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.1)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.6.0...1.6.1)
- Rollback of time-related functions dispatching on `Dispatchers.Main`.
This behavior was introduced in 1.6.0 and then found inconvenient and
erroneous
([#​3106](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3106),
[#​3113](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3113)).
- Reworked the newly-introduced `CopyableThreadContextElement` to solve
issues uncovered after the initial release
([#​3227](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3227)).
- Fixed a bug with `ThreadLocalElement` not being properly updated in
racy scenarios
([#​2930](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2930)).
- Reverted eager loading of default `CoroutineExceptionHandler` that
triggered ANR on some devices
([#​3180](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3180)).
- New API to convert a `CoroutineDispatcher` to a Rx scheduler
([#​968](https://togithub.com/Kotlin/kotlinx.coroutines/issues/968),
[#​548](https://togithub.com/Kotlin/kotlinx.coroutines/issues/548)).
Thanks [@​recheej](https://togithub.com/recheej)!
- Fixed a memory leak with the very last element emitted from `flow`
builder being retained in memory
([#​3197](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3197)).
- Fixed a bug with `limitedParallelism` on K/N with new memory model
throwing `ClassCastException`
([#​3223](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3223)).
- `CoroutineContext` is added to the exception printed to the default
`CoroutineExceptionHandler` to improve debuggability
([#​3153](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3153)).
- Static memory consumption of `Dispatchers.Default` was significantly
reduced
([#​3137](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3137)).
- Updated slf4j version in `kotlinx-coroutines-slf4j` from 1.7.25 to
1.7.32.
###
[`v1.6.0`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.0)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.5.2...1.6.0)
Note that this is a full changelog relative to the 1.5.2 version.
Changelog relative to 1.6.0-RC3 can be found at the end.
##### kotlinx-coroutines-test rework
- `kotlinx-coroutines-test` became a multiplatform library usable from
K/JVM, K/JS, and K/N.
- Its API was completely reworked to address long-standing issues with
consistency, structured concurrency and correctness
([#​1203](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1203),
[#​1609](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1609),
[#​2379](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2379),
[#​1749](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1749),
[#​1204](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1204),
[#​1390](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1390),
[#​1222](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1222),
[#​1395](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1395),
[#​1881](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1881),
[#​1910](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1910),
[#​1772](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1772),
[#​1626](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1626),
[#​1742](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1742),
[#​2082](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2082),
[#​2102](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2102),
[#​2405](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2405),
[#​2462](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2462)
).
- The old API is deprecated for removal, but the new API is based on the
similar concepts ([README](kotlinx-coroutines-test/README.md)), and the
migration path is designed to be graceful: [migration
guide](kotlinx-coroutines-test/MIGRATION.md).
##### Dispatchers
- Introduced `CoroutineDispatcher.limitedParallelism` that allows
obtaining a view of the original dispatcher with limited parallelism
([#​2919](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2919)).
- `Dispatchers.IO.limitedParallelism` usages ignore the bound on the
parallelism level of `Dispatchers.IO` itself to avoid starvation
([#​2943](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2943)).
- Introduced new `Dispatchers.shutdown` method for containerized
environments
([#​2558](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2558)).
- `newSingleThreadContext` and `newFixedThreadPoolContext` are promoted
to delicate API
([#​2919](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2919)).
##### Breaking changes
- When racing with cancellation, the `future` builder no longer reports
unhandled exceptions into the global `CoroutineExceptionHandler`. Thanks
[@​vadimsemenov](https://togithub.com/vadimsemenov)!
([#​2774](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2774),
[#​2791](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2791)).
- `Mutex.onLock` is deprecated for removal
([#​2794](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2794)).
- `Dispatchers.Main` is now used as the default source of time for
`delay` and `withTimeout` when present
([#​2972](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2972)).
- To opt-out from this behaviour, `kotlinx.coroutines.main.delay` system
property can be set to `false`.
- Java target of coroutines build is now 8 instead of 6
([#​1589](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1589)).
- **Source-breaking change**: extension `collect` no longer resolves
when used with a non-in-place argument of a functional type. This is a
candidate for a fix, uncovered after 1.6.0, see
[#​3107](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3107)
for the additional details.
##### Bug fixes and improvements
- Kotlin is updated to 1.6.0.
- Kotlin/Native [new memory
model](https://blog.jetbrains.com/kotlin/2021/08/try-the-new-kotlin-native-memory-manager-development-preview/)
is now supported in regular builds of coroutines conditionally depending
on whether `kotlin.native.binary.memoryModel` is enabled
([#​2914](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2914)).
- Introduced `CopyableThreadContextElement` for mutable context elements
shared among multiple coroutines. Thanks
[@​yorickhenning](https://togithub.com/yorickhenning)!
([#​2893](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2893)).
- `transformWhile`, `awaitClose`, `ProducerScope`, `merge`,
`runningFold`, `runingReduce`, and `scan` are promoted to stable API
([#​2971](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2971)).
- `SharedFlow.subscriptionCount` no longer conflates incoming updates
and gives all subscribers a chance to observe a short-lived subscription
([#​2488](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2488),
[#​2863](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2863),
[#​2871](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2871)).
- `Flow` exception transparency mechanism is improved to be more
exception-friendly
([#​3017](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3017),
[#​2860](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2860)).
- Cancellation from `flat*` operators that leverage multiple coroutines
is no longer propagated upstream
([#​2964](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2964)).
- `SharedFlow.collect` now returns `Nothing`
([#​2789](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2789),
[#​2502](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2502)).
- `DisposableHandle` is now `fun interface`, and corresponding inline
extension is removed
([#​2790](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2790)).
- `FlowCollector` is now `fun interface`, and corresponding inline
extension is removed
([#​3047](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3047)).
- Deprecation level of all previously deprecated signatures is raised
([#​3024](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3024)).
- The version file is shipped with each JAR as a resource
([#​2941](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2941)).
- Unhandled exceptions on K/N are passed to the standard library
function `processUnhandledException`
([#​2981](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2981)).
- A direct executor is used for `Task` callbacks in
`kotlinx-coroutines-play-services`
([#​2990](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2990)).
- Metadata of coroutines artifacts leverages Gradle platform to have all
versions of dependencies aligned
([#​2865](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2865)).
- Default `CoroutineExceptionHandler` is loaded eagerly and does not
invoke `ServiceLoader` on its exception-handling path
([#​2552](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2552)).
- Fixed the R8 rules for `ServiceLoader` optimization
([#​2880](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2880)).
- Fixed BlockHound integration false-positives
([#​2894](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2894),
[#​2866](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2866),
[#​2937](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2937)).
- Fixed the exception handler being invoked several times on Android,
thanks to [@​1zaman](https://togithub.com/1zaman)
([#​3056](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3056)).
- `SendChannel.trySendBlocking` is now available on Kotlin/Native
([#​3064](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3064)).
- The exception recovery mechanism now uses `ClassValue` when available
([#​2997](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2997)).
- JNA is updated to 5.9.0 to support Apple M1
([#​3001](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3001)).
- Obsolete method on internal `Delay` interface is deprecated
([#​2979](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2979)).
- Support of deprecated `CommonPool` is removed.
- `@ExperimentalTime` is no longer needed for methods that use
`Duration`
([#​3041](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3041)).
- JDK 1.6 is no longer required for building the project
([#​3043](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3043)).
- New version of Dokka is used, fixing the memory leak when building the
coroutines and providing brand new reference visuals
(https://kotlin.github.io/kotlinx.coroutines/)
([#​3051](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3051),
[#​3054](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3054)).
###
[`v1.5.2`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.5.2)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.5.1...1.5.2)
- Kotlin is updated to 1.5.30.
- New native targets for Apple Silicon are introduced.
- Fixed a bug when `onUndeliveredElement` was incorrectly called on
properly received elements on JS
([#​2826](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2826)).
- Fixed `Dispatchers.Default` on React Native, it now fully relies on
`setTimeout` instead of stub `process.nextTick`. Thanks to
[@​Legion2](https://togithub.com/Legion2)
([#​2843](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2843)).
- Optimizations of `Mutex` implementation
([#​2581](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2581)).
- `Mutex` implementation is made completely lock-free as stated
([#​2590](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2590)).
- Various documentation and guides improvements. Thanks to
[@​MasoodFallahpoor](https://togithub.com/MasoodFallahpoor) and
[@​Pihanya](https://togithub.com/Pihanya).
###
[`v1.5.1`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.5.1)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1)
- Atomic `update`, `getAndUpdate`, and `updateAndGet` operations of
`MutableStateFlow`
([#​2720](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2720)).
- `Executor.asCoroutineDispatcher` implementation improvements
([#​2601](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2601)):
- If the target executor is `ScheduledExecutorService`, then its
`schedule` API is used for time-related coroutine operations.
- `RemoveOnCancelPolicy` is now part of the public contract.
- Introduced overloads for `Task.asDeferred` and `Task.await` that
accept `CancellationTokenSource` for bidirectional cancellation
([#​2527](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2527)).
- Reactive streams are updated to `1.0.3`
([#​2740](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2740)).
- `CopyableThrowable` is allowed to modify the exception message during
stacktrace recovery
([#​1931](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1931)).
- `CoroutineDispatcher.releaseInterceptedContinuation` is now a `final`
method
([#​2785](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2785)).
- Closing a Handler underlying `Handler.asCoroutineDispatcher` now
causes the dispatched coroutines to be canceled on `Dispatchers.IO
(#​2778)`.
- Kotlin is updated to 1.5.20.
- Fixed a spurious `ClassCastException` in
`releaseInterceptedContinuation` and `IllegalStateException` from
`tryReleaseClaimedContinuation`
([#​2736](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2736),
[#​2768](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2768)).
- Fixed inconsistent exception message during stacktrace recovery for
non-suspending channel iterators
([#​2749](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2749)).
- Fixed linear stack usage for `CompletableFuture.asDeferred` when the
target future has a long chain of listeners
([#​2730](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2730)).
- Any exceptions from `CoroutineDispatcher.isDispatchNeeded` are now
considered as fatal and are propagated to the caller
([#​2733](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2733)).
- Internal `DebugProbesKt` (used in the debugger implementation) are
moved from `debug` to `core` module.
###
[`v1.5.0`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.5.0)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.4.3...1.5.0)
Note that this is a full changelog relative to 1.4.3 version. Changelog
relative to 1.5.0-RC can be found in the end.
##### Channels API
- Major channels API rework
([#​330](https://togithub.com/Kotlin/kotlinx.coroutines/issues/330),
[#​974](https://togithub.com/Kotlin/kotlinx.coroutines/issues/974)).
Existing `offer`, `poll`, and `sendBlocking` methods are deprecated,
internal `receiveCatching` and `onReceiveCatching` removed,
`receiveOrNull` and `onReceiveOrNull` are completely deprecated.
Previously deprecated `SendChannel.isFull` declaration is removed.
Channel operators deprecated with `ERROR` are now `HIDDEN`.
- New methods `receiveCatching`, `onReceiveCatching` `trySend`,
`tryReceive`, and `trySendBlocking` along with the new result type
`ChannelResult` are introduced. They provide better type safety, are
less error-prone, and have a consistent future-proof naming scheme. The
full rationale behind this change can be found
[here](https://togithub.com/Kotlin/kotlinx.coroutines/issues/974#issuecomment-806569582).
- `BroadcastChannel` and `ConflatedBroadcastChannel` are marked as
`ObsoleteCoroutinesApi` in the favor or `SharedFlow` and `StateFlow`.
The migration scheme can be found in their documentation. These classes
will be deprecated in the next major release.
- `callbackFlow` and `channelFlow` are promoted to stable API.
##### Reactive integrations
- All existing API in modules `kotlinx-coroutines-rx2`,
`kotlinx-coroutines-rx3`, `kotlinx-coroutines-reactive`,
`kotlinx-coroutines-reactor`, and `kotlinx-coroutines-jdk9` were
revisited and promoted to stable
([#​2545](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2545)).
- `publish` is no longer allowed to emit `null` values
([#​2646](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2646)).
- Misleading `awaitSingleOr*` functions on `Publisher` type are
deprecated
([#​2591](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2591)).
- `MaybeSource.await` is deprecated in the favor of `awaitSingle`,
additional lint functions for `Mono` are added in order to prevent
ambiguous `Publisher` usages
([#​2628](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2628),
[#​1587](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1587)).
- `ContextView` support in `kotlinx-coroutines-reactor`
([#​2575](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2575)).
- All reactive builders no longer ignore inner cancellation exceptions
preventing their completion
([#​2262](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2262),
[#​2646](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2646)).
- `MaybeSource.collect` and `Maybe.collect` properly finish when they
are completed without a value
([#​2617](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2617)).
- All exceptions are now consistently handled according to reactive
specification, whether they are considered 'fatal' or not by reactive
frameworks
([#​2646](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2646)).
##### Other improvements
- Kotlin version is upgraded to 1.5.0 and JVM target is updated to 1.8.
- `Flow.last` and `Flow.lastOrNull` operators
([#​2246](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2246)).
- `Flow.runningFold` operator
([#​2641](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2641)).
- `CoroutinesTimeout` rule for JUnit5
([#​2197](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2197)).
- Internals of `Job` and `AbstractCoroutine` was reworked, resulting in
smaller code size, less memory footprint, and better performance
([#​2513](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2513),
[#​2512](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2512)).
- `CancellationException` from Kotlin standard library is used for
cancellation on Koltin/JS and Kotlin/Native
([#​2638](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2638)).
- Introduced new `DelicateCoroutinesApi` annotation that warns users
about potential target API pitfalls and suggests studying API's
documentation first. The only delicate API right now is `GlobalScope`
([#​2637](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2637)).
- Fixed bug introduced in `1.4.3` when `kotlinx-coroutines-core.jar`
triggered IDEA debugger failure
([#​2619](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2619)).
- Fixed memory leak of `ChildHandlerNode` with reusable continuations
([#​2564](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2564)).
- Various documentation improvements
([#​2555](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2555),
[#​2589](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2589),
[#​2592](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2592),
[#​2583](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2583),
[#​2437](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2437),
[#​2616](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2616),
[#​2633](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2633),
[#​2560](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2560)).
##### Changelog relative to version 1.5.0-RC
- Fail-fast during `emitAll` called from cancelled `onCompletion`
operator
([#​2700](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2700)).
- Flows returned by `stateIn`/`shareIn` keep strong reference to sharing
job
([#​2557](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2557)).
- Rename internal `TimeSource` to `AbstractTimeSource` due to import
issues
([#​2691](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2691)).
- Reverted the change that triggered IDEA coroutines debugger crash
([#​2695](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2695),
reverted
[#​2291](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2291)).
- `watchosX64` target support for Kotlin/Native
([#​2524](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2524)).
- Various documentation fixes and improvements.
###
[`v1.4.3`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.4.3)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.4.2...1.4.3)
##### General changes
- Thread context is properly preserved and restored for coroutines
without `ThreadContextElement`
([#​985](https://togithub.com/Kotlin/kotlinx.coroutines/issues/985))
- `ThreadContextElement`s are now restored in the opposite order from
update
([#​2195](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2195))
- Improved performance of combine with 4 parameters, thanks to
[@​alexvanyo](https://togithub.com/alexvanyo)
([#​2419](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2419))
- Debug agent sanitizer leaves at least one frame with source location
([#​1437](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1437))
- Update Reactor version in `kotlinx-coroutines-reactor` to `3.4.1`,
thanks to [@​sokomishalov](https://togithub.com/sokomishalov)
([#​2432](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2432))
- `callsInPlace` contract added to `ReceiveChannel.consume`
([#​941](https://togithub.com/Kotlin/kotlinx.coroutines/issues/941))
- `CoroutineStart.UNDISPATCHED` promoted to stable API
([#​1393](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1393))
- Kotlin updated to 1.4.30
- `kotlinx.coroutines` are now released directly to MavenCentral
- Reduced the size of `DispatchedCoroutine` by a field
- Internal class `TimeSource` renamed to `SchedulerTimeSource` to
prevent wildcard import issues
([#​2537](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2537))
##### Bug fixes
- Fixed the problem that prevented implementation via delegation for
`Job` interface
([#​2423](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2423))
- Fixed incorrect ProGuard rules that allowed shrinking volatile felds
([#​1564](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1564))
- Fixed `await`/`asDeferred` for `MinimalStage` implementations in jdk8
module
([#​2456](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2456))
- Fixed bug when `onUndeliveredElement` wasn't called for unlimited
channels
([#​2435](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2435))
- Fixed a bug when `ListenableFuture.isCancelled` returned from
`asListenableFuture` could have thrown an exception, thanks to
[@​vadimsemenov](https://togithub.com/vadimsemenov)
([#​2421](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2421))
- Coroutine in `callbackFlow` and `produce` is properly cancelled when
the channel was closed separately
([#​2506](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2506))
###
[`v1.4.2`](https://togithub.com/Kotlin/kotlinx.coroutines/releases/tag/1.4.2)
[Compare
Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.4.1...1.4.2)
- Fixed `StackOverflowError` in `Job.toString` when `Job` is observed in
its intermediate state
([#​2371](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2371)).
- Improved liveness and latency of `Dispatchers.Default` and
`Dispatchers.IO` in low-loaded mode
([#​2381](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2381)).
- Improved performance of consecutive `Channel.cancel` invocations
([#​2384](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2384)).
- `SharingStarted` is now `fun` interface
([#​2397](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2397)).
- Additional lint settings for `SharedFlow` to catch programmatic errors
early
([#​2376](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2376)).
- Fixed bug when mutex and semaphore were not released during
cancellation
([#​2390](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2390),
thanks to [@​Tilps](https://togithub.com/Tilps) for reproducing).
- Some corner cases in cancellation propagation between coroutines and
listenable futures are repaired
([#​1442](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1442),
thanks to [@​vadimsemenov](https://togithub.com/vadimsemenov)).
- Fixed unconditional cast to `CoroutineStackFrame` in exception
recovery that triggered failures of instrumented code
([#​2386](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2386)).
- Platform-specific dependencies are removed from
`kotlinx-coroutines-javafx`
([#​2360](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2360)).
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.
👻 **Immortal**: This PR will be recreated if closed unmerged. Get
[config help](https://togithub.com/renovatebot/renovate/discussions) if
that's undesired.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box
---
This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/pachli/pachli-android).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy40MjEuOSIsInVwZGF0ZWRJblZlciI6IjM3LjQzMS40IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>