@ExperimentalTime
annotation from usages of TimeSource
(#4046). Thanks, @hfhbd!NullPointerException
when setting the StateFlow
value on old Android devices (#3820).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).Flow.timeout
throws the exception with which the channel was closed (#4071).@ExperimentalTime
annotation from usages of TimeSource
(#4046). Thanks, @hfhbd!NullPointerException
when setting the StateFlow
value on old Android devices (#3820).kotlin.random.Random
as part of Dispatchers.Default
and Dispatchers.IO
initialization (#4051).Dispatchers.Main != Dispatchers.Main.immediate
(#3545, #3963).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).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.withLock
on JS (#3881). Thanks @CLOVIS-AI!kotlinx-coroutines-debug
no longer requires manually setting DebugProbes.enableCoroutineCreationStackTraces
to false
, it's the default (#3783).Flow
operators that limit cancel the upstream flow to forget that they were already finished if there is another such operator upstream (#4035, #4038)Mutex.onLock
would not unlock if a non-local return was performed (#3985).Could not find "org.jetbrains.kotlinx:atomicfu-cinterop-interop"
(#3968).Dispatchers.Main != Dispatchers.Main.immediate
(#3545, #3963).kotlinx-coroutines-debug
is published with the correct Java 9 module info (#3944).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).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.withLock
on JS (#3881). Thanks @CLOVIS-AI!CopyableThreadContextElement
now properly copies an element when crossing the coroutine boundary in flowOn
(#3787). Thanks @wanyingd1996!newSingleThreadContext
from closing (#3768).Mutex
during tryLock
/unlock
sequence with owners is fixed (#3745).runTest
is restored (#3673)onUndeliveredElement
now allocate less memory (#3646)Channel
implementation with significant performance improvements across the API (#3621).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: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).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).kotlinx-coroutines-core
and kotlinx-coroutines-jdk8
artifacts were merged into a single artifact (#3268).\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).JavaFx
version is updated to 17.0.2 in kotlinx-coroutines-javafx
(#3671)..BroadcastChannel
and all the corresponding API are deprecated (#2680).Dispatchers.Default
is backed by the number of threads equal to the number of available cores (#3366).Job.parent
API (#3201).TestScheduler
leaked cancelled jobs (#3398).TestScope.timeSource
now provides comparable time marks (#3617). Thanks @hfhbd!withTimeout
handles were preserved in JS runtime (#3440).awaitFrame
only awaits a single frame when used from the main looper (#3432). Thanks @pablobaxter!Class-Path
attribute was removed from kotlinx-coroutines-debug.jar
manifest (#3361).updateThreadContext
operated on the parent context (#3411).Flow.filterIsInstance
extension (#3240).Dispatchers.Default
thread name prefixes are now configurable with system property (#3231).Flow.timeout
operator as @FlowPreview
(#2624). Thanks @pablobaxter!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).EventLoop
(#3547).Dispatchers.IO.limitedParallelism(valueLargerThanIOSize)
no longer creates an additional wrapper (#3442). Thanks @dovchinnikov!@FlowPreview
and @ExperimentalCoroutinesApi
are promoted to experimental and stable respectively (#3542, #3097, #3548).Dispatchers.Default
and Dispatchers.IO
(#3416, #3418).suspendCancellableCoroutineReusable
might have hanged (#3613).CoroutineExceptionHandler
is no longer invoked in case of unprocessed future
failure (#3452).withContext
operator (#3592).DebugProbes
(#3527).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).Dispatchers.Default
and Dispatchers.IO
during the startup phase (#3652).Dispatchers.Default
(#3642).limitedParallelism
to perform dispatches even after the underlying dispatcher was closed (#3672).cause
was selected (#3714).Changelog for previous versions may be found in CHANGES_UP_TO_1.7.md