Update dependency org.jetbrains.kotlinx:kotlinx-coroutines-core to v1.11.0 #11

Open
asteriasmaid[bot] wants to merge 1 commit from renovate/kotlinx-coroutines-monorepo into master
asteriasmaid[bot] commented 2026-06-04 13:55:18 +02:00 (Migrated from github.com)

Note

This PR body was truncated due to platform limits.

This PR contains the following updates:

Package Change Age Confidence
org.jetbrains.kotlinx:kotlinx-coroutines-core 1.4.2 → 1.11.0 age confidence

Release Notes

Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-core)

v1.11.0

Compare Source

Various
  • Kotlin was updated to 2.2.20 (#​4545).
  • Improved the published jar files (#​3842, #​4599).
  • Various documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc (#​4433, #​4596).
Breaking changes and deprecations
  • Moved Promise-related functions from JS and Wasm/JS to the new web target. On Wasm/JS, this is a breaking change. Before the change, Promise on Wasm/JS could work with arbitrary Kotlin types, but now, only JsAny subtypes are accepted (#​4563).
  • Changed handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime (#​4451, #​4631).
  • Deprecated using CoroutineDispatcher as the coroutine context key; now, ContinuationInterceptor has to be used instead (#​4333).
  • Advanced the deprecation levels on kotlinx-coroutines-test APIs (#​4604).
  • Added lint functions that mark passing a Job to coroutine builders as deprecated (#​4435).
Bug fixes and improvements
  • Added a callsInPlace(EXACTLY_ONCE) contract to runBlocking in code shared between JVM and Native (#​4368).
  • Added a callsInPlace(EXACTLY_ONCE) contract to suspendCancellableCoroutine (#​4574).
  • Fixed flowOn incorrectly handling ThreadContextElement updates (#​4403).
  • Fixed exceptions in user-supplied Thread.UncaughtExceptionHandler instances causing the internal coroutines machinery to fail (#​4516).
  • Fixed CoroutineDispatcher.asScheduler in the RxJava integration not cancelling outstanding work when a Worker gets cancelled, which led to memory leaks in some scenarios (#​4615).
  • Fixed SharedFlow entering an invalid state when a subscriber and an emitter are cancelled simultaneously (#​4583).
  • Fixed an R8 optimization leading to shareIn/stateIn coroutines getting garbage-collected (#​4646). Thanks, @​solevic!
Small additions
  • Added CompletableDeferred.asDeferred for obtaining a read-only Deferred view (#​4408).
  • Added SharedFlow.asFlow for obtaining a Flow view with hidden hot flow semantics (#​4530). Thanks, @​g000sha256!
  • Added a StateFlow.collectLatest overload returning Nothing to assist with finding unreachable code (#​4454).
  • Added ReceiveChannel.consumeTo for consuming a ReceiveChannel into a MutableCollection (#​4520).
  • Added a StateFlow<T>.onSubscription overload returning a StateFlow<T>, similar to SharedFlow<T>.onSubscription returning SharedFlow<T> (#​4275). Thanks, @​xit0c!
  • Added terminal Flow operators for collecting a Flow to a Map (#​1541).
Changelog relative to version 1.11.0

No changes, only the version is increased.

v1.10.2

Compare Source

  • Fixed the kotlinx-coroutines-debug JAR file including the module-info.class file twice, resulting in failures in various tooling (#​4314). Thanks, @​RyuNen344!
  • Fixed Flow.stateIn hanging when the scope is cancelled in advance or the flow is empty (#​4322). Thanks, @​francescotescari!
  • Improved handling of dispatcher failures in .limitedParallelism (#​4330) and during flow collection (#​4272).
  • Fixed runBlocking failing to run its coroutine to completion in some cases if its JVM thread got interrupted (#​4399).
  • Small tweaks, fixes, and documentation improvements.

v1.10.1

Compare Source

  • Fixed binary incompatibility introduced for non-JVM targets in #​4261 (#​4309).

v1.10.0

Compare Source

  • Kotlin was updated to 2.1.0 (#​4284).
  • Introduced Flow.any, Flow.all, and Flow.none (#​4212). Thanks, @​CLOVIS-AI!
  • Reorganized kotlinx-coroutines-debug and kotlinx-coroutines-core code to avoid a split package between the two artifacts (#​4247). Note that directly referencing kotlinx.coroutines.debug.AgentPremain must now be replaced with kotlinx.coroutines.debug.internal.AgentPremain. Thanks, @​sellmair!
  • No longer shade byte-buddy in kotlinx-coroutines-debug, reducing the artifact size and simplifying the build configuration of client code. Thanks, @​sellmair!
  • Fixed NullPointerException when using Java-deserialized kotlinx-coroutines-core exceptions (#​4291). Thanks, @​AlexRiedler!
  • Properly report exceptions thrown by CoroutineDispatcher.dispatch instead of raising internal errors (#​4091). Thanks, @​zuevmaxim!
  • Fixed a bug that delayed scheduling of a Dispatchers.Default or Dispatchers.IO task after a yield() in rare scenarios (#​4248).
  • Fixed a bug that prevented the main() coroutine on Wasm/WASI from executing after a delay() call in some scenarios (#​4239).
  • Fixed scheduling of runBlocking tasks on Kotlin/Native that arrive after the runBlocking block was exited (#​4245).
  • Fixed some terminal Flow operators sometimes resuming without taking cancellation into account (#​4254). Thanks, @​jxdabc!
  • Fixed a bug on the JVM that caused coroutine-bound ThreadLocal values not to get cleaned when using non-CoroutineDispatcher continuation interceptors (#​4296).
  • Small tweaks, fixes, and documentation improvements.

v1.9.0

Compare Source

Features
  • Wasm/WASI target support (#​4064). Thanks, @​igoriakovlev!
  • limitedParallelism now optionally accepts the name of the dispatcher view for easier debugging (#​4023).
  • No longer initialize Dispatchers.IO on the JVM when other standard dispatchers are accessed (#​4166). Thanks, @​metalhead8816!
  • Introduced the Flow<T>.chunked(size: Int): Flow<List<T>> operator that groups emitted values into groups of the given size (#​1290).
  • Closeable dispatchers are instances of AutoCloseable now (#​4123).
Fixes
  • Calling hasNext on a Channel's iterator is idempotent (#​4065). Thanks, @​gitpaxultek!
  • CoroutineScope() created without an explicit dispatcher uses Dispatchers.Default on Native (#​4074). Thanks, @​whyoleg!
  • Fixed a bug that prevented non-Android Dispatchers.Main from initializing when the Firebase dependency is used (#​3914).
  • Ensured a more intuitive ordering of tasks in runBlocking (#​4134).
  • Forbid casting a Mutex to Semaphore (#​4176).
  • Worked around a stack overflow that may occur when calling asDeferred on a Future many times (#​4156).
Deprecations and promotions
  • Advanced the deprecation levels for BroadcastChannel-based API (#​4197).
  • Advanced the deprecation levels for the old kotlinx-coroutines-test API (#​4198).
  • Deprecated Job.cancelFutureOnCompletion (#​4173).
  • Promoted CoroutineDispatcher.limitedParallelism to stable (#​3864).
  • Promoted CoroutineStart.ATOMIC from ExperimentalCoroutinesApi to DelicateCoroutinesApi (#​4169).
  • Promoted CancellableContinuation.resume with an onCancellation lambda to stable, providing extra arguments to the lambda (#​4088).
  • Marked the classes and interfaces that are not supposed to be inherited from with the new InternalForInheritanceCoroutinesApi opt-in (#​3770).
  • Marked the classes and interfaces inheriting from which is not stable with the new ExperimentalForInheritanceCoroutinesApi opt-in (#​3770).
Other
  • Kotlin was updated to 2.0 (#​4137).
  • Reworked the documentation for CoroutineStart and Channel-based API (#​4147, #​4148, #​4167). Thanks, @​globsterg!
  • Simplified the internal implementation of Job (#​4053).
  • Small tweaks, fixes, and documentation improvements.

v1.8.1

Compare Source

  • Remove the @ExperimentalTime annotation from usages of TimeSource (#​4046). Thanks, @​hfhbd!
  • Introduce a workaround for an Android bug that caused an occasional NullPointerException when setting the StateFlow value on old Android devices (#​3820).
  • No longer use kotlin.random.Random as part of Dispatchers.Default and Dispatchers.IO initialization (#​4051).
  • Flow.timeout throws the exception with which the channel was closed (#​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).
  • Small documentation fixes.

v1.8.0

Compare Source

  • Implement the library for the Web Assembly (Wasm) for JavaScript (#​3713). Thanks @​igoriakovlev!
  • Major Kotlin version update: was 1.8.20, became 1.9.21.
  • On Android, ensure that Dispatchers.Main != Dispatchers.Main.immediate (#​3545, #​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, #​4038)
  • kotlinx-coroutines-debug is published with the correct Java 9 module info (#​3944).
  • kotlinx-coroutines-debug no longer requires manually setting DebugProbes.enableCoroutineCreationStackTraces to false, it's the default (#​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).
  • kotlinx-coroutines-test: fixed a bug that could lead to not all uncaught exceptions being reported after some tests failed (#​3800).
  • delay(Duration) rounds nanoseconds up to whole milliseconds and not down (#​3920). Thanks @​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).
  • It is guaranteed that by the time SharedFlow.collect suspends for the first time, it's registered as a subscriber for that SharedFlow (#​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).
  • Added a workaround for miscompilation of withLock on JS (#​3881). Thanks @​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).
  • 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, #​4038)
  • Small documentation fixes.

v1.7.3

Compare Source

  • Disabled the publication of the multiplatform library metadata for the old (1.6 and earlier) KMP Gradle plugin (#​3809).
  • Fixed a bug introduced in 1.7.2 that disabled the coroutine debugger in IDEA (#​3822).

v1.7.2

Compare Source

Bug fixes and improvements
  • Coroutines debugger no longer keeps track of coroutines with empty coroutine context (#​3782).
  • CopyableThreadContextElement now properly copies an element when crossing the coroutine boundary in flowOn (#​3787). Thanks @​wanyingd1996!
  • Coroutine timeouts no longer prevent K/N newSingleThreadContext from closing (#​3768).
  • A non-linearizability in Mutex during tryLock/unlock sequence with owners is fixed (#​3745).
  • Atomicfu version is updated to 0.21.0.

v1.7.1

Compare Source

Bug fixes and improvements
  • Special characters in coroutine names in JSON dumps are supported (#​3747)
  • The binary compatibility of the experimental overload of runTest is restored (#​3673)
  • Channels that don't use onUndeliveredElement now allocate less memory (#​3646)

v1.7.0

Compare Source

Core API significant improvements
  • New Channel implementation with significant performance improvements across the API (#​3621).
  • New select operator implementation: faster, more lightweight, and more robust (#​3020).
  • Mutex and Semaphore now share the same underlying data structure (#​3020).
  • Dispatchers.IO is added to K/N (#​3205)
    • newFixedThreadPool and Dispatchers.Default implementations on K/N were wholly rewritten to support graceful growth under load (#​3595).
  • kotlinx-coroutines-test rework:
    • Add the timeout parameter to runTest for the whole-test timeout, 10 seconds by default (#​3270). This replaces the configuration of quiescence timeouts, which is now deprecated (#​3603).
    • The withTimeout exception messages indicate if the timeout used the virtual time (#​3588).
    • TestCoroutineScheduler, runTest, and TestScope API are promoted to stable (#​3622).
    • runTest now also fails if there were uncaught exceptions in coroutines not inherited from the test coroutine (#​1205).
Breaking changes
  • Old K/N memory model is no longer supported (#​3375).
  • New generic upper bounds were added to reactive integration API where the language since 1.8.0 dictates (#​3393).
  • kotlinx-coroutines-core and kotlinx-coroutines-jdk8 artifacts were merged into a single artifact (#​3268).
  • Artificial stackframes in stacktrace recovery no longer contain the \b symbol and are now navigable in IDE and supplied with proper documentation (#​2291).
  • CoroutineContext.isActive returns true for contexts without any job in them (#​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)..
  • JPMS is supported (#​2237). Thanks @​lion7!
  • BroadcastChannel and all the corresponding API are deprecated (#​2680).
  • Added all supported K/N targets (#​3601, #​812, #​855).
  • K/N Dispatchers.Default is backed by the number of threads equal to the number of available cores (#​3366).
  • Fixed an issue where some coroutines' internal exceptions were not properly serializable (#​3328).
  • Introduced Job.parent API (#​3201).
  • Fixed a bug when TestScheduler leaked cancelled jobs (#​3398).
  • TestScope.timeSource now provides comparable time marks (#​3617). Thanks @​hfhbd!
  • Fixed an issue when cancelled withTimeout handles were preserved in JS runtime (#​3440).
  • Ensure awaitFrame only awaits a single frame when used from the main looper (#​3432). Thanks @​pablobaxter!
  • Obsolete Class-Path attribute was removed from kotlinx-coroutines-debug.jar manifest (#​3361).
  • Fixed a bug when updateThreadContext operated on the parent context (#​3411).
  • Added new Flow.filterIsInstance extension (#​3240).
  • Dispatchers.Default thread name prefixes are now configurable with system property (#​3231).
  • Added Flow.timeout operator as @FlowPreview (#​2624). Thanks @​pablobaxter!
  • Improved the performance of the future builder in case of exceptions (#​3475). Thanks @​He-Pin!
  • Mono.awaitSingleOrNull now waits for the onComplete signal (#​3487).
  • Channel.isClosedForSend and Channel.isClosedForReceive are promoted from experimental to delicate (#​3448).
  • Fixed a data race in native EventLoop (#​3547).
  • Dispatchers.IO.limitedParallelism(valueLargerThanIOSize) no longer creates an additional wrapper (#​3442). Thanks @​dovchinnikov!
  • Various @FlowPreview and @ExperimentalCoroutinesApi are promoted to experimental and stable respectively (#​3542, #​3097, #​3548).
  • Performance improvements in Dispatchers.Default and Dispatchers.IO (#​3416, #​3418).
  • Fixed a bug when internal suspendCancellableCoroutineReusable might have hanged (#​3613).
  • Introduced internal API to process events in the current system dispatcher (#​3439).
  • Global CoroutineExceptionHandler is no longer invoked in case of unprocessed future failure (#​3452).
  • Performance improvements and reduced thread-local pressure for the withContext operator (#​3592).
  • Improved performance of DebugProbes (#​3527).
  • Fixed a bug when the coroutine debugger might have detected the state of a coroutine incorrectly (#​3193).
  • CoroutineDispatcher.asExecutor() runs tasks without dispatching if the dispatcher is unconfined (#​3683). Thanks @​odedniv!
  • SharedFlow.toMutableList and SharedFlow.toSet lints are introduced (#​3706).
  • Channel.invokeOnClose is promoted to stable API (#​3358).
  • Improved lock contention in Dispatchers.Default and Dispatchers.IO during the startup phase (#​3652).
  • Fixed a bug that led to threads oversubscription in Dispatchers.Default (#​3642).
  • Fixed a bug that allowed limitedParallelism to perform dispatches even after the underlying dispatcher was closed (#​3672).
  • Fixed a bug that prevented stacktrace recovery when the exception's constructor from cause was selected (#​3714).
  • Improved sanitizing of stracktrace-recovered traces (#​3714).
  • Introduced an internal flag to disable uncaught exceptions reporting in tests as a temporary migration mechanism (#​3736).
  • Various documentation improvements and fixes.

Changelog for previous versions may be found in CHANGES_UP_TO_1.7.md

v1.6.4

Compare Source

  • Added TestScope.backgroundScope for launching coroutines that perform work in the background and need to be cancelled at the end of the test (#​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).
  • Fixed the Publisher.await functions in kotlinx-coroutines-reactive not ensuring that the Subscriber methods are invoked serially (#​3360). Thank you, @​EgorKulbachka!
  • Fixed a memory leak in withTimeout on K/N with the new memory model (#​3351).
  • Added the guarantee that all Throwable implementations in the core library are serializable (#​3328).
  • Moved the documentation to https://kotlinlang.org/api/kotlinx.coroutines/ (#​3342).
  • Various documentation improvements.

v1.6.3

Compare Source

  • Updated atomicfu version to 0.17.3 (#​3321), fixing the projects using this library with JS IR failing to build (#​3305).

v1.6.2

Compare Source

  • Fixed a bug with ThreadLocalElement not being correctly updated when the most outer suspend function was called directly without kotlinx.coroutines (#​2930).
  • Fixed multiple data races: one that might have been affecting runBlocking event loop, and a benign data race in Mutex (#​3250, #​3251).
  • Obsolete TestCoroutineContext is removed, which fixes the kotlinx-coroutines-test JPMS package being split between kotlinx-coroutines-core and kotlinx-coroutines-test (#​3218).
  • Updated the ProGuard rules to further shrink the size of the resulting DEX file with coroutines (#​3111, #​3263). Thanks, @​agrieve!
  • Atomicfu is updated to 0.17.2, which includes a more efficient and robust JS IR transformer (#​3255).
  • Kotlin is updated to 1.6.21, Gradle version is updated to 7.4.2 (#​3281). Thanks, @​wojtek-kalicinski!
  • Various documentation improvements.

v1.6.1

Compare Source

  • Rollback of time-related functions dispatching on Dispatchers.Main.
    This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#​3106, #​3113).
  • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#​3227).
  • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#​2930).
  • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#​3180).
  • New API to convert a CoroutineDispatcher to a Rx scheduler (#​968, #​548). Thanks @​recheej!
  • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#​3197).
  • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#​3223).
  • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#​3153).
  • Static memory consumption of Dispatchers.Default was significantly reduced (#​3137).
  • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

v1.6.0

Compare Source

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
Dispatchers
  • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#​2919).
  • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#​2943).
  • Introduced new Dispatchers.shutdown method for containerized environments (#​2558).
  • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#​2919).
Breaking changes
  • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#​2774, #​2791).
  • Mutex.onLock is deprecated for removal (#​2794).
  • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present (#​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).
  • 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 for the additional details.
Bug fixes and improvements
  • Kotlin is updated to 1.6.0.
  • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#​2914).
  • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#​2893).
  • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#​2971).
  • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#​2488, #​2863, #​2871).
  • Flow exception transparency mechanism is improved to be more exception-friendly (#​3017, #​2860).
  • Cancellation from flat* operators that leverage multiple coroutines is no longer propagated upstream (#​2964).
  • SharedFlow.collect now returns Nothing (#​2789, #​2502).
  • DisposableHandle is now fun interface, and corresponding inline extension is removed (#​2790).
  • FlowCollector is now fun interface, and corresponding inline extension is removed (#​3047).
  • Deprecation level of all previously deprecated signatures is raised (#​3024).
  • The version file is shipped with each JAR as a resource (#​2941).
  • Unhandled exceptions on K/N are passed to the standard library function processUnhandledException (#​2981).
  • A direct executor is used for Task callbacks in kotlinx-coroutines-play-services (#​2990).
  • Metadata of coroutines artifacts leverages Gradle platform to have all versions of dependencies aligned (#​2865).
  • Default CoroutineExceptionHandler is loaded eagerly and does not invoke ServiceLoader on its exception-handling path (#​2552).
  • Fixed the R8 rules for ServiceLoader optimization (#​2880).
  • Fixed BlockHound integration false-positives (#​2894, #​2866, #​2937).
  • Fixed the exception handler being invoked several times on Android, thanks to @​1zaman (#​3056).
  • SendChannel.trySendBlocking is now available on Kotlin/Native (#​3064).
  • The exception recovery mechanism now uses ClassValue when available (#​2997).
  • JNA is updated to 5.9.0 to support Apple M1 (#​3001).
  • Obsolete method on internal Delay interface is deprecated (#​2979).
  • Support of deprecated CommonPool is removed.
  • @ExperimentalTime is no longer needed for methods that use Duration (#​3041).
  • JDK 1.6 is no longer required for building the project (#​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, #​3054).

v1.5.2

Compare Source

  • 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).
  • Fixed Dispatchers.Default on React Native, it now fully relies on setTimeout instead of stub process.nextTick. Thanks to @​Legion2 (#​2843).
  • Optimizations of Mutex implementation (#​2581).
  • Mutex implementation is made completely lock-free as stated (#​2590).
  • Various documentation and guides improvements. Thanks to @​MasoodFallahpoor and @​Pihanya.

v1.5.1

Compare Source

  • Atomic update, getAndUpdate, and updateAndGet operations of MutableStateFlow (#​2720).
  • Executor.asCoroutineDispatcher implementation improvements (#​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).
  • Reactive streams are updated to 1.0.3 (#​2740).
  • CopyableThrowable is allowed to modify the exception message during stacktrace recovery (#​1931).
  • CoroutineDispatcher.releaseInterceptedContinuation is now a final method (#​2785).
  • Closing a Handler underlying Handler.asCoroutineDispatcher now causes the dispatched coroutines to be canceled on Dispatchers.IO (#&#8203;2778).
  • Kotlin is updated to 1.5.20.
  • Fixed a spurious ClassCastException in releaseInterceptedContinuation and IllegalStateException from tryReleaseClaimedContinuation (#​2736, #​2768).
  • Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators (#​2749).
  • Fixed linear stack usage for CompletableFuture.asDeferred when the target future has a long chain of listeners (#​2730).
  • Any exceptions from CoroutineDispatcher.isDispatchNeeded are now considered as fatal and are propagated to the caller (#​2733).
  • Internal DebugProbesKt (used in the debugger implementation) are moved from debug to core module.

v1.5.0

Compare Source

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, #​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.
  • 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).
  • publish is no longer allowed to emit null values (#​2646).
  • Misleading awaitSingleOr* functions on Publisher type are deprecated (#​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, #​1587).
  • ContextView support in kotlinx-coroutines-reactor (#​2575).
  • All reactive builders no longer ignore inner cancellation exceptions preventing their completion (#​2262, #​2646).
  • MaybeSource.collect and Maybe.collect properly finish when they are completed without a value (#​2617).
  • All exceptions are now consistently handled according to reactive specification, whether they are considered 'fatal' or not by reactive frameworks (#​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).
  • Flow.runningFold operator (#​2641).
  • CoroutinesTimeout rule for JUnit5 (#​2197).
  • Internals of Job and AbstractCoroutine was reworked, resulting in smaller code size, less memory footprint, and better performance (#​2513, #​2512).
  • CancellationException from Kotlin standard library is used for cancellation on Koltin/JS and Kotlin/Native (#​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).
  • Fixed bug introduced in 1.4.3 when kotlinx-coroutines-core.jar triggered IDEA debugger failure (#​2619).
  • Fixed memory leak of ChildHandlerNode with reusable continuations (#​2564).
  • Various documentation improvements (#​2555, #​2589, #​2592, #​2583, #​2437, #​2616, #​2633, [#​2560](https://redirect.github.com/Kotlin/kotlinx.coroutines/is

Important

✂ PR body was truncated to here.


Configuration

📅 Schedule: (UTC)

  • 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, check this box

This PR has been generated by Mend Renovate CLI.

> [!NOTE] > This PR body was truncated due to platform limits. This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [org.jetbrains.kotlinx:kotlinx-coroutines-core](https://redirect.github.com/Kotlin/kotlinx.coroutines) | `1.4.2` → `1.11.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.jetbrains.kotlinx:kotlinx-coroutines-core/1.11.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.jetbrains.kotlinx:kotlinx-coroutines-core/1.4.2/1.11.0?slim=true) | --- ### Release Notes <details> <summary>Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-core)</summary> ### [`v1.11.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-1110) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.10.2...1.11.0) ##### Various - Kotlin was updated to 2.2.20 ([#&#8203;4545](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4545)). - Improved the published jar files ([#&#8203;3842](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3842), [#&#8203;4599](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4599)). - Various documentation improvements, including complete rewrites of structured concurrency and error handling-related KDoc ([#&#8203;4433](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4433), [#&#8203;4596](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4596)). ##### Breaking changes and deprecations - Moved `Promise`-related functions from JS and Wasm/JS to the new `web` target. On Wasm/JS, this is a breaking change. Before the change, `Promise` on Wasm/JS could work with arbitrary Kotlin types, but now, only `JsAny` subtypes are accepted ([#&#8203;4563](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4563)). - Changed handling of coroutine exceptions that can't be propagated on JS and Wasm/JS. Before, exceptions were logged, but now, they are reported to the JS runtime ([#&#8203;4451](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4451), [#&#8203;4631](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4631)). - Deprecated using `CoroutineDispatcher` as the coroutine context key; now, `ContinuationInterceptor` has to be used instead ([#&#8203;4333](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4333)). - Advanced the deprecation levels on `kotlinx-coroutines-test` APIs ([#&#8203;4604](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4604)). - Added lint functions that mark passing a `Job` to coroutine builders as deprecated ([#&#8203;4435](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4435)). ##### Bug fixes and improvements - Added a `callsInPlace(EXACTLY_ONCE)` contract to `runBlocking` in code shared between JVM and Native ([#&#8203;4368](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4368)). - Added a `callsInPlace(EXACTLY_ONCE)` contract to `suspendCancellableCoroutine` ([#&#8203;4574](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4574)). - Fixed `flowOn` incorrectly handling `ThreadContextElement` updates ([#&#8203;4403](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4403)). - Fixed exceptions in user-supplied `Thread.UncaughtExceptionHandler` instances causing the internal coroutines machinery to fail ([#&#8203;4516](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4516)). - Fixed `CoroutineDispatcher.asScheduler` in the RxJava integration not cancelling outstanding work when a `Worker` gets cancelled, which led to memory leaks in some scenarios ([#&#8203;4615](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4615)). - Fixed `SharedFlow` entering an invalid state when a subscriber and an emitter are cancelled simultaneously ([#&#8203;4583](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4583)). - Fixed an R8 optimization leading to `shareIn`/`stateIn` coroutines getting garbage-collected ([#&#8203;4646](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4646)). Thanks, [@&#8203;solevic](https://redirect.github.com/solevic)! ##### Small additions - Added `CompletableDeferred.asDeferred` for obtaining a read-only `Deferred` view ([#&#8203;4408](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4408)). - Added `SharedFlow.asFlow` for obtaining a `Flow` view with hidden hot flow semantics ([#&#8203;4530](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4530)). Thanks, [@&#8203;g000sha256](https://redirect.github.com/g000sha256)! - Added a `StateFlow.collectLatest` overload returning `Nothing` to assist with finding unreachable code ([#&#8203;4454](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4454)). - Added `ReceiveChannel.consumeTo` for consuming a `ReceiveChannel` into a `MutableCollection` ([#&#8203;4520](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4520)). - Added a `StateFlow<T>.onSubscription` overload returning a `StateFlow<T>`, similar to `SharedFlow<T>.onSubscription` returning `SharedFlow<T>` ([#&#8203;4275](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4275)). Thanks, [@&#8203;xit0c](https://redirect.github.com/xit0c)! - Added terminal `Flow` operators for collecting a `Flow` to a `Map` ([#&#8203;1541](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1541)). ##### Changelog relative to version 1.11.0 No changes, only the version is increased. ### [`v1.10.2`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-1102) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.10.1...1.10.2) - Fixed the `kotlinx-coroutines-debug` JAR file including the `module-info.class` file twice, resulting in failures in various tooling ([#&#8203;4314](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4314)). Thanks, [@&#8203;RyuNen344](https://redirect.github.com/RyuNen344)! - Fixed `Flow.stateIn` hanging when the scope is cancelled in advance or the flow is empty ([#&#8203;4322](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4322)). Thanks, [@&#8203;francescotescari](https://redirect.github.com/francescotescari)! - Improved handling of dispatcher failures in `.limitedParallelism` ([#&#8203;4330](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4330)) and during flow collection ([#&#8203;4272](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4272)). - Fixed `runBlocking` failing to run its coroutine to completion in some cases if its JVM thread got interrupted ([#&#8203;4399](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4399)). - Small tweaks, fixes, and documentation improvements. ### [`v1.10.1`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-1101) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.10.0...1.10.1) - Fixed binary incompatibility introduced for non-JVM targets in [#&#8203;4261](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4261) ([#&#8203;4309](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4309)). ### [`v1.10.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-1100) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.9.0...1.10.0) - Kotlin was updated to 2.1.0 ([#&#8203;4284](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4284)). - Introduced `Flow.any`, `Flow.all`, and `Flow.none` ([#&#8203;4212](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4212)). Thanks, [@&#8203;CLOVIS-AI](https://redirect.github.com/CLOVIS-AI)! - Reorganized `kotlinx-coroutines-debug` and `kotlinx-coroutines-core` code to avoid a split package between the two artifacts ([#&#8203;4247](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4247)). Note that directly referencing `kotlinx.coroutines.debug.AgentPremain` must now be replaced with `kotlinx.coroutines.debug.internal.AgentPremain`. Thanks, [@&#8203;sellmair](https://redirect.github.com/sellmair)! - No longer shade byte-buddy in `kotlinx-coroutines-debug`, reducing the artifact size and simplifying the build configuration of client code. Thanks, [@&#8203;sellmair](https://redirect.github.com/sellmair)! - Fixed `NullPointerException` when using Java-deserialized `kotlinx-coroutines-core` exceptions ([#&#8203;4291](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4291)). Thanks, [@&#8203;AlexRiedler](https://redirect.github.com/AlexRiedler)! - Properly report exceptions thrown by `CoroutineDispatcher.dispatch` instead of raising internal errors ([#&#8203;4091](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4091)). Thanks, [@&#8203;zuevmaxim](https://redirect.github.com/zuevmaxim)! - Fixed a bug that delayed scheduling of a `Dispatchers.Default` or `Dispatchers.IO` task after a `yield()` in rare scenarios ([#&#8203;4248](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4248)). - Fixed a bug that prevented the `main()` coroutine on Wasm/WASI from executing after a `delay()` call in some scenarios ([#&#8203;4239](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4239)). - Fixed scheduling of `runBlocking` tasks on Kotlin/Native that arrive after the `runBlocking` block was exited ([#&#8203;4245](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4245)). - Fixed some terminal `Flow` operators sometimes resuming without taking cancellation into account ([#&#8203;4254](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4254)). Thanks, [@&#8203;jxdabc](https://redirect.github.com/jxdabc)! - Fixed a bug on the JVM that caused coroutine-bound `ThreadLocal` values not to get cleaned when using non-`CoroutineDispatcher` continuation interceptors ([#&#8203;4296](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4296)). - Small tweaks, fixes, and documentation improvements. ### [`v1.9.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-190) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.8.1...1.9.0) ##### Features - Wasm/WASI target support ([#&#8203;4064](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4064)). Thanks, [@&#8203;igoriakovlev](https://redirect.github.com/igoriakovlev)! - `limitedParallelism` now optionally accepts the name of the dispatcher view for easier debugging ([#&#8203;4023](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4023)). - No longer initialize `Dispatchers.IO` on the JVM when other standard dispatchers are accessed ([#&#8203;4166](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4166)). Thanks, [@&#8203;metalhead8816](https://redirect.github.com/metalhead8816)! - Introduced the `Flow<T>.chunked(size: Int): Flow<List<T>>` operator that groups emitted values into groups of the given size ([#&#8203;1290](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1290)). - Closeable dispatchers are instances of `AutoCloseable` now ([#&#8203;4123](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4123)). ##### Fixes - Calling `hasNext` on a `Channel`'s iterator is idempotent ([#&#8203;4065](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4065)). Thanks, [@&#8203;gitpaxultek](https://redirect.github.com/gitpaxultek)! - `CoroutineScope()` created without an explicit dispatcher uses `Dispatchers.Default` on Native ([#&#8203;4074](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4074)). Thanks, [@&#8203;whyoleg](https://redirect.github.com/whyoleg)! - Fixed a bug that prevented non-Android `Dispatchers.Main` from initializing when the Firebase dependency is used ([#&#8203;3914](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3914)). - Ensured a more intuitive ordering of tasks in `runBlocking` ([#&#8203;4134](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4134)). - Forbid casting a `Mutex` to `Semaphore` ([#&#8203;4176](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4176)). - Worked around a stack overflow that may occur when calling `asDeferred` on a `Future` many times ([#&#8203;4156](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4156)). ##### Deprecations and promotions - Advanced the deprecation levels for `BroadcastChannel`-based API ([#&#8203;4197](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4197)). - Advanced the deprecation levels for the old `kotlinx-coroutines-test` API ([#&#8203;4198](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4198)). - Deprecated `Job.cancelFutureOnCompletion` ([#&#8203;4173](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4173)). - Promoted `CoroutineDispatcher.limitedParallelism` to stable ([#&#8203;3864](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3864)). - Promoted `CoroutineStart.ATOMIC` from `ExperimentalCoroutinesApi` to `DelicateCoroutinesApi` ([#&#8203;4169](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4169)). - Promoted `CancellableContinuation.resume` with an `onCancellation` lambda to stable, providing extra arguments to the lambda ([#&#8203;4088](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4088)). - Marked the classes and interfaces that are not supposed to be inherited from with the new `InternalForInheritanceCoroutinesApi` opt-in ([#&#8203;3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)). - Marked the classes and interfaces inheriting from which is not stable with the new `ExperimentalForInheritanceCoroutinesApi` opt-in ([#&#8203;3770](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3770)). ##### Other - Kotlin was updated to 2.0 ([#&#8203;4137](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4137)). - Reworked the documentation for `CoroutineStart` and `Channel`-based API ([#&#8203;4147](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4147), [#&#8203;4148](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4148), [#&#8203;4167](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4167)). Thanks, [@&#8203;globsterg](https://redirect.github.com/globsterg)! - Simplified the internal implementation of `Job` ([#&#8203;4053](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4053)). - Small tweaks, fixes, and documentation improvements. ### [`v1.8.1`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-181) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.8.0...1.8.1) - Remove the `@ExperimentalTime` annotation from usages of `TimeSource` ([#&#8203;4046](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4046)). Thanks, [@&#8203;hfhbd](https://redirect.github.com/hfhbd)! - Introduce a workaround for an Android bug that caused an occasional `NullPointerException` when setting the `StateFlow` value on old Android devices ([#&#8203;3820](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3820)). - No longer use `kotlin.random.Random` as part of `Dispatchers.Default` and `Dispatchers.IO` initialization ([#&#8203;4051](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4051)). - `Flow.timeout` throws the exception with which the channel was closed ([#&#8203;4071](https://redirect.github.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 ([#&#8203;4071](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4071)). - Small documentation fixes. ### [`v1.8.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-180) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.7.3...1.8.0) - Implement the library for the Web Assembly (Wasm) for JavaScript ([#&#8203;3713](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3713)). Thanks [@&#8203;igoriakovlev](https://redirect.github.com/igoriakovlev)! - Major Kotlin version update: was 1.8.20, became 1.9.21. - On Android, ensure that `Dispatchers.Main != Dispatchers.Main.immediate` ([#&#8203;3545](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3545), [#&#8203;3963](https://redirect.github.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 ([#&#8203;4035](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4035), [#&#8203;4038](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4038)) - `kotlinx-coroutines-debug` is published with the correct Java 9 module info ([#&#8203;3944](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3944)). - `kotlinx-coroutines-debug` no longer requires manually setting `DebugProbes.enableCoroutineCreationStackTraces` to `false`, it's the default ([#&#8203;3783](https://redirect.github.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` ([#&#8203;3800](https://redirect.github.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 ([#&#8203;3800](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3800)). - `delay(Duration)` rounds nanoseconds up to whole milliseconds and not down ([#&#8203;3920](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3920)). Thanks [@&#8203;kevincianfarini](https://redirect.github.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 ([#&#8203;3832](https://redirect.github.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` ([#&#8203;3885](https://redirect.github.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 ([#&#8203;3954](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3954)). - Added a workaround for miscompilation of `withLock` on JS ([#&#8203;3881](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3881)). Thanks [@&#8203;CLOVIS-AI](https://redirect.github.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 ([#&#8203;3783](https://redirect.github.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 ([#&#8203;4035](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4035), [#&#8203;4038](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/4038)) - Small documentation fixes. ### [`v1.7.3`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-173) [Compare Source](https://redirect.github.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 ([#&#8203;3809](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3809)). - Fixed a bug introduced in 1.7.2 that disabled the coroutine debugger in IDEA ([#&#8203;3822](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3822)). ### [`v1.7.2`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-172) [Compare Source](https://redirect.github.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 ([#&#8203;3782](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3782)). - `CopyableThreadContextElement` now properly copies an element when crossing the coroutine boundary in `flowOn` ([#&#8203;3787](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3787)). Thanks [@&#8203;wanyingd1996](https://redirect.github.com/wanyingd1996)! - Coroutine timeouts no longer prevent K/N `newSingleThreadContext` from closing ([#&#8203;3768](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3768)). - A non-linearizability in `Mutex` during `tryLock`/`unlock` sequence with owners is fixed ([#&#8203;3745](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3745)). - Atomicfu version is updated to 0.21.0. ### [`v1.7.1`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-171) [Compare Source](https://redirect.github.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 ([#&#8203;3747](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3747)) - The binary compatibility of the experimental overload of `runTest` is restored ([#&#8203;3673](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3673)) - Channels that don't use `onUndeliveredElement` now allocate less memory ([#&#8203;3646](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3646)) ### [`v1.7.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-170) [Compare Source](https://redirect.github.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 ([#&#8203;3621](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3621)). - New `select` operator implementation: faster, more lightweight, and more robust ([#&#8203;3020](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3020)). - `Mutex` and `Semaphore` now share the same underlying data structure ([#&#8203;3020](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3020)). - `Dispatchers.IO` is added to K/N ([#&#8203;3205](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3205)) - `newFixedThreadPool` and `Dispatchers.Default` implementations on K/N were wholly rewritten to support graceful growth under load ([#&#8203;3595](https://redirect.github.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 ([#&#8203;3270](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3270)). This replaces the configuration of quiescence timeouts, which is now deprecated ([#&#8203;3603](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3603)). - The `withTimeout` exception messages indicate if the timeout used the virtual time ([#&#8203;3588](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3588)). - `TestCoroutineScheduler`, `runTest`, and `TestScope` API are promoted to stable ([#&#8203;3622](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3622)). - `runTest` now also fails if there were uncaught exceptions in coroutines not inherited from the test coroutine ([#&#8203;1205](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1205)). ##### Breaking changes - Old K/N memory model is no longer supported ([#&#8203;3375](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3375)). - New generic upper bounds were added to reactive integration API where the language since 1.8.0 dictates ([#&#8203;3393](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3393)). - `kotlinx-coroutines-core` and `kotlinx-coroutines-jdk8` artifacts were merged into a single artifact ([#&#8203;3268](https://redirect.github.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 ([#&#8203;2291](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2291)). - `CoroutineContext.isActive` returns `true` for contexts without any job in them ([#&#8203;3300](https://redirect.github.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` ([#&#8203;3671](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3671)).. - JPMS is supported ([#&#8203;2237](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2237)). Thanks [@&#8203;lion7](https://redirect.github.com/lion7)! - `BroadcastChannel` and all the corresponding API are deprecated ([#&#8203;2680](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2680)). - Added all supported K/N targets ([#&#8203;3601](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3601), [#&#8203;812](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/812), [#&#8203;855](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/855)). - K/N `Dispatchers.Default` is backed by the number of threads equal to the number of available cores ([#&#8203;3366](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3366)). - Fixed an issue where some coroutines' internal exceptions were not properly serializable ([#&#8203;3328](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3328)). - Introduced `Job.parent` API ([#&#8203;3201](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3201)). - Fixed a bug when `TestScheduler` leaked cancelled jobs ([#&#8203;3398](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3398)). - `TestScope.timeSource` now provides comparable time marks ([#&#8203;3617](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3617)). Thanks [@&#8203;hfhbd](https://redirect.github.com/hfhbd)! - Fixed an issue when cancelled `withTimeout` handles were preserved in JS runtime ([#&#8203;3440](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3440)). - Ensure `awaitFrame` only awaits a single frame when used from the main looper ([#&#8203;3432](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3432)). Thanks [@&#8203;pablobaxter](https://redirect.github.com/pablobaxter)! - Obsolete `Class-Path` attribute was removed from `kotlinx-coroutines-debug.jar` manifest ([#&#8203;3361](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3361)). - Fixed a bug when `updateThreadContext` operated on the parent context ([#&#8203;3411](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3411)). - Added new `Flow.filterIsInstance` extension ([#&#8203;3240](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3240)). - `Dispatchers.Default` thread name prefixes are now configurable with system property ([#&#8203;3231](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3231)). - Added `Flow.timeout` operator as `@FlowPreview` ([#&#8203;2624](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2624)). Thanks [@&#8203;pablobaxter](https://redirect.github.com/pablobaxter)! - Improved the performance of the `future` builder in case of exceptions ([#&#8203;3475](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3475)). Thanks [@&#8203;He-Pin](https://redirect.github.com/He-Pin)! - `Mono.awaitSingleOrNull` now waits for the `onComplete` signal ([#&#8203;3487](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3487)). - `Channel.isClosedForSend` and `Channel.isClosedForReceive` are promoted from experimental to delicate ([#&#8203;3448](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3448)). - Fixed a data race in native `EventLoop` ([#&#8203;3547](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3547)). - `Dispatchers.IO.limitedParallelism(valueLargerThanIOSize)` no longer creates an additional wrapper ([#&#8203;3442](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3442)). Thanks [@&#8203;dovchinnikov](https://redirect.github.com/dovchinnikov)! - Various `@FlowPreview` and `@ExperimentalCoroutinesApi` are promoted to experimental and stable respectively ([#&#8203;3542](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3542), [#&#8203;3097](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3097), [#&#8203;3548](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3548)). - Performance improvements in `Dispatchers.Default` and `Dispatchers.IO` ([#&#8203;3416](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3416), [#&#8203;3418](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3418)). - Fixed a bug when internal `suspendCancellableCoroutineReusable` might have hanged ([#&#8203;3613](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3613)). - Introduced internal API to process events in the current system dispatcher ([#&#8203;3439](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3439)). - Global `CoroutineExceptionHandler` is no longer invoked in case of unprocessed `future` failure ([#&#8203;3452](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3452)). - Performance improvements and reduced thread-local pressure for the `withContext` operator ([#&#8203;3592](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3592)). - Improved performance of `DebugProbes` ([#&#8203;3527](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3527)). - Fixed a bug when the coroutine debugger might have detected the state of a coroutine incorrectly ([#&#8203;3193](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3193)). - `CoroutineDispatcher.asExecutor()` runs tasks without dispatching if the dispatcher is unconfined ([#&#8203;3683](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3683)). Thanks [@&#8203;odedniv](https://redirect.github.com/odedniv)! - `SharedFlow.toMutableList` and `SharedFlow.toSet` lints are introduced ([#&#8203;3706](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3706)). - `Channel.invokeOnClose` is promoted to stable API ([#&#8203;3358](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3358)). - Improved lock contention in `Dispatchers.Default` and `Dispatchers.IO` during the startup phase ([#&#8203;3652](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3652)). - Fixed a bug that led to threads oversubscription in `Dispatchers.Default` ([#&#8203;3642](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3642)). - Fixed a bug that allowed `limitedParallelism` to perform dispatches even after the underlying dispatcher was closed ([#&#8203;3672](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3672)). - Fixed a bug that prevented stacktrace recovery when the exception's constructor from `cause` was selected ([#&#8203;3714](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3714)). - Improved sanitizing of stracktrace-recovered traces ([#&#8203;3714](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3714)). - Introduced an internal flag to disable uncaught exceptions reporting in tests as a temporary migration mechanism ([#&#8203;3736](https://redirect.github.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://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.4) [Compare Source](https://redirect.github.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 ([#&#8203;3287](https://redirect.github.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 ([#&#8203;3334](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3334)). - Fixed the `Publisher.await` functions in `kotlinx-coroutines-reactive` not ensuring that the `Subscriber` methods are invoked serially ([#&#8203;3360](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3360)). Thank you, [@&#8203;EgorKulbachka](https://redirect.github.com/EgorKulbachka)! - Fixed a memory leak in `withTimeout` on K/N with the new memory model ([#&#8203;3351](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3351)). - Added the guarantee that all `Throwable` implementations in the core library are serializable ([#&#8203;3328](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3328)). - Moved the documentation to <https://kotlinlang.org/api/kotlinx.coroutines/> ([#&#8203;3342](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3342)). - Various documentation improvements. ### [`v1.6.3`](https://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.3) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.6.2...1.6.3) - Updated atomicfu version to 0.17.3 ([#&#8203;3321](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3321)), fixing the projects using this library with JS IR failing to build ([#&#8203;3305](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3305)). ### [`v1.6.2`](https://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.2) [Compare Source](https://redirect.github.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` ([#&#8203;2930](https://redirect.github.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` ([#&#8203;3250](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3250), [#&#8203;3251](https://redirect.github.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` ([#&#8203;3218](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3218)). - Updated the ProGuard rules to further shrink the size of the resulting DEX file with coroutines ([#&#8203;3111](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3111), [#&#8203;3263](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3263)). Thanks, [@&#8203;agrieve](https://redirect.github.com/agrieve)! - Atomicfu is updated to `0.17.2`, which includes a more efficient and robust JS IR transformer ([#&#8203;3255](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3255)). - Kotlin is updated to `1.6.21`, Gradle version is updated to `7.4.2` ([#&#8203;3281](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3281)). Thanks, [@&#8203;wojtek-kalicinski](https://redirect.github.com/wojtek-kalicinski)! - Various documentation improvements. ### [`v1.6.1`](https://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.1) [Compare Source](https://redirect.github.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 ([#&#8203;3106](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3106), [#&#8203;3113](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3113)). - Reworked the newly-introduced `CopyableThreadContextElement` to solve issues uncovered after the initial release ([#&#8203;3227](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3227)). - Fixed a bug with `ThreadLocalElement` not being properly updated in racy scenarios ([#&#8203;2930](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2930)). - Reverted eager loading of default `CoroutineExceptionHandler` that triggered ANR on some devices ([#&#8203;3180](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3180)). - New API to convert a `CoroutineDispatcher` to a Rx scheduler ([#&#8203;968](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/968), [#&#8203;548](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/548)). Thanks [@&#8203;recheej](https://redirect.github.com/recheej)! - Fixed a memory leak with the very last element emitted from `flow` builder being retained in memory ([#&#8203;3197](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3197)). - Fixed a bug with `limitedParallelism` on K/N with new memory model throwing `ClassCastException` ([#&#8203;3223](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3223)). - `CoroutineContext` is added to the exception printed to the default `CoroutineExceptionHandler` to improve debuggability ([#&#8203;3153](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3153)). - Static memory consumption of `Dispatchers.Default` was significantly reduced ([#&#8203;3137](https://redirect.github.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://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.6.0) [Compare Source](https://redirect.github.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 ([#&#8203;1203](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1203), [#&#8203;1609](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1609), [#&#8203;2379](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2379), [#&#8203;1749](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1749), [#&#8203;1204](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1204), [#&#8203;1390](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1390), [#&#8203;1222](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1222), [#&#8203;1395](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1395), [#&#8203;1881](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1881), [#&#8203;1910](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1910), [#&#8203;1772](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1772), [#&#8203;1626](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1626), [#&#8203;1742](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1742), [#&#8203;2082](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2082), [#&#8203;2102](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2102), [#&#8203;2405](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2405), [#&#8203;2462](https://redirect.github.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 ([#&#8203;2919](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2919)). - `Dispatchers.IO.limitedParallelism` usages ignore the bound on the parallelism level of `Dispatchers.IO` itself to avoid starvation ([#&#8203;2943](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2943)). - Introduced new `Dispatchers.shutdown` method for containerized environments ([#&#8203;2558](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2558)). - `newSingleThreadContext` and `newFixedThreadPoolContext` are promoted to delicate API ([#&#8203;2919](https://redirect.github.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 [@&#8203;vadimsemenov](https://redirect.github.com/vadimsemenov)! ([#&#8203;2774](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2774), [#&#8203;2791](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2791)). - `Mutex.onLock` is deprecated for removal ([#&#8203;2794](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2794)). - `Dispatchers.Main` is now used as the default source of time for `delay` and `withTimeout` when present ([#&#8203;2972](https://redirect.github.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 ([#&#8203;1589](https://redirect.github.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 [#&#8203;3107](https://redirect.github.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 ([#&#8203;2914](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2914)). - Introduced `CopyableThreadContextElement` for mutable context elements shared among multiple coroutines. Thanks [@&#8203;yorickhenning](https://redirect.github.com/yorickhenning)! ([#&#8203;2893](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2893)). - `transformWhile`, `awaitClose`, `ProducerScope`, `merge`, `runningFold`, `runingReduce`, and `scan` are promoted to stable API ([#&#8203;2971](https://redirect.github.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 ([#&#8203;2488](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2488), [#&#8203;2863](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2863), [#&#8203;2871](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2871)). - `Flow` exception transparency mechanism is improved to be more exception-friendly ([#&#8203;3017](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3017), [#&#8203;2860](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2860)). - Cancellation from `flat*` operators that leverage multiple coroutines is no longer propagated upstream ([#&#8203;2964](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2964)). - `SharedFlow.collect` now returns `Nothing` ([#&#8203;2789](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2789), [#&#8203;2502](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2502)). - `DisposableHandle` is now `fun interface`, and corresponding inline extension is removed ([#&#8203;2790](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2790)). - `FlowCollector` is now `fun interface`, and corresponding inline extension is removed ([#&#8203;3047](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3047)). - Deprecation level of all previously deprecated signatures is raised ([#&#8203;3024](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3024)). - The version file is shipped with each JAR as a resource ([#&#8203;2941](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2941)). - Unhandled exceptions on K/N are passed to the standard library function `processUnhandledException` ([#&#8203;2981](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2981)). - A direct executor is used for `Task` callbacks in `kotlinx-coroutines-play-services` ([#&#8203;2990](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2990)). - Metadata of coroutines artifacts leverages Gradle platform to have all versions of dependencies aligned ([#&#8203;2865](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2865)). - Default `CoroutineExceptionHandler` is loaded eagerly and does not invoke `ServiceLoader` on its exception-handling path ([#&#8203;2552](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2552)). - Fixed the R8 rules for `ServiceLoader` optimization ([#&#8203;2880](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2880)). - Fixed BlockHound integration false-positives ([#&#8203;2894](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2894), [#&#8203;2866](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2866), [#&#8203;2937](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2937)). - Fixed the exception handler being invoked several times on Android, thanks to [@&#8203;1zaman](https://redirect.github.com/1zaman) ([#&#8203;3056](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3056)). - `SendChannel.trySendBlocking` is now available on Kotlin/Native ([#&#8203;3064](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3064)). - The exception recovery mechanism now uses `ClassValue` when available ([#&#8203;2997](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2997)). - JNA is updated to 5.9.0 to support Apple M1 ([#&#8203;3001](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3001)). - Obsolete method on internal `Delay` interface is deprecated ([#&#8203;2979](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2979)). - Support of deprecated `CommonPool` is removed. - `@ExperimentalTime` is no longer needed for methods that use `Duration` ([#&#8203;3041](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3041)). - JDK 1.6 is no longer required for building the project ([#&#8203;3043](https://redirect.github.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/>) ([#&#8203;3051](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3051), [#&#8203;3054](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/3054)). ### [`v1.5.2`](https://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.5.2) [Compare Source](https://redirect.github.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 ([#&#8203;2826](https://redirect.github.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 [@&#8203;Legion2](https://redirect.github.com/Legion2) ([#&#8203;2843](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2843)). - Optimizations of `Mutex` implementation ([#&#8203;2581](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2581)). - `Mutex` implementation is made completely lock-free as stated ([#&#8203;2590](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2590)). - Various documentation and guides improvements. Thanks to [@&#8203;MasoodFallahpoor](https://redirect.github.com/MasoodFallahpoor) and [@&#8203;Pihanya](https://redirect.github.com/Pihanya). ### [`v1.5.1`](https://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.5.1) [Compare Source](https://redirect.github.com/Kotlin/kotlinx.coroutines/compare/1.5.0...1.5.1) - Atomic `update`, `getAndUpdate`, and `updateAndGet` operations of `MutableStateFlow` ([#&#8203;2720](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2720)). - `Executor.asCoroutineDispatcher` implementation improvements ([#&#8203;2601](https://redirect.github.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 ([#&#8203;2527](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2527)). - Reactive streams are updated to `1.0.3` ([#&#8203;2740](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2740)). - `CopyableThrowable` is allowed to modify the exception message during stacktrace recovery ([#&#8203;1931](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1931)). - `CoroutineDispatcher.releaseInterceptedContinuation` is now a `final` method ([#&#8203;2785](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2785)). - Closing a Handler underlying `Handler.asCoroutineDispatcher` now causes the dispatched coroutines to be canceled on `Dispatchers.IO (#&#8203;2778)`. - Kotlin is updated to 1.5.20. - Fixed a spurious `ClassCastException` in `releaseInterceptedContinuation` and `IllegalStateException` from `tryReleaseClaimedContinuation` ([#&#8203;2736](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2736), [#&#8203;2768](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2768)). - Fixed inconsistent exception message during stacktrace recovery for non-suspending channel iterators ([#&#8203;2749](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2749)). - Fixed linear stack usage for `CompletableFuture.asDeferred` when the target future has a long chain of listeners ([#&#8203;2730](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2730)). - Any exceptions from `CoroutineDispatcher.isDispatchNeeded` are now considered as fatal and are propagated to the caller ([#&#8203;2733](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2733)). - Internal `DebugProbesKt` (used in the debugger implementation) are moved from `debug` to `core` module. ### [`v1.5.0`](https://redirect.github.com/Kotlin/kotlinx.coroutines/releases/tag/1.5.0) [Compare Source](https://redirect.github.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 ([#&#8203;330](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/330), [#&#8203;974](https://redirect.github.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://redirect.github.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 ([#&#8203;2545](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2545)). - `publish` is no longer allowed to emit `null` values ([#&#8203;2646](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2646)). - Misleading `awaitSingleOr*` functions on `Publisher` type are deprecated ([#&#8203;2591](https://redirect.github.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 ([#&#8203;2628](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2628), [#&#8203;1587](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/1587)). - `ContextView` support in `kotlinx-coroutines-reactor` ([#&#8203;2575](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2575)). - All reactive builders no longer ignore inner cancellation exceptions preventing their completion ([#&#8203;2262](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2262), [#&#8203;2646](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2646)). - `MaybeSource.collect` and `Maybe.collect` properly finish when they are completed without a value ([#&#8203;2617](https://redirect.github.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 ([#&#8203;2646](https://redirect.github.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 ([#&#8203;2246](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2246)). - `Flow.runningFold` operator ([#&#8203;2641](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2641)). - `CoroutinesTimeout` rule for JUnit5 ([#&#8203;2197](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2197)). - Internals of `Job` and `AbstractCoroutine` was reworked, resulting in smaller code size, less memory footprint, and better performance ([#&#8203;2513](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2513), [#&#8203;2512](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2512)). - `CancellationException` from Kotlin standard library is used for cancellation on Koltin/JS and Kotlin/Native ([#&#8203;2638](https://redirect.github.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` ([#&#8203;2637](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2637)). - Fixed bug introduced in `1.4.3` when `kotlinx-coroutines-core.jar` triggered IDEA debugger failure ([#&#8203;2619](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2619)). - Fixed memory leak of `ChildHandlerNode` with reusable continuations ([#&#8203;2564](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2564)). - Various documentation improvements ([#&#8203;2555](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2555), [#&#8203;2589](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2589), [#&#8203;2592](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2592), [#&#8203;2583](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2583), [#&#8203;2437](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2437), [#&#8203;2616](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2616), [#&#8203;2633](https://redirect.github.com/Kotlin/kotlinx.coroutines/issues/2633), [#&#8203;2560](https://redirect.github.com/Kotlin/kotlinx.coroutines/is > [!IMPORTANT] > ✂ PR body was truncated to here. </details> --- ### Configuration 📅 **Schedule**: (UTC) - 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. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMDIuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=-->
This pull request has changes conflicting with the target branch.
  • gradle/versions.gradle
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/kotlinx-coroutines-monorepo:renovate/kotlinx-coroutines-monorepo
git switch renovate/kotlinx-coroutines-monorepo

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch master
git merge --no-ff renovate/kotlinx-coroutines-monorepo
git switch renovate/kotlinx-coroutines-monorepo
git rebase master
git switch master
git merge --ff-only renovate/kotlinx-coroutines-monorepo
git switch renovate/kotlinx-coroutines-monorepo
git rebase master
git switch master
git merge --no-ff renovate/kotlinx-coroutines-monorepo
git switch master
git merge --squash renovate/kotlinx-coroutines-monorepo
git switch master
git merge --ff-only renovate/kotlinx-coroutines-monorepo
git switch master
git merge renovate/kotlinx-coroutines-monorepo
git push origin master
Sign in to join this conversation.
No description provided.