Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update kotlin_coroutines_version to v1.7.0 #116

Merged
merged 1 commit into from May 11, 2023

Conversation

renovate[bot]
Copy link
Contributor

@renovate renovate bot commented May 11, 2023

Mend Renovate

This PR contains the following updates:

Package Change Age Adoption Passing Confidence
org.jetbrains.kotlinx:kotlinx-coroutines-android 1.5.1 -> 1.7.0 age adoption passing confidence
org.jetbrains.kotlinx:kotlinx-coroutines-core 1.5.1 -> 1.7.0 age adoption passing confidence

Release Notes

Kotlin/kotlinx.coroutines

v1.7.0

Compare Source

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.
Changelog relative to version 1.7.0-RC
  • 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).

v1.6.4

Compare Source

  • Added TestScope.backgroundScope for launching coroutines that perform work in the background and need to be cancelled at the end of the test (#​3287).
  • Fixed the POM of kotlinx-coroutines-debug having an incorrect reference to kotlinx-coroutines-bom, which cause the builds of Maven projects using the debug module to break (#​3334).
  • Fixed the Publisher.await functions in kotlinx-coroutines-reactive not ensuring that the Subscriber methods are invoked serially (#​3360). Thank you, @​EgorKulbachka!
  • Fixed a memory leak in withTimeout on K/N with the new memory model (#​3351).
  • Added the guarantee that all Throwable implementations in the core library are serializable (#​3328).
  • Moved the documentation to https://kotlinlang.org/api/kotlinx.coroutines/ (#​3342).
  • Various documentation improvements.

v1.6.3

Compare Source

  • Updated atomicfu version to 0.17.3 (#​3321), fixing the projects using this library with JS IR failing to build (#​3305).

v1.6.2

Compare Source

  • Fixed a bug with ThreadLocalElement not being correctly updated when the most outer suspend function was called directly without kotlinx.coroutines (#​2930).
  • Fixed multiple data races: one that might have been affecting runBlocking event loop, and a benign data race in Mutex (#​3250, #​3251).
  • Obsolete TestCoroutineContext is removed, which fixes the kotlinx-coroutines-test JPMS package being split between kotlinx-coroutines-core and kotlinx-coroutines-test (#​3218).
  • Updated the ProGuard rules to further shrink the size of the resulting DEX file with coroutines (#​3111, #​3263). Thanks, @​agrieve!
  • Atomicfu is updated to 0.17.2, which includes a more efficient and robust JS IR transformer (#​3255).
  • Kotlin is updated to 1.6.21, Gradle version is updated to 7.4.2 (#​3281). Thanks, @​wojtek-kalicinski!
  • Various documentation improvements.

v1.6.1

Compare Source

  • Rollback of time-related functions dispatching on Dispatchers.Main.
    This behavior was introduced in 1.6.0 and then found inconvenient and erroneous (#​3106, #​3113).
  • Reworked the newly-introduced CopyableThreadContextElement to solve issues uncovered after the initial release (#​3227).
  • Fixed a bug with ThreadLocalElement not being properly updated in racy scenarios (#​2930).
  • Reverted eager loading of default CoroutineExceptionHandler that triggered ANR on some devices (#​3180).
  • New API to convert a CoroutineDispatcher to a Rx scheduler (#​968, #​548). Thanks @​recheej!
  • Fixed a memory leak with the very last element emitted from flow builder being retained in memory (#​3197).
  • Fixed a bug with limitedParallelism on K/N with new memory model throwing ClassCastException (#​3223).
  • CoroutineContext is added to the exception printed to the default CoroutineExceptionHandler to improve debuggability (#​3153).
  • Static memory consumption of Dispatchers.Default was significantly reduced (#​3137).
  • Updated slf4j version in kotlinx-coroutines-slf4j from 1.7.25 to 1.7.32.

v1.6.0

Compare Source

Note that this is a full changelog relative to the 1.5.2 version. Changelog relative to 1.6.0-RC3 can be found at the end.

kotlinx-coroutines-test rework
Dispatchers
  • Introduced CoroutineDispatcher.limitedParallelism that allows obtaining a view of the original dispatcher with limited parallelism (#​2919).
  • Dispatchers.IO.limitedParallelism usages ignore the bound on the parallelism level of Dispatchers.IO itself to avoid starvation (#​2943).
  • Introduced new Dispatchers.shutdown method for containerized environments (#​2558).
  • newSingleThreadContext and newFixedThreadPoolContext are promoted to delicate API (#​2919).
Breaking changes
  • When racing with cancellation, the future builder no longer reports unhandled exceptions into the global CoroutineExceptionHandler. Thanks @​vadimsemenov! (#​2774, #​2791).
  • Mutex.onLock is deprecated for removal (#​2794).
  • Dispatchers.Main is now used as the default source of time for delay and withTimeout when present(#​2972).
    • To opt-out from this behaviour, kotlinx.coroutines.main.delay system property can be set to false.
  • Java target of coroutines build is now 8 instead of 6 (#​1589).
  • Source-breaking change: extension collect no longer resolves when used with a non-in-place argument of a functional type. This is a candidate for a fix, uncovered after 1.6.0, see #​3107 for the additional details.
Bug fixes and improvements
  • Kotlin is updated to 1.6.0.
  • Kotlin/Native new memory model is now supported in regular builds of coroutines conditionally depending on whether kotlin.native.binary.memoryModel is enabled (#​2914).
  • Introduced CopyableThreadContextElement for mutable context elements shared among multiple coroutines. Thanks @​yorickhenning! (#​2893).
  • transformWhile, awaitClose, ProducerScope, merge, runningFold, runingReduce, and scan are promoted to stable API (#​2971).
  • SharedFlow.subscriptionCount no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#​2488, #​2863, #​2871).
  • Flow exception transparency mechanism is improved to be more exception-friendly (#​3017, #​2860).
  • Cancellation from flat* operators that leverage multiple coroutines is no longer propagated upstream (#​2964).
  • SharedFlow.collect now returns Nothing (#​2789, #​2502).
  • DisposableHandle is now fun interface, and corresponding inline extension is removed (#​2790).
  • FlowCollector is now fun interface, and corresponding inline extension is removed (#​3047).
  • Deprecation level of all previously deprecated signatures is raised (#​3024).
  • The version file is shipped with each JAR as a resource (#​2941).
  • Unhandled exceptions on K/N are passed to the standard library function processUnhandledException (#​2981).
  • A direct executor is used for Task callbacks in kotlinx-coroutines-play-services (#​2990).
  • Metadata of coroutines artifacts leverages Gradle platform to have all versions of dependencies aligned (#​2865).
  • Default CoroutineExceptionHandler is loaded eagerly and does not invoke ServiceLoader on its exception-handling path (#​2552).
  • Fixed the R8 rules for ServiceLoader optimization (#​2880).
  • Fixed BlockHound integration false-positives (#​2894, #​2866, #​2937).
  • Fixed the exception handler being invoked several times on Android, thanks to @​1zaman (#​3056).
  • SendChannel.trySendBlocking is now available on Kotlin/Native (#​3064).
  • The exception recovery mechanism now uses ClassValue when available (#​2997).
  • JNA is updated to 5.9.0 to support Apple M1 (#​3001).
  • Obsolete method on internal Delay interface is deprecated (#​2979).
  • Support of deprecated CommonPool is removed.
  • @ExperimentalTime is no longer needed for methods that use Duration (#​3041).
  • JDK 1.6 is no longer required for building the project (#​3043).
  • New version of Dokka is used, fixing the memory leak when building the coroutines and providing brand new reference visuals (https://kotlinlang.org/api/kotlinx.coroutines/) (#​3051, #​3054).
Changelog relative to version 1.6.0-RC3
  • Restored MPP binary compatibility on K/JS and K/N (#​3104).
  • Fixed Dispatchers.Main not being fully initialized on Android and Swing (#​3101).

v1.5.2

Compare Source

  • Kotlin is updated to 1.5.30.
  • New native targets for Apple Silicon are introduced.
  • Fixed a bug when onUndeliveredElement was incorrectly called on a properly received elements on JS (#​2826).
  • Fixed Dispatchers.Default on React Native, it now fully relies on setTimeout instead of stub process.nextTick. Thanks to @​Legion2 (#​2843).
  • Optimizations of Mutex implementation (#​2581).
  • Mutex implementation is made completely lock-free as stated (#​2590).
  • Various documentation and guides improvements. Thanks to @​MasoodFallahpoor and @​Pihanya.

Configuration

📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate. View repository job log here.

@akitikkx akitikkx merged commit 3933291 into main May 11, 2023
2 checks passed
@renovate renovate bot deleted the renovate/kotlin_coroutines_version branch May 11, 2023 14:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant