1.2.0-alpha
- Major debug agent improvements. Real stacktraces are merged with coroutine stacktraces for running coroutines, merging heuristic is improved, API is cleaned up and is on its road to stabilization (#997).
CoroutineTimeoutrule for JUnit4 is introduced to simplify coroutines debugging (#938).- Stacktrace recovery improvements. Exceptions with custom properties are no longer copied,
CopyableThrowableinterface is introduced, machinery is documented (#921, #950). Dispatchers.Unconfined,MainCoroutineDispatcher.immediate,MainScopeandCoroutineScope.cancelare promoted to stable API (#972).CompletableJobis introduced (#971).- Structured concurrency is integrated into futures and listenable futures (#1007).
ensurePresentandisPresentextensions forThreadLocal(#1028).ensureActiveextensions forCoroutineContext,CoroutineScopeandJob(#963).SendChannel.isFullandReceiveChannel.isEmptyare deprecated (#1053).withContextchecks cancellation on entering (#962).- Operator
invokeonCoroutineDispatcher(#428). - Java 8 extensions for
delayandwithTimeoutnow properly handle too large values (#428). - Performance of
Dispatcher.Maininitialization is significantly improved (#878). - A global exception handler for fatal exceptions in coroutines is introduced (#808, #773).
- Major improvements in cancellation machinery and exceptions delivery consistency. Cancel with custom exception is completely removed.
- Kotlin version is updated to 1.3.21.
- Do not use private API on newer Androids to handle exceptions (#822).
Bug fixes:
- Proper
selectsupport in debug agent (#931). - Proper
supervisorScopesupport in debug agent (#915). - Throwing
initCausedoes no longer trigger an internal error (#933). - Lazy actors are started when calling
closein order to clean up their resources (#939). - Minor bugs in reactive integrations are fixed (#1008).
- Experimental scheduler shutdown sequence is fixed (#990).