LeoColman / Petals

🌻 The Open Source app Petals aims to help its users to either quit weed, reduce usage or simply know how much they're using.
GNU Affero General Public License v3.0
73 stars 27 forks source link

⬆ Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm to v1.8.1 #637

Closed renovate[bot] closed 2 weeks ago

renovate[bot] commented 2 weeks ago

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm 1.5.2 -> 1.8.1 age adoption passing confidence

Release Notes

Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm) ### [`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) - 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 ([#​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) - 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) - 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) 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)).

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Enabled.

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.