xref: /aosp_15_r20/external/kotlinx.coroutines/CHANGES.md (revision 7a7160fed73afa6648ef8aa100d4a336fe921d9a)
1*7a7160feSAndroid Build Coastguard Worker# Change log for kotlinx.coroutines
2*7a7160feSAndroid Build Coastguard Worker
3*7a7160feSAndroid Build Coastguard Worker## Version 1.8.1
4*7a7160feSAndroid Build Coastguard Worker
5*7a7160feSAndroid Build Coastguard Worker* Remove the `@ExperimentalTime` annotation from usages of `TimeSource` (#4046). Thanks, @hfhbd!
6*7a7160feSAndroid Build Coastguard Worker* Introduce a workaround for an Android bug that caused an occasional `NullPointerException` when setting the `StateFlow` value on old Android devices (#3820).
7*7a7160feSAndroid Build Coastguard Worker* No longer use `kotlin.random.Random` as part of `Dispatchers.Default` and `Dispatchers.IO` initialization (#4051).
8*7a7160feSAndroid Build Coastguard Worker* `Flow.timeout` throws the exception with which the channel was closed (#4071).
9*7a7160feSAndroid Build Coastguard Worker* Small tweaks and documentation fixes.
10*7a7160feSAndroid Build Coastguard Worker
11*7a7160feSAndroid Build Coastguard Worker### Changelog relative to version 1.8.1-Beta
12*7a7160feSAndroid Build Coastguard Worker
13*7a7160feSAndroid Build Coastguard Worker* `Flow.timeout` throws the exception with which the channel was closed (#4071).
14*7a7160feSAndroid Build Coastguard Worker* Small documentation fixes.
15*7a7160feSAndroid Build Coastguard Worker
16*7a7160feSAndroid Build Coastguard Worker## Version 1.8.1-Beta
17*7a7160feSAndroid Build Coastguard Worker
18*7a7160feSAndroid Build Coastguard Worker* Remove the `@ExperimentalTime` annotation from usages of `TimeSource` (#4046). Thanks, @hfhbd!
19*7a7160feSAndroid Build Coastguard Worker* Attempt a workaround for an Android bug that caused an occasional `NullPointerException` when setting the `StateFlow` value on old Android devices (#3820).
20*7a7160feSAndroid Build Coastguard Worker* No longer use `kotlin.random.Random` as part of `Dispatchers.Default` and `Dispatchers.IO` initialization (#4051).
21*7a7160feSAndroid Build Coastguard Worker* Small tweaks.
22*7a7160feSAndroid Build Coastguard Worker
23*7a7160feSAndroid Build Coastguard Worker## Version 1.8.0
24*7a7160feSAndroid Build Coastguard Worker
25*7a7160feSAndroid Build Coastguard Worker* Implement the library for the Web Assembly (Wasm) for JavaScript (#3713). Thanks @igoriakovlev!
26*7a7160feSAndroid Build Coastguard Worker* Major Kotlin version update: was 1.8.20, became 1.9.21.
27*7a7160feSAndroid Build Coastguard Worker* On Android, ensure that `Dispatchers.Main != Dispatchers.Main.immediate` (#3545, #3963).
28*7a7160feSAndroid Build Coastguard Worker* Fixed a bug that caused `Flow` operators that limit cancel the upstream flow to forget that they were already finished if there is another such operator upstream (#4035, #4038)
29*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-debug` is published with the correct Java 9 module info (#3944).
30*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-debug` no longer requires manually setting `DebugProbes.enableCoroutineCreationStackTraces` to `false`, it's the default (#3783).
31*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-test`: set the default timeout of `runTest` to 60 seconds, added the ability to configure it on the JVM with the `kotlinx.coroutines.test.default_timeout=10s` (#3800).
32*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-test`: fixed a bug that could lead to not all uncaught exceptions being reported after some tests failed (#3800).
33*7a7160feSAndroid Build Coastguard Worker* `delay(Duration)` rounds nanoseconds up to whole milliseconds and not down (#3920). Thanks @kevincianfarini!
34*7a7160feSAndroid Build Coastguard Worker* `Dispatchers.Default` and the default thread for background work are guaranteed to use the same context classloader as the object containing it them (#3832).
35*7a7160feSAndroid Build Coastguard Worker* It is guaranteed that by the time `SharedFlow.collect` suspends for the first time, it's registered as a subscriber for that `SharedFlow` (#3885). Before, it was also true, but not documented.
36*7a7160feSAndroid Build Coastguard Worker* Atomicfu version is updated to 0.23.1, and Kotlin/Native atomic transformations are enabled, reducing the footprint of coroutine-heavy code (#3954).
37*7a7160feSAndroid Build Coastguard Worker* Added a workaround for miscompilation of `withLock` on JS (#3881). Thanks @CLOVIS-AI!
38*7a7160feSAndroid Build Coastguard Worker* Small tweaks and documentation fixes.
39*7a7160feSAndroid Build Coastguard Worker
40*7a7160feSAndroid Build Coastguard Worker### Changelog relative to version 1.8.0-RC2
41*7a7160feSAndroid Build Coastguard Worker
42*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-debug` no longer requires manually setting `DebugProbes.enableCoroutineCreationStackTraces` to `false`, it's the default (#3783).
43*7a7160feSAndroid Build Coastguard Worker* Fixed a bug that caused `Flow` operators that limit cancel the upstream flow to forget that they were already finished if there is another such operator upstream (#4035, #4038)
44*7a7160feSAndroid Build Coastguard Worker* Small documentation fixes.
45*7a7160feSAndroid Build Coastguard Worker
46*7a7160feSAndroid Build Coastguard Worker## Version 1.8.0-RC2
47*7a7160feSAndroid Build Coastguard Worker
48*7a7160feSAndroid Build Coastguard Worker* Fixed a bug introduced in 1.8.0-RC where `Mutex.onLock` would not unlock if a non-local return was performed (#3985).
49*7a7160feSAndroid Build Coastguard Worker* Fixed a bug introduced in 1.8.0-RC where depending on kotlinx-coroutines in Native code failed with a compilation error `Could not find "org.jetbrains.kotlinx:atomicfu-cinterop-interop"` (#3968).
50*7a7160feSAndroid Build Coastguard Worker* Small documentation fixes.
51*7a7160feSAndroid Build Coastguard Worker
52*7a7160feSAndroid Build Coastguard Worker## Version 1.8.0-RC
53*7a7160feSAndroid Build Coastguard Worker
54*7a7160feSAndroid Build Coastguard Worker* Implement the library for the Web Assembly (Wasm) for JavaScript (#3713). Thanks @igoriakovlev!
55*7a7160feSAndroid Build Coastguard Worker* On Android, ensure that `Dispatchers.Main != Dispatchers.Main.immediate` (#3545, #3963).
56*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-debug` is published with the correct Java 9 module info (#3944).
57*7a7160feSAndroid Build Coastguard Worker* Major Kotlin version update: was 1.8.20, became 1.9.21.
58*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-test`: set the default timeout of `runTest` to 60 seconds, added the ability to configure it on the JVM with the `kotlinx.coroutines.test.default_timeout=10s` (#3800).
59*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-test`: fixed a bug that could lead to not all uncaught exceptions being reported after some tests failed (#3800).
60*7a7160feSAndroid Build Coastguard Worker* `delay(Duration)` rounds nanoseconds up to whole milliseconds and not down (#3920). Thanks @kevincianfarini!
61*7a7160feSAndroid Build Coastguard Worker* `Dispatchers.Default` and the default thread for background work are guaranteed to use the same context classloader as the object containing it them (#3832).
62*7a7160feSAndroid Build Coastguard Worker* It is guaranteed that by the time `SharedFlow.collect` suspends for the first time, it's registered as a subscriber for that `SharedFlow` (#3885). Before, it was also true, but not documented.
63*7a7160feSAndroid Build Coastguard Worker* Atomicfu version is updated to 0.23.1, and Kotlin/Native atomic transformations are enabled, reducing the footprint of coroutine-heavy code (#3954).
64*7a7160feSAndroid Build Coastguard Worker* Added a workaround for miscompilation of `withLock` on JS (#3881). Thanks @CLOVIS-AI!
65*7a7160feSAndroid Build Coastguard Worker* Small tweaks and documentation fixes.
66*7a7160feSAndroid Build Coastguard Worker
67*7a7160feSAndroid Build Coastguard Worker## Version 1.7.3
68*7a7160feSAndroid Build Coastguard Worker
69*7a7160feSAndroid Build Coastguard Worker* Disabled the publication of the multiplatform library metadata for the old (1.6 and earlier) KMP Gradle plugin (#3809).
70*7a7160feSAndroid Build Coastguard Worker* Fixed a bug introduced in 1.7.2 that disabled the coroutine debugger in IDEA (#3822).
71*7a7160feSAndroid Build Coastguard Worker
72*7a7160feSAndroid Build Coastguard Worker## Version 1.7.2
73*7a7160feSAndroid Build Coastguard Worker
74*7a7160feSAndroid Build Coastguard Worker### Bug fixes and improvements
75*7a7160feSAndroid Build Coastguard Worker
76*7a7160feSAndroid Build Coastguard Worker* Coroutines debugger no longer keeps track of coroutines with empty coroutine context (#3782).
77*7a7160feSAndroid Build Coastguard Worker* `CopyableThreadContextElement` now properly copies an element when crossing the coroutine boundary in `flowOn` (#3787). Thanks @wanyingd1996!
78*7a7160feSAndroid Build Coastguard Worker* Coroutine timeouts no longer prevent K/N `newSingleThreadContext` from closing (#3768).
79*7a7160feSAndroid Build Coastguard Worker* A non-linearizability in `Mutex` during `tryLock`/`unlock` sequence with owners is fixed (#3745).
80*7a7160feSAndroid Build Coastguard Worker* Atomicfu version is updated to 0.21.0.
81*7a7160feSAndroid Build Coastguard Worker
82*7a7160feSAndroid Build Coastguard Worker## Version 1.7.1
83*7a7160feSAndroid Build Coastguard Worker
84*7a7160feSAndroid Build Coastguard Worker### Bug fixes and improvements
85*7a7160feSAndroid Build Coastguard Worker
86*7a7160feSAndroid Build Coastguard Worker* Special characters in coroutine names in JSON dumps are supported (#3747)
87*7a7160feSAndroid Build Coastguard Worker* The binary compatibility of the experimental overload of `runTest` is restored (#3673)
88*7a7160feSAndroid Build Coastguard Worker* Channels that don't use `onUndeliveredElement` now allocate less memory (#3646)
89*7a7160feSAndroid Build Coastguard Worker
90*7a7160feSAndroid Build Coastguard Worker## Version 1.7.0
91*7a7160feSAndroid Build Coastguard Worker
92*7a7160feSAndroid Build Coastguard Worker### Core API significant improvements
93*7a7160feSAndroid Build Coastguard Worker
94*7a7160feSAndroid Build Coastguard Worker* New `Channel` implementation with significant performance improvements across the API (#3621).
95*7a7160feSAndroid Build Coastguard Worker* New `select` operator implementation: faster, more lightweight, and more robust (#3020).
96*7a7160feSAndroid Build Coastguard Worker* `Mutex` and `Semaphore` now share the same underlying data structure (#3020).
97*7a7160feSAndroid Build Coastguard Worker* `Dispatchers.IO` is added to K/N (#3205)
98*7a7160feSAndroid Build Coastguard Worker  * `newFixedThreadPool` and `Dispatchers.Default` implementations on K/N were wholly rewritten to support graceful growth under load (#3595).
99*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-test` rework:
100*7a7160feSAndroid Build Coastguard Worker  - 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).
101*7a7160feSAndroid Build Coastguard Worker  - The `withTimeout` exception messages indicate if the timeout used the virtual time (#3588).
102*7a7160feSAndroid Build Coastguard Worker  - `TestCoroutineScheduler`, `runTest`, and `TestScope` API are promoted to stable (#3622).
103*7a7160feSAndroid Build Coastguard Worker  - `runTest` now also fails if there were uncaught exceptions in coroutines not inherited from the test coroutine (#1205).
104*7a7160feSAndroid Build Coastguard Worker
105*7a7160feSAndroid Build Coastguard Worker### Breaking changes
106*7a7160feSAndroid Build Coastguard Worker
107*7a7160feSAndroid Build Coastguard Worker* Old K/N memory model is no longer supported (#3375).
108*7a7160feSAndroid Build Coastguard Worker* New generic upper bounds were added to reactive integration API where the language since 1.8.0 dictates (#3393).
109*7a7160feSAndroid Build Coastguard Worker* `kotlinx-coroutines-core` and `kotlinx-coroutines-jdk8` artifacts were merged into a single artifact (#3268).
110*7a7160feSAndroid Build Coastguard Worker* Artificial stackframes in stacktrace recovery no longer contain the `\b` symbol and are now navigable in IDE and supplied with proper documentation (#2291).
111*7a7160feSAndroid Build Coastguard Worker* `CoroutineContext.isActive` returns `true` for contexts without any job in them (#3300).
112*7a7160feSAndroid Build Coastguard Worker
113*7a7160feSAndroid Build Coastguard Worker### Bug fixes and improvements
114*7a7160feSAndroid Build Coastguard Worker
115*7a7160feSAndroid Build Coastguard Worker* Kotlin version is updated to 1.8.20
116*7a7160feSAndroid Build Coastguard Worker* Atomicfu version is updated to 0.20.2.
117*7a7160feSAndroid Build Coastguard Worker* `JavaFx` version is updated to 17.0.2 in `kotlinx-coroutines-javafx` (#3671)..
118*7a7160feSAndroid Build Coastguard Worker* JPMS is supported (#2237). Thanks @lion7!
119*7a7160feSAndroid Build Coastguard Worker* `BroadcastChannel` and all the corresponding API are deprecated (#2680).
120*7a7160feSAndroid Build Coastguard Worker* Added all supported K/N targets (#3601, #812, #855).
121*7a7160feSAndroid Build Coastguard Worker* K/N `Dispatchers.Default` is backed by the number of threads equal to the number of available cores (#3366).
122*7a7160feSAndroid Build Coastguard Worker* Fixed an issue where some coroutines' internal exceptions were not properly serializable (#3328).
123*7a7160feSAndroid Build Coastguard Worker* Introduced `Job.parent` API (#3201).
124*7a7160feSAndroid Build Coastguard Worker* Fixed a bug when `TestScheduler` leaked cancelled jobs (#3398).
125*7a7160feSAndroid Build Coastguard Worker* `TestScope.timeSource` now provides comparable time marks (#3617). Thanks @hfhbd!
126*7a7160feSAndroid Build Coastguard Worker* Fixed an issue when cancelled `withTimeout` handles were preserved in JS runtime (#3440).
127*7a7160feSAndroid Build Coastguard Worker* Ensure `awaitFrame` only awaits a single frame when used from the main looper (#3432). Thanks @pablobaxter!
128*7a7160feSAndroid Build Coastguard Worker* Obsolete `Class-Path` attribute was removed from `kotlinx-coroutines-debug.jar` manifest (#3361).
129*7a7160feSAndroid Build Coastguard Worker* Fixed a bug when `updateThreadContext` operated on the parent context (#3411).
130*7a7160feSAndroid Build Coastguard Worker* Added new `Flow.filterIsInstance` extension (#3240).
131*7a7160feSAndroid Build Coastguard Worker* `Dispatchers.Default` thread name prefixes are now configurable with system property (#3231).
132*7a7160feSAndroid Build Coastguard Worker* Added `Flow.timeout` operator as `@FlowPreview` (#2624). Thanks @pablobaxter!
133*7a7160feSAndroid Build Coastguard Worker* Improved the performance of the `future` builder in case of exceptions (#3475). Thanks @He-Pin!
134*7a7160feSAndroid Build Coastguard Worker* `Mono.awaitSingleOrNull` now waits for the `onComplete` signal (#3487).
135*7a7160feSAndroid Build Coastguard Worker* `Channel.isClosedForSend` and `Channel.isClosedForReceive` are promoted from experimental to delicate (#3448).
136*7a7160feSAndroid Build Coastguard Worker* Fixed a data race in native `EventLoop` (#3547).
137*7a7160feSAndroid Build Coastguard Worker* `Dispatchers.IO.limitedParallelism(valueLargerThanIOSize)` no longer creates an additional wrapper (#3442). Thanks @dovchinnikov!
138*7a7160feSAndroid Build Coastguard Worker* Various `@FlowPreview` and `@ExperimentalCoroutinesApi` are promoted to experimental and stable respectively (#3542, #3097, #3548).
139*7a7160feSAndroid Build Coastguard Worker* Performance improvements in `Dispatchers.Default` and `Dispatchers.IO` (#3416, #3418).
140*7a7160feSAndroid Build Coastguard Worker* Fixed a bug when internal `suspendCancellableCoroutineReusable` might have hanged (#3613).
141*7a7160feSAndroid Build Coastguard Worker* Introduced internal API to process events in the current system dispatcher (#3439).
142*7a7160feSAndroid Build Coastguard Worker* Global `CoroutineExceptionHandler` is no longer invoked in case of unprocessed `future` failure (#3452).
143*7a7160feSAndroid Build Coastguard Worker* Performance improvements and reduced thread-local pressure for the `withContext` operator (#3592).
144*7a7160feSAndroid Build Coastguard Worker* Improved performance of `DebugProbes` (#3527).
145*7a7160feSAndroid Build Coastguard Worker* Fixed a bug when the coroutine debugger might have detected the state of a coroutine incorrectly (#3193).
146*7a7160feSAndroid Build Coastguard Worker* `CoroutineDispatcher.asExecutor()` runs tasks without dispatching if the dispatcher is unconfined (#3683). Thanks @odedniv!
147*7a7160feSAndroid Build Coastguard Worker* `SharedFlow.toMutableList` and `SharedFlow.toSet` lints are introduced (#3706).
148*7a7160feSAndroid Build Coastguard Worker* `Channel.invokeOnClose` is promoted to stable API (#3358).
149*7a7160feSAndroid Build Coastguard Worker* Improved lock contention in `Dispatchers.Default` and `Dispatchers.IO` during the startup phase (#3652).
150*7a7160feSAndroid Build Coastguard Worker* Fixed a bug that led to threads oversubscription in `Dispatchers.Default` (#3642).
151*7a7160feSAndroid Build Coastguard Worker* Fixed a bug that allowed `limitedParallelism` to perform dispatches even after the underlying dispatcher was closed (#3672).
152*7a7160feSAndroid Build Coastguard Worker* Fixed a bug that prevented stacktrace recovery when the exception's constructor from `cause` was selected (#3714).
153*7a7160feSAndroid Build Coastguard Worker* Improved sanitizing of stracktrace-recovered traces (#3714).
154*7a7160feSAndroid Build Coastguard Worker* Introduced an internal flag to disable uncaught exceptions reporting in tests as a temporary migration mechanism (#3736).
155*7a7160feSAndroid Build Coastguard Worker* Various documentation improvements and fixes.
156*7a7160feSAndroid Build Coastguard Worker
157*7a7160feSAndroid Build Coastguard WorkerChangelog for previous versions may be found in [CHANGES_UP_TO_1.7.md](CHANGES_UP_TO_1.7.md)
158