Skip to content

1.7.0

Compare
Choose a tag to compare
@qwwdfsad qwwdfsad released this 05 May 15:40
· 264 commits to master since this release
2e92d58

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.20
  • Atomicfu version is updated to 0.20.2.
  • JavaFx version is updated to 17.0.2 in kotlinx-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 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).
  • 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).
  • Improved lock contention in Dispatchers.Default and Dispatchers.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.