|
1 | 1 | # Change log for kotlinx.coroutines
|
2 | 2 |
|
| 3 | +## Version 1.6.0-RC |
| 4 | + |
| 5 | +### kotlinx-coroutines-test rework |
| 6 | + |
| 7 | +* `kotlinx-coroutines-test` became a multiplatform library usable from K/JVM, K/JS, and K/N. |
| 8 | +* Its API was completely reworked to address long-standing issues with consistency, structured concurrency and correctness (#1203, #1609, #2379, #1749, #1204, #1390, #1222, #1395, #1881, #1910, #1772, #1626, #1742, #2082, #2102, #2405, #2462 |
| 9 | + ). |
| 10 | +* The old API is deprecated for removal, but the new API is based on the similar concepts ([README](kotlinx-coroutines-test/README.md)), and the migration path is designed to be graceful: [migration guide](kotlinx-coroutines-test/MIGRATION.md) |
| 11 | + |
| 12 | +### Dispatchers |
| 13 | + |
| 14 | +* * Introduced `CoroutineDispatcher.limitedParallelism` that allows obtaining a view of the original dispatcher with limited parallelism (#2919). |
| 15 | +* `Dispatchers.IO.limitedParallelism` usages ignore the bound on the parallelism level of `Dispatchers.IO` itself to avoid starvation (#2943). |
| 16 | +* Introduced new `Dispatchers.shutdown` method for containerized environments (#2558). |
| 17 | +* `newSingleThreadContext` and `newFixedThreadPoolContext` are promoted to delicate API (#2919). |
| 18 | + |
| 19 | +### Breaking changes |
| 20 | + |
| 21 | +* When racing with cancellation, the `future` builder no longer reports unhandled exceptions into the global `CoroutineExceptionHandler`. Thanks @vadimsemenov! (#2774, #2791). |
| 22 | +* `Mutex.onLock` is deprecated for removal (#2794). |
| 23 | +* `Dispatchers.Main` is now used as the default source of time for `delay` and `withTimeout` when present(#2972). |
| 24 | + * To opt-out from this behaviour, `kotlinx.coroutines.main.delay` system property can be set to `false`. |
| 25 | +* Java target of coroutines build is now 8 instead of 6 (#1589). |
| 26 | + |
| 27 | +### Bug fixes and improvements |
| 28 | + |
| 29 | +* Kotlin is updated to 1.6.0. |
| 30 | +* Kotlin/Native [new memory model](https://blog.jetbrains.com/kotlin/2021/08/try-the-new-kotlin-native-memory-manager-development-preview/) is now supported in regular builds of coroutines conditionally depending on whether `kotlin.native.binary.memoryModel` is enabled (#2914). |
| 31 | +* Introduced `CopyableThreadContextElement` for mutable context elements shared among multiple coroutines. Thanks @yorickhenning! (#2893). |
| 32 | +* `transformWhile`, `awaitClose`, `ProducerScope`, `merge`, `runningFold`, `runingReduce`, and `scan` are promoted to stable API (#2971). |
| 33 | +* `SharedFlow.subscriptionCount` no longer conflates incoming updates and gives all subscribers a chance to observe a short-lived subscription (#2488, #2863, #2871). |
| 34 | +* `Flow` exception transparency mechanism is improved to be more exception-friendly (#3017, #2860). |
| 35 | +* Cancellation from `flat*` operators that leverage multiple coroutines is no longer propagated upstream (#2964). |
| 36 | +* `SharedFlow.collect` now returns `Nothing` (#2789, #2502). |
| 37 | +* `FlowCollector` is now `fun interface`, and corresponding inline extension is removed (#2790). |
| 38 | +* Deprecation level of all previously deprecated signatures is raised (#3024). |
| 39 | +* The version file is shipped with each JAR as a resource (#2941). |
| 40 | +* Unhandled exceptions on K/N are passed to the standard library function `processUnhandledException` (#2981). |
| 41 | +* A direct executor is used for `Task` callbacks in `kotlinx-coroutines-play-services` (#2990). |
| 42 | +* Metadata of coroutines artifacts leverages Gradle platform to have all versions of dependencies aligned (#2865). |
| 43 | +* Default `CoroutineExceptionHandler` is loaded eagerly and does not invoke `ServiceLoader` on its exception-handling path (#2552). |
| 44 | +* Fixed the R8 rules for `ServiceLoader` optimization (#2880). |
| 45 | +* Fixed BlockHound integration false-positives (#2894, #2866, #2937). |
| 46 | +* The exception recovery mechanism now uses `ClassValue` when available (#2997). |
| 47 | +* JNA is updated to 5.9.0 to support Apple M1 (#3001). |
| 48 | +* Obsolete method on internal `Delay` interface is deprecated (#2979). |
| 49 | +* Support of deprecated `CommonPool` is removed. |
| 50 | + |
3 | 51 | ## Version 1.5.2
|
4 | 52 |
|
5 | 53 | * Kotlin is updated to 1.5.30.
|
|
0 commit comments