You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGES.md
+85
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,90 @@
1
1
# Change log for kotlinx.coroutines
2
2
3
+
## Version 1.3.5
4
+
5
+
*`firstOrNull` operator. Contributed by @bradynpoulsen.
6
+
*`java.time` adapters for Flow operators. Contributed by @fvasco.
7
+
*`kotlin.time.Duration` support (#1402). Contributed by @fvasco.
8
+
* Memory leak with a mix of reusable and non-reusable continuations is fixed (#1855).
9
+
*`DebugProbes` are ready for production installation: its performance is increased, the flag to disable creation stacktraces to reduce the footprint is introduced (#1379, #1372).
10
+
* Stacktrace recovery workaround for Android 6.0 and earlier bug (#1866).
11
+
* New integration module: `kotlinx-coroutines-jdk9` with adapters for `java.util.concurrent.Flow`.
*`kotlinx-coroutines-bom` is published without Gradle metadata.
14
+
* Make calls to service loader in reactor integrations optimizable by R8 (#1817).
15
+
16
+
## Version 1.3.4
17
+
18
+
### Flow
19
+
20
+
* Detect missing `awaitClose` calls in `callbackFlow` to make it less error-prone when used with callbacks (#1762, #1770). This change makes `callbackFlow`**different** from `channelFlow`.
21
+
*`ReceiveChannel.asFlow` extension is introduced (#1490).
22
+
* Enforce exception transparency invariant in `flow` builder (#1657).
23
+
* Proper `Dispatcher` support in `Flow` reactive integrations (#1765).
24
+
* Batch `Subscription.request` calls in `Flow` reactive integration (#766).
25
+
*`ObservableValue.asFlow` added to JavaFx integration module (#1695).
26
+
*`ObservableSource.asFlow` added to RxJava2 integration module (#1768).
27
+
28
+
### Other changes
29
+
30
+
*`kotlinx-coroutines-core` is optimized for R8, making it much smaller for Android usages (75 KB for `1.3.4` release).
31
+
* Performance of `Dispatchers.Default` is improved (#1704, #1706).
32
+
* Kotlin is updated to 1.3.70.
33
+
*`CoroutineDispatcher` and `ExecutorCoroutineDispatcher` experimental coroutine context keys are introduced (#1805).
34
+
* Performance of various `Channel` operations is improved (#1565).
35
+
36
+
## Version 1.3.3
37
+
38
+
### Flow
39
+
*`Flow.take` performance is significantly improved (#1538).
40
+
*`Flow.merge` operator (#1491).
41
+
* Reactive Flow adapters are promoted to stable API (#1549).
42
+
* Reusable cancellable continuations were introduced that improved the performance of various flow operators and iteration over channels (#1534).
43
+
* Fixed interaction of multiple flows with `take` operator (#1610).
44
+
* Throw `NoSuchElementException` instead of `UnsupportedOperationException` for empty `Flow` in `reduce` operator (#1659).
45
+
*`onCompletion` now rethrows downstream exceptions on emit attempt (#1654).
46
+
* Allow non-emitting `withContext` from `flow` builder (#1616).
47
+
48
+
### Debugging
49
+
50
+
*`DebugProbes.dumpCoroutines` is optimized to be able to print the 6-digit number of coroutines (#1535).
51
+
* Properly capture unstarted lazy coroutines in debugger (#1544).
52
+
* Capture coroutines launched from within a test constructor with `CoroutinesTimeout` test rule (#1542).
53
+
* Stacktraces of `Job`-related coroutine machinery are shortened and prettified (#1574).
54
+
* Stacktrace recovery unification that should provide a consistent experience recover of stacktrace (#1597).
55
+
* Stacktrace recovery for `withTimeout` is supported (#1625).
56
+
* Do not recover exception with a single `String` parameter constructor that is not a `message` (#1631).
57
+
58
+
### Other features
59
+
60
+
*`Dispatchers.Default` and `Dispatchers.IO` rework: CPU consumption is significantly lower, predictable idle threads termination (#840, #1046, #1286).
61
+
* Avoid `ServiceLoader` for loading `Dispatchers.Main` (#1572, #1557, #878, #1606).
62
+
* Consistently handle undeliverable exceptions in RxJava and Reactor integrations (#252, #1614).
63
+
*`yield` support in immediate dispatchers (#1474).
64
+
*`CompletableDeferred.completeWith(result: Result<T>)` is introduced.
65
+
* Added support for tvOS and watchOS-based Native targets (#1596).
66
+
67
+
### Bug fixes and improvements
68
+
69
+
* Kotlin version is updated to 1.3.61.
70
+
*`CoroutineDispatcher.isDispatchNeeded` is promoted to stable API (#1014).
71
+
* Livelock and stackoverflows in mutual `select` expressions are fixed (#1411, #504).
72
+
* Properly handle `null` values in `ListenableFuture` integration (#1510).
73
+
* Making ReceiveChannel.cancel linearizability-friendly.
74
+
* Linearizability of Channel.close in a complex contended cases (#1419).
75
+
* ArrayChannel.isBufferEmpty atomicity is fixed (#1526).
76
+
* Various documentation improvements.
77
+
* Reduced bytecode size of `kotlinx-coroutines-core`, reduced size of minified `dex` when using basic functionality of `kotlinx-coroutines`.
78
+
79
+
## Version 1.3.2
80
+
81
+
This is a maintenance release that does not include any new features or bug fixes.
82
+
83
+
* Reactive integrations for `Flow` are promoted to stable API.
84
+
* Obsolete reactive API is deprecated.
85
+
* Deprecation level for API deprecated in 1.3.0 is increased.
This gives you access to Android [Dispatchers.Main]
@@ -165,24 +165,21 @@ threads are handled by Android runtime.
165
165
166
166
#### R8 and ProGuard
167
167
168
-
For R8 no actions required, it will take obfuscation rules from the jar.
169
-
170
-
For Proguard you need to add options from [coroutines.pro](kotlinx-coroutines-core/jvm/resources/META-INF/proguard/coroutines.pro) to your rules manually.
171
-
172
-
R8 is a replacement for ProGuard in Android ecosystem, it is enabled by default since Android gradle plugin 3.4.0 (3.3.0-beta also had it enabled).
168
+
R8 and ProGuard rules are bundled into the [`kotlinx-coroutines-android`](ui/kotlinx-coroutines-android) module.
169
+
For more details see ["Optimization" section for Android](ui/kotlinx-coroutines-android/README.md#optimization).
173
170
174
171
### JS
175
172
176
173
[Kotlin/JS](https://kotlinlang.org/docs/reference/js-overview.html) version of `kotlinx.coroutines` is published as
(follow the link to get the dependency declaration snippet).
187
184
188
185
Only single-threaded code (JS-style) on Kotlin/Native is currently supported.
@@ -204,8 +201,9 @@ to Gradle (in Preferences -> Build, Execution, Deployment -> Build Tools -> Grad
204
201
205
202
### Requirements
206
203
207
-
* JDK >= 1.8 referred to by the `JAVA_HOME` environment variable.
204
+
* JDK >= 11 referred to by the `JAVA_HOME` environment variable.
208
205
* JDK 1.6 referred to by the `JDK_16` environment variable. It is okay to have `JDK_16` pointing to `JAVA_HOME` for external contributions.
206
+
* JDK 1.8 referred to by the `JDK_18` environment variable. Only used by nightly stress-tests. It is okay to have `JDK_16` pointing to `JAVA_HOME` for external contributions.
209
207
210
208
## Contributions and releases
211
209
@@ -218,6 +216,12 @@ The `develop` branch is pushed to `master` during release.
218
216
219
217
* Full release procedure checklist is [here](RELEASE.md).
220
218
* Steps for contributing new integration modules are explained [here](integration/README.md#Contributing).
219
+
* Use [Knit](https://github.com/Kotlin/kotlinx-knit/blob/master/README.md) for updates to documentation:
220
+
* In project root directory run `./gradlew knit`.
221
+
* Commit updated documents and examples together with other changes.
222
+
* Use [Binary Compatibility Validator](https://github.com/Kotlin/binary-compatibility-validator/blob/master/README.md) for updates to public API:
223
+
* In project root directory run `./gradlew apiDump`.
224
+
* Commit updated API index together with other changes.
0 commit comments