github Kotlin/kotlinx.coroutines 1.7.0-Beta

latest releases: 1.9.0, 1.9.0-RC.2, 1.9.0-RC...
18 months ago

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.10.
  • 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).
  • Various documentation improvements and fixes.

Don't miss a new kotlinx.coroutines release

NewReleases is sending notifications on new releases.