AirPlayAuth
AirPlayAuth copied to clipboard
fix(deps): update dependency org.jetbrains.kotlinx:kotlinx-coroutines-android to v1.8.1
This PR contains the following updates:
Package | Change | Age | Adoption | Passing | Confidence |
---|---|---|---|---|---|
org.jetbrains.kotlinx:kotlinx-coroutines-android | 1.1.0 -> 1.8.1 |
[!WARNING] Some dependencies could not be looked up. Check the Dependency Dashboard for more information.
Release Notes
Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-android)
v1.8.1
- Remove the
@ExperimentalTime
annotation from usages ofTimeSource
(#4046). Thanks, @hfhbd! - Introduce a workaround for an Android bug that caused an occasional
NullPointerException
when setting theStateFlow
value on old Android devices (#3820). - No longer use
kotlin.random.Random
as part ofDispatchers.Default
andDispatchers.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
- 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 settingDebugProbes.enableCoroutineCreationStackTraces
tofalse
, it's the default (#3783). -
kotlinx-coroutines-test
: set the default timeout ofrunTest
to 60 seconds, added the ability to configure it on the JVM with thekotlinx.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 thatSharedFlow
(#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 settingDebugProbes.enableCoroutineCreationStackTraces
tofalse
, 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
- 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
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 inflowOn
(#3787). Thanks @wanyingd1996! - Coroutine timeouts no longer prevent K/N
newSingleThreadContext
from closing (#3768). - A non-linearizability in
Mutex
duringtryLock
/unlock
sequence with owners is fixed (#3745). - Atomicfu version is updated to 0.21.0.
v1.7.1
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
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
andSemaphore
now share the same underlying data structure (#3020). -
Dispatchers.IO
is added to K/N (#3205)-
newFixedThreadPool
andDispatchers.Default
implementations on K/N were wholly rewritten to support graceful growth under load (#3595).
-
-
kotlinx-coroutines-test
rework:- Add the
timeout
parameter torunTest
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
, andTestScope
API are promoted to stable (#3622). -
runTest
now also fails if there were uncaught exceptions in coroutines not inherited from the test coroutine (#1205).
- Add the
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
andkotlinx-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
returnstrue
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 inkotlinx-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 fromkotlinx-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 theonComplete
signal (#3487). -
Channel.isClosedForSend
andChannel.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
andDispatchers.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 unprocessedfuture
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
andSharedFlow.toSet
lints are introduced (#3706). -
Channel.invokeOnClose
is promoted to stable API (#3358). - Improved lock contention in
Dispatchers.Default
andDispatchers.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
- 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 tokotlinx-coroutines-bom
, which cause the builds of Maven projects using the debug module to break (#3334). - Fixed the
Publisher.await
functions inkotlinx-coroutines-reactive
not ensuring that theSubscriber
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
- Updated atomicfu version to 0.17.3 (#3321), fixing the projects using this library with JS IR failing to build (#3305).
v1.6.2
- Fixed a bug with
ThreadLocalElement
not being correctly updated when the most outersuspend
function was called directly withoutkotlinx.coroutines
(#2930). - Fixed multiple data races: one that might have been affecting
runBlocking
event loop, and a benign data race inMutex
(#3250, #3251). - Obsolete
TestCoroutineContext
is removed, which fixes thekotlinx-coroutines-test
JPMS package being split betweenkotlinx-coroutines-core
andkotlinx-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 to7.4.2
(#3281). Thanks, @wojtek-kalicinski! - Various documentation improvements.
v1.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, #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 throwingClassCastException
(#3223). -
CoroutineContext
is added to the exception printed to the defaultCoroutineExceptionHandler
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
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, #1609, #2379, #1749, #1204, #1390, #1222, #1395, #1881, #1910, #1772, #1626, #1742, #2082, #2102, #2405, #2462 ).
- The old API is deprecated for removal, but the new API is based on the similar concepts (README), and the migration path is designed to be graceful: migration guide.
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 ofDispatchers.IO
itself to avoid starvation (#2943). - Introduced new
Dispatchers.shutdown
method for containerized environments (#2558). -
newSingleThreadContext
andnewFixedThreadPoolContext
are promoted to delicate API (#2919).
Breaking changes
- When racing with cancellation, the
future
builder no longer reports unhandled exceptions into the globalCoroutineExceptionHandler
. Thanks @vadimsemenov! (#2774, #2791). -
Mutex.onLock
is deprecated for removal (#2794). -
Dispatchers.Main
is now used as the default source of time fordelay
andwithTimeout
when present (#2972).- To opt-out from this behaviour,
kotlinx.coroutines.main.delay
system property can be set tofalse
.
- To opt-out from this behaviour,
- 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
, andscan
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 returnsNothing
(#2789, #2502). -
DisposableHandle
is nowfun interface
, and corresponding inline extension is removed (#2790). -
FlowCollector
is nowfun 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 inkotlinx-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 invokeServiceLoader
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 useDuration
(#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
- 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 onsetTimeout
instead of stubprocess.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
- Atomic
update
,getAndUpdate
, andupdateAndGet
operations ofMutableStateFlow
(#2720). -
Executor.asCoroutineDispatcher
implementation improvements (#2601):- If the target executor is
ScheduledExecutorService
, then itsschedule
API is used for time-related coroutine operations. -
RemoveOnCancelPolicy
is now part of the public contract.
- If the target executor is
- Introduced overloads for
Task.asDeferred
andTask.await
that acceptCancellationTokenSource
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 afinal
method (#2785). - Closing a Handler underlying
Handler.asCoroutineDispatcher
now causes the dispatched coroutines to be canceled onDispatchers.IO (#​2778)
. - Kotlin is updated to 1.5.20.
- Fixed a spurious
ClassCastException
inreleaseInterceptedContinuation
andIllegalStateException
fromtryReleaseClaimedContinuation
(#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 fromdebug
tocore
module.
v1.5.0
Note that this is a full changelog relative to 1.4.3 version. Changelog relative to 1.5.0-RC can be found in the end.
Channels API
- Major channels API rework (#330, #974). Existing
offer
,poll
, andsendBlocking
methods are deprecated, internalreceiveCatching
andonReceiveCatching
removed,receiveOrNull
andonReceiveOrNull
are completely deprecated. Previously deprecatedSendChannel.isFull
declaration is removed. Channel operators deprecated withERROR
are nowHIDDEN
. - New methods
receiveCatching
,onReceiveCatching
trySend
,tryReceive
, andtrySendBlocking
along with the new result typeChannelResult
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
andConflatedBroadcastChannel
are marked asObsoleteCoroutinesApi
in the favor orSharedFlow
andStateFlow
. The migration scheme can be found in their documentation. These classes will be deprecated in the next major release. -
callbackFlow
andchannelFlow
are promoted to stable API.
Reactive integrations
- All existing API in modules
kotlinx-coroutines-rx2
,kotlinx-coroutines-rx3
,kotlinx-coroutines-reactive
,kotlinx-coroutines-reactor
, andkotlinx-coroutines-jdk9
were revisited and promoted to stable (#2545). -
publish
is no longer allowed to emitnull
values (#2646). - Misleading
awaitSingleOr*
functions onPublisher
type are deprecated (#2591). -
MaybeSource.await
is deprecated in the favor ofawaitSingle
, additional lint functions forMono
are added in order to prevent ambiguousPublisher
usages (#2628, #1587). -
ContextView
support inkotlinx-coroutines-reactor
(#2575). - All reactive builders no longer ignore inner cancellation exceptions preventing their completion (#2262, #2646).
-
MaybeSource.collect
andMaybe.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
andFlow.lastOrNull
operators (#2246). -
Flow.runningFold
operator (#2641). -
CoroutinesTimeout
rule for JUnit5 (#2197). - Internals of
Job
andAbstractCoroutine
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 isGlobalScope
(#2637). - Fixed bug introduced in
1.4.3
whenkotlinx-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).
Changelog relative to version 1.5.0-RC
- Fail-fast during
emitAll
called from cancelledonCompletion
operator (#2700). - Flows returned by
stateIn
/shareIn
keep strong reference to sharing job (#2557). - Rename internal
TimeSource
toAbstractTimeSource
due to import issues (#2691). - Reverted the change that triggered IDEA coroutines debugger crash (#2695, reverted #2291).
-
watchosX64
target support for Kotlin/Native (#2524). - Various documentation fixes and improvements.
v1.4.3
General changes
- Thread context is properly preserved and restored for coroutines without
ThreadContextElement
(#985) -
ThreadContextElement
s are now restored in the opposite order from update (#2195) - Improved performance of combine with 4 parameters, thanks to @alexvanyo (#2419)
- Debug agent sanitizer leaves at least one frame with source location (#1437)
- Update Reactor version in
kotlinx-coroutines-reactor
to3.4.1
, thanks to @sokomishalov (#2432) -
callsInPlace
contract added toReceiveChannel.consume
(#941) -
CoroutineStart.UNDISPATCHED
promoted to stable API (#1393) - Kotlin updated to 1.4.30
-
kotlinx.coroutines
are now released directly to MavenCentral - Reduced the size of
DispatchedCoroutine
by a field - Internal class
TimeSource
renamed toSchedulerTimeSource
to prevent wildcard import issues (#2537)
Bug fixes
- Fixed the problem that prevented implementation via delegation for
Job
interface (#2423) - Fixed incorrect ProGuard rules that allowed shrinking volatile felds (#1564)
- Fixed
await
/asDeferred
forMinimalStage
implementations in jdk8 module (#2456) - Fixed bug when
onUndeliveredElement
wasn't called for unlimited channels (#2435) - Fixed a bug when
ListenableFuture.isCancelled
returned fromasListenableFuture
could have thrown an exception, thanks to @vadimsemenov (#2421) - Coroutine in
callbackFlow
andproduce
is properly cancelled when the channel was closed separately (#2506)
v1.4.2
- Fixed
StackOverflowError
inJob.toString
whenJob
is observed in its intermediate state (#2371). - Improved liveness and latency of
Dispatchers.Default
andDispatchers.IO
in low-loaded mode (#2381). - Improved performance of consecutive
Channel.cancel
invocations (#2384). -
SharingStarted
is nowfun
interface (#2397). - Additional lint settings for
SharedFlow
to catch programmatic errors early (#2376). - Fixed bug when mutex and semaphore were not released during cancellation (#2390, thanks to @Tilps for reproducing).
- Some corner cases in cancellation propagation between coroutines and listenable futures are repaired (#1442, thanks to @vadimsemenov).
- Fixed unconditional cast to
CoroutineStackFrame
in exception recovery that triggered failures of instrumented code (#2386). - Platform-specific dependencies are removed from
kotlinx-coroutines-javafx
(#2360).
v1.4.1
This is a patch release with an important fix to the SharedFlow
implementation.
- SharedFlow: Fix scenario with concurrent emitters and cancellation of a subscriber (#2359, thanks to @vehovsky for the bug report).
v1.4.0
Improvements
-
StateFlow
,SharedFlow
and corresponding operators are promoted to stable API (#2316). -
Flow.debounce
operator with timeout selector based on each individual element is added (#1216, thanks to @mkano9!). -
CoroutineContext.job
extension property is introduced (#2159). -
Flow.combine operator
is reworked:- Complete fairness is maintained for single-threaded dispatchers.
- Its performance is improved, depending on the use-case, by at least 50% (#2296).
- Quadratic complexity depending on the number of upstream flows is eliminated (#2296).
-
crossinline
andinline
-heavy internals are removed, fixing sporadic SIGSEGV on Mediatek Android devices (#1683, #1743).
-
Flow.zip
operator performance is improved by 40%. - Various API has been promoted to stable or its deprecation level has been raised (#2316).
Bug fixes
- Suspendable
stateIn
operator propagates exception to the caller when upstream fails to produce initial value (#2329). - Fix
SharedFlow
with replay for subscribers working at different speed (#2325). - Do not fail debug agent installation when security manager does not provide access to system properties (#2311).
- Cancelled lazy coroutines are properly cleaned up from debug agent output (#2294).
-
BlockHound
false-positives are correctly filtered out (#2302, #2190, #2303). - Potential crash during a race between cancellation and upstream in
Observable.asFlow
is fixed (#2104, #2299, thanks to @LouisCAD and @drinkthestars).
v1.3.9
- Support of
CoroutineContext
inFlow.asPublisher
and similar reactive builders (#2155). - Kotlin updated to 1.4.0.
- Transition to new HMPP publication scheme for multiplatform usages:
- Artifacts
kotlinx-coroutines-core-common
andkotlinx-coroutines-core-native
are removed. - For multiplatform usages, it's enough to depend directly on
kotlinx-coroutines-core
incommonMain
source-set. - The same artifact coordinates can be used to depend on a platform-specific artifact in platform-specific source-set.
- Artifacts
v1.3.8
New experimental features
- Added
Flow.transformWhile operator
(#2065). - Replaced
scanReduce
withrunningReduce
to be consistent with the Kotlin standard library (#2139).
Bug fixes and improvements
- Improve user experience for the upcoming coroutines debugger (#2093, #2118, #2131).
- Debugger no longer retains strong references to the running coroutines (#2129).
- Fixed race in
Flow.asPublisher
(#2109). - Fixed
ensureActive
to work in the empty context case to fixIllegalStateException
when using flow fromsuspend fun main
(#2044). - Fixed a problem with
AbortFlowException
in theFlow.first
operator to avoid erroneousNoSuchElementException
(#2051). - Fixed JVM dependency on Android annotations (#2075).
- Removed keep rules mentioning
kotlinx.coroutines.android
from core module (#2061 by @mkj-gram). - Corrected some docs and examples (#2062, #2071, #2076, #2107, #2098, #2127, #2078, #2135).
- Improved the docs and guide on flow cancellation (#2043).
- Updated Gradle version to
6.3
(it only affects multiplatform artifacts in this release).
v1.3.7
- Fixed problem that triggered Android Lint failure (#2004).
- New
Flow.cancellable()
operator for cooperative cancellation (#2026). - Emissions from
flow
builder now check cancellation status and are properly cancellable (#2026). - New
currentCoroutineContext
function to use unambiguously in the contexts withCoroutineScope
in receiver position (#2026). -
EXACTLY_ONCE
contract support in coroutine builders. - Various documentation improvements.
v1.3.6
Flow
-
StateFlow
, new primitive for state handling (#1973, #1816, #395). TheStateFlow
is designed to eventually replaceConflatedBroadcastChannel
for state publication scenarios. Please, try it and share your feedback. Note, that Flow-based primitives to publish events will be added later. For events you should continue to either useBroadcastChannel(1)
, if you put events into theStateFlow
, protect them from double-processing with flags. -
Flow.onEmpty
operator is introduced (#1890). - Behavioural change in
Flow.onCompletion
, it is aligned withinvokeOnCompletion
now and passesCancellationException
to its cause parameter (#1693). - A lot of Flow operators have left its experimental status and are promoted to stable API.
Other
-
runInterruptible
primitive to tie cancellation with thread interruption for blocking calls. Contributed by @jxdabc (#1947). - Integration module with RxJava3 is introduced. Contributed by @ZacSweers (#1883)
- Integration with BlockHound in
kotlinx-coroutines-debug
module (#1821, #1060). - Memory leak in ArrayBroadcastChannel is fixed (#1885).
- Behavioural change in
suspendCancellableCoroutine
, cancellation is established before invoking passed block argument (#1671). - Debug agent internals are moved into
kotlinx-coroutines-core
for better integration with IDEA. It should not affect library users and all the redundant code should be properly eliminated with R8. - ClassCastException with reusable continuations bug is fixed (#1966).
- More precise scheduler detection for
Executor.asCoroutineDispatcher
(#1992). - Kotlin updated to 1.3.71.
v1.3.5
Version 1.3.5
-
firstOrNull
operators. Contributed by @bradynpoulsen -
java.time
adapters for Flow operators. Contributed by @fvasco -
kotlin.time.Duration
support ([#1402](https://togithub.com/Kotlin/kotlinx.corou
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
- [ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.