Kotlin/kotlinx.coroutines
### [`v1.6.2`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-162)
[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/blob/HEAD/CHANGES.md#Version-161)
[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/blob/HEAD/CHANGES.md#Version-160)
[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)).
##### Changelog relative to version 1.6.0-RC3
- Restored MPP binary compatibility on K/JS and K/N ([#3104](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3104)).
- Fixed Dispatchers.Main not being fully initialized on Android and Swing ([#3101](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3101)).
### [`v1.5.2`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-152)
[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 a 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/blob/HEAD/CHANGES.md#Version-151)
[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/blob/HEAD/CHANGES.md#Version-150)
[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.
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.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
[ ] If you want to rebase/retry this PR, click this checkbox.
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
1.4.3
->1.6.2
Release Notes
Kotlin/kotlinx.coroutines
### [`v1.6.2`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-162) [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/blob/HEAD/CHANGES.md#Version-161) [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/blob/HEAD/CHANGES.md#Version-160) [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)). ##### Changelog relative to version 1.6.0-RC3 - Restored MPP binary compatibility on K/JS and K/N ([#3104](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3104)). - Fixed Dispatchers.Main not being fully initialized on Android and Swing ([#3101](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3101)). ### [`v1.5.2`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-152) [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 a 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/blob/HEAD/CHANGES.md#Version-151) [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/blob/HEAD/CHANGES.md#Version-150) [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.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.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.