|
1 | 1 | # Change log for kotlinx.coroutines
|
2 | 2 |
|
| 3 | +## Version 1.5.0-RC |
| 4 | + |
| 5 | +### Channels API |
| 6 | + |
| 7 | +* Major channels API rework (#330, #974). Existing `offer`, `poll`, and `sendBlocking` methods are deprecated, internal `receiveCatching` and `onReceiveCatching` removed, `receiveOrNull` and `onReceiveOrNull` are completely deprecated. Previously deprecated `SendChannel.isFull` declaration is removed. Channel operators deprecated with `ERROR` are now `HIDDEN`. |
| 8 | +* New methods `receiveCatching`, `onReceiveCatching` `trySend`, `tryReceive`, and `trySendBlocking` along with the new result type `ChannelResult` are introduced. They provide better type safety, are less error-prone, and have a consistent future-proof naming scheme. The full rationale behind this change can be found [here](https://github.com/Kotlin/kotlinx.coroutines/issues/974#issuecomment-806569582). |
| 9 | +* `BroadcastChannel` and `ConflatedBroadcastChannel` are marked as `ObsoleteCoroutinesApi` in the favor or `SharedFlow` and `StateFlow`. The migration scheme can be found in their documentation. These classes will be deprecated in the next major release. |
| 10 | +* `callbackFlow` and `channelFlow` are promoted to stable API. |
| 11 | + |
| 12 | +### Reactive integrations |
| 13 | + |
| 14 | +* All existing API in modules `kotlinx-coroutines-rx2`, `kotlinx-coroutines-rx3`, `kotlinx-coroutines-reactive`, `kotlinx-coroutines-reactor`, and `kotlinx-coroutines-jdk9` were revisited and promoted to stable (#2545). |
| 15 | +* `publish` is no longer allowed to emit `null` values (#2646). |
| 16 | +* Misleading `awaitSingleOr*` functions on `Publisher` type are deprecated (#2591). |
| 17 | +* `MaybeSource.await` is deprecated in the favor of `awaitSingle`, additional lint functions for `Mono` are added in order to prevent ambiguous `Publisher` usages (#2628, #1587). |
| 18 | +* `ContextView` support in `kotlinx-coroutines-reactor` (#2575). |
| 19 | +* All reactive builders no longer ignore inner cancellation exceptions preventing their completion (#2262, #2646). |
| 20 | +* `MaybeSource.collect` and `Maybe.collect` properly finish when they are completed without a value (#2617). |
| 21 | +* All exceptions are now consistently handled according to reactive specification, whether they are considered 'fatal' or not by reactive frameworks (#2646). |
| 22 | + |
| 23 | +### Other improvements |
| 24 | + |
| 25 | +* `Flow.last` and `Flow.lastOrNull` operators (#2246). |
| 26 | +* `Flow.runningFold` operator (#2641). |
| 27 | +* `CoroutinesTimeout` rule for JUnit5 (#2197). |
| 28 | +* Internals of `Job` and `AbstractCoroutine` was reworked, resulting in smaller code size, less memory footprint, and better performance (#2513, #2512). |
| 29 | +* `CancellationException` from Kotlin standard library is used for cancellation on Koltin/JS and Kotlin/Native (#2638). |
| 30 | +* Introduced new `DelicateCoroutineApi` annotation that warns users about potential target API pitfalls and suggests studying API's documentation first. The only delicate API right now is `GlobalScope` (#2637). |
| 31 | +* Fixed bug introduced in `1.4.3` when `kotlinx-coroutines-core.jar` triggered IDEA debugger failure (#2619). |
| 32 | +* Fixed memory leak of `ChildHandlerNode` with reusable continuations (#2564). |
| 33 | +* Various documentation improvements (#2555, #2589, #2592, #2583, #2437, #2616, #2633, #2560). |
| 34 | + |
3 | 35 | ## Version 1.4.3
|
4 | 36 |
|
5 | 37 | ### General changes
|
|
0 commit comments