Releases
1.3.3
Compare
Sorry, something went wrong.
No results found
Flow
Flow.take performance is significantly improved (#1538 ).
Flow.merge operator (#1491 ).
Reactive Flow adapters are promoted to stable API (#1549 ).
Reusable cancellable continuations were introduced that improved the performance of various flow operators and iteration over channels (#1534 ).
Fixed interaction of multiple flows with take operator (#1610 ).
Throw NoSuchElementException instead of UnsupportedOperationException for empty Flow in reduce operator (#1659 ).
onCompletion now rethrows downstream exceptions on emit attempt (#1654 ).
Allow non-emitting withContext from flow builder (#1616 ).
Debugging
DebugProbes.dumpCoroutines is optimized to be able to print the 6-digit number of coroutines (#1535 ).
Properly capture unstarted lazy coroutines in debugger (#1544 ).
Capture coroutines launched from within a test constructor with CoroutinesTimeout test rule (#1542 ).
Stacktraces of Job-related coroutine machinery are shortened and prettified (#1574 ).
Stacktrace recovery unification that should provide a consistent experience recover of stacktrace (#1597 ).
Stacktrace recovery for withTimeout is supported (#1625 ).
Do not recover exception with a single String parameter constructor that is not a message (#1631 ).
Other features
Dispatchers.Default and Dispatchers.IO rework: CPU consumption is significantly lower, predictable idle threads termination (#840 , #1046 , #1286 ).
Avoid ServiceLoader for loading Dispatchers.Main (#1572 , #1557 , #878 , #1606 ).
Consistently handle undeliverable exceptions in RxJava and Reactor integrations (#252 , #1614 ).
yield support in immediate dispatchers (#1474 ).
CompletableDeferred.completeWith(result: Result<T>) is introduced.
Added support for tvOS and watchOS-based Native targets (#1596 ).
Bug fixes and improvements
Kotlin version is updated to 1.3.61.
CoroutineDispatcher.isDispatchNeeded is promoted to stable API (#1014 ).
Livelock and stackoverflows in mutual select expressions are fixed (#1411 , #504 ).
Properly handle null values in ListenableFuture integration (#1510 ).
Making ReceiveChannel.cancel linearizability-friendly.
Linearizability of Channel.close in a complex contended cases (#1419 ).
ArrayChannel.isBufferEmpty atomicity is fixed (#1526 ).
Various documentation improvements.
Reduced bytecode size of kotlinx-coroutines-core, reduced size of minified dex when using basic functionality of kotlinx-coroutines.
You can’t perform that action at this time.