Update coroutines to v1.9.0
This PR contains the following updates:
| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| org.jetbrains.kotlinx:kotlinx-coroutines-test | 1.7.0 -> 1.9.0 |
||||
| org.jetbrains.kotlinx:kotlinx-coroutines-core | 1.7.0 -> 1.9.0 |
Release Notes
Kotlin/kotlinx.coroutines (org.jetbrains.kotlinx:kotlinx-coroutines-test)
v1.9.0
Features
- Wasm/WASI target support (#4064). Thanks, @igoriakovlev!
limitedParallelismnow optionally accepts the name of the dispatcher view for easier debugging (#4023).- No longer initialize
Dispatchers.IOon the JVM when other standard dispatchers are accessed (#4166). Thanks, @metalhead8816! - Introduced the
Flow<T>.chunked(size: Int): Flow<List<T>>operator that groups emitted values into groups of the given size (#1290). - Closeable dispatchers are instances of
AutoCloseablenow (#4123).
Fixes
- Calling
hasNexton aChannel's iterator is idempotent (#4065). Thanks, @gitpaxultek! CoroutineScope()created without an explicit dispatcher usesDispatchers.Defaulton Native (#4074). Thanks, @whyoleg!- Fixed a bug that prevented non-Android
Dispatchers.Mainfrom initializing when the Firebase dependency is used (#3914). - Ensured a more intuitive ordering of tasks in
runBlocking(#4134). - Forbid casting a
MutextoSemaphore(#4176). - Worked around a stack overflow that may occur when calling
asDeferredon aFuturemany times (#4156).
Deprecations and promotions
- Advanced the deprecation levels for
BroadcastChannel-based API (#4197). - Advanced the deprecation levels for the old
kotlinx-coroutines-testAPI (#4198). - Deprecated
Job.cancelFutureOnCompletion(#4173). - Promoted
CoroutineDispatcher.limitedParallelismto stable (#3864). - Promoted
CoroutineStart.ATOMICfromExperimentalCoroutinesApitoDelicateCoroutinesApi(#4169). - Promoted
CancellableContinuation.resumewith anonCancellationlambda to stable, providing extra arguments to the lambda (#4088). - Marked the classes and interfaces that are not supposed to be inherited from with the new
InternalForInheritanceCoroutinesApiopt-in (#3770). - Marked the classes and interfaces inheriting from which is not stable with the new
ExperimentalForInheritanceCoroutinesApiopt-in (#3770).
Other
- Kotlin was updated to 2.0 (#4137).
- Reworked the documentation for
CoroutineStartandChannel-based API (#4147, #4148, #4167). Thanks, @globsterg! - Simplified the internal implementation of
Job(#4053). - Small tweaks, fixes, and documentation improvements.
v1.8.1
- Remove the
@ExperimentalTimeannotation from usages ofTimeSource(#4046). Thanks, @hfhbd! - Introduce a workaround for an Android bug that caused an occasional
NullPointerExceptionwhen setting theStateFlowvalue on old Android devices (#3820). - No longer use
kotlin.random.Randomas part ofDispatchers.DefaultandDispatchers.IOinitialization (#4051). Flow.timeoutthrows the exception with which the channel was closed (#4071).- Small tweaks and documentation fixes.
Changelog relative to version 1.8.1-Beta
Flow.timeoutthrows the exception with which the channel was closed (#4071).- Small documentation fixes.
v1.8.0
- Implement the library for the Web Assembly (Wasm) for JavaScript (#3713). Thanks @igoriakovlev!
- Major Kotlin version update: was 1.8.20, became 1.9.21.
- On Android, ensure that
Dispatchers.Main != Dispatchers.Main.immediate(#3545, #3963). - Fixed a bug that caused
Flowoperators that limit cancel the upstream flow to forget that they were already finished if there is another such operator upstream (#4035, #4038) kotlinx-coroutines-debugis published with the correct Java 9 module info (#3944).kotlinx-coroutines-debugno longer requires manually settingDebugProbes.enableCoroutineCreationStackTracestofalse, it's the default (#3783).kotlinx-coroutines-test: set the default timeout ofrunTestto 60 seconds, added the ability to configure it on the JVM with thekotlinx.coroutines.test.default_timeout=10s(#3800).kotlinx-coroutines-test: fixed a bug that could lead to not all uncaught exceptions being reported after some tests failed (#3800).delay(Duration)rounds nanoseconds up to whole milliseconds and not down (#3920). Thanks @kevincianfarini!Dispatchers.Defaultand the default thread for background work are guaranteed to use the same context classloader as the object containing it them (#3832).- It is guaranteed that by the time
SharedFlow.collectsuspends for the first time, it's registered as a subscriber for thatSharedFlow(#3885). Before, it was also true, but not documented. - Atomicfu version is updated to 0.23.1, and Kotlin/Native atomic transformations are enabled, reducing the footprint of coroutine-heavy code (#3954).
- Added a workaround for miscompilation of
withLockon JS (#3881). Thanks @CLOVIS-AI! - Small tweaks and documentation fixes.
Changelog relative to version 1.8.0-RC2
kotlinx-coroutines-debugno longer requires manually settingDebugProbes.enableCoroutineCreationStackTracestofalse, it's the default (#3783).- Fixed a bug that caused
Flowoperators that limit cancel the upstream flow to forget that they were already finished if there is another such operator upstream (#4035, #4038) - Small documentation fixes.
v1.7.3
- Disabled the publication of the multiplatform library metadata for the old (1.6 and earlier) KMP Gradle plugin (#3809).
- Fixed a bug introduced in 1.7.2 that disabled the coroutine debugger in IDEA (#3822).
v1.7.2
Bug fixes and improvements
- Coroutines debugger no longer keeps track of coroutines with empty coroutine context (#3782).
CopyableThreadContextElementnow properly copies an element when crossing the coroutine boundary inflowOn(#3787). Thanks @wanyingd1996!- Coroutine timeouts no longer prevent K/N
newSingleThreadContextfrom closing (#3768). - A non-linearizability in
MutexduringtryLock/unlocksequence with owners is fixed (#3745). - Atomicfu version is updated to 0.21.0.
v1.7.1
Bug fixes and improvements
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 is behind base branch, 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 was generated by Mend Renovate. View the repository job log.
Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
Project coverage is 54.84%. Comparing base (
5a39167) to head (f3ce8c1).
:exclamation: Current head f3ce8c1 differs from pull request most recent head 60fcc65. Consider uploading reports for the commit 60fcc65 to get more accurate results
Additional details and impacted files
@@ Coverage Diff @@
## main #349 +/- ##
=========================================
Coverage 54.84% 54.84%
Complexity 117 117
=========================================
Files 104 104
Lines 1732 1732
Branches 239 239
=========================================
Hits 950 950
Misses 672 672
Partials 110 110
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
APK Size: WARNING: The APKs won't be signed and thus not installable unless you also pass a keystore via the flag --ks. See the command help for more information.