From d8d6f8f37978b8e202d93b34f23f101df9c5724d Mon Sep 17 00:00:00 2001 From: Dmitry Khalanskiy Date: Fri, 13 Sep 2024 11:14:00 +0200 Subject: [PATCH] Version 1.9.0 --- CHANGES.md | 41 +++++++++++++++++++++++++-- README.md | 12 ++++---- gradle.properties | 2 +- integration-testing/gradle.properties | 2 +- kotlinx-coroutines-debug/README.md | 2 +- kotlinx-coroutines-test/README.md | 2 +- ui/coroutines-guide-ui.md | 2 +- 7 files changed, 50 insertions(+), 13 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 050ec837a6..8b843f9889 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -1,5 +1,42 @@ # Change log for kotlinx.coroutines +## Version 1.9.0 + +### Features + +* Wasm/WASI target support (#4064). Thanks, @igoriakovlev! +* `limitedParallelism` now optionally accepts the name of the dispatcher view for easier debugging (#4023). +* No longer initialize `Dispatchers.IO` on the JVM when other standard dispatchers are accessed (#4166). Thanks, @metalhead8816! +* Introduced the `Flow.chunked(size: Int): Flow>` operator that groups emitted values into groups of the given size (#1290). +* Closeable dispatchers are instances of `AutoCloseable` now (#4123). + +### Fixes + +* Calling `hasNext` on a `Channel`'s iterator is idempotent (#4065). Thanks, @gitpaxultek! +* `CoroutineScope()` created without an explicit dispatcher uses `Dispatchers.Default` on Native (#4074). Thanks, @whyoleg! +* Fixed a bug that prevented non-Android `Dispatchers.Main` from initializing when the Firebase dependency is used (#3914). +* Ensured a more intuitive ordering of tasks in `runBlocking` (#4134). +* Forbid casting a `Mutex` to `Semaphore` (#4176). +* Worked around a stack overflow that may occur when calling `asDeferred` on a `Future` many times (#4156). + +### Deprecations and promotions + +* Advanced the deprecation levels for `BroadcastChannel`-based API (#4197). +* Advanced the deprecation levels for the old `kotlinx-coroutines-test` API (#4198). +* Deprecated `Job.cancelFutureOnCompletion` (#4173). +* Promoted `CoroutineDispatcher.limitedParallelism` to stable (#3864). +* Promoted `CoroutineStart.ATOMIC` from `ExperimentalCoroutinesApi` to `DelicateCoroutinesApi` (#4169). +* Promoted `CancellableContinuation.resume` with an `onCancellation` lambda 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 `InternalForInheritanceCoroutinesApi` opt-in (#3770). +* Marked the classes and interfaces inheriting from which is not stable with the new `ExperimentalForInheritanceCoroutinesApi` opt-in (#3770). + +### Other + +* Kotlin was updated to 2.0 (#4137). +* Reworked the documentation for `CoroutineStart` and `Channel`-based API (#4147, #4148, #4167). Thanks, @globsterg! +* Simplified the internal implementation of `Job` (#4053). +* Small tweaks, fixes, and documentation improvements. + ## Version 1.9.0-RC.2 * Advanced the deprecation levels for `BroadcastChannel`-based API (#4197). @@ -7,9 +44,9 @@ * Promoted `CoroutineStart.ATOMIC` from `ExperimentalCoroutinesApi` to `DelicateCoroutinesApi` (#4169). * Reworked the documentation for `CoroutineStart` and `Channel`-based API (#4147, #4148, #4167). Thanks, @globsterg! * Forbid casting a `Mutex` to `Semaphore` (#4176). -* Deprecated `Job.cancelFutureOnCompletion` (#4211). +* Deprecated `Job.cancelFutureOnCompletion` (#4173). * Worked around a stack overflow that may occur when calling `asDeferred` on a `Future` many times (#4156). -* Fixed a bug that disallowed setting a custom `probeCoroutineResumed` when starting coroutines with `UNDISPATCHED` (#4211). +* Fixed a bug that disallowed setting a custom `probeCoroutineResumed` when starting coroutines with `UNDISPATCHED` (#4162). * No longer initialize `Dispatchers.IO` on the JVM when other standard dispatchers are accessed (#4166). Thanks, @metalhead8816! * Small tweaks, fixes, and documentation improvements. diff --git a/README.md b/README.md index aff7b121a9..89df68e0bc 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Kotlin Stable](https://kotl.in/badges/stable.svg)](https://kotlinlang.org/docs/components-stability.html) [![JetBrains official project](https://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub) [![GitHub license](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](https://www.apache.org/licenses/LICENSE-2.0) -[![Download](https://img.shields.io/maven-central/v/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.9.0-RC.2)](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.9.0-RC.2) +[![Download](https://img.shields.io/maven-central/v/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.9.0)](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core/1.9.0) [![Kotlin](https://img.shields.io/badge/kotlin-2.0.0-blue.svg?logo=kotlin)](http://kotlinlang.org) [![Slack channel](https://img.shields.io/badge/chat-slack-green.svg?logo=slack)](https://kotlinlang.slack.com/messages/coroutines/) @@ -85,7 +85,7 @@ Add dependencies (you can also add other modules that you need): org.jetbrains.kotlinx kotlinx-coroutines-core - 1.9.0-RC.2 + 1.9.0 ``` @@ -103,7 +103,7 @@ Add dependencies (you can also add other modules that you need): ```kotlin dependencies { - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0-RC.2") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") } ``` @@ -133,7 +133,7 @@ Add [`kotlinx-coroutines-android`](ui/kotlinx-coroutines-android) module as a dependency when using `kotlinx.coroutines` on Android: ```kotlin -implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0-RC.2") +implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0") ``` This gives you access to the Android [Dispatchers.Main] @@ -168,7 +168,7 @@ In common code that should get compiled for different platforms, you can add a d ```kotlin commonMain { dependencies { - implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0-RC.2") + implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.9.0") } } ``` @@ -178,7 +178,7 @@ Platform-specific dependencies are recommended to be used only for non-multiplat #### JS Kotlin/JS version of `kotlinx.coroutines` is published as -[`kotlinx-coroutines-core-js`](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core-js/1.9.0-RC.2) +[`kotlinx-coroutines-core-js`](https://central.sonatype.com/artifact/org.jetbrains.kotlinx/kotlinx-coroutines-core-js/1.9.0) (follow the link to get the dependency declaration snippet). #### Native diff --git a/gradle.properties b/gradle.properties index 906aa50eaa..168fb6b6c5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ # Kotlin -version=1.9.0-RC.2-SNAPSHOT +version=1.9.0-SNAPSHOT group=org.jetbrains.kotlinx kotlin_version=2.0.0 kotlin_language_version=2.0 diff --git a/integration-testing/gradle.properties b/integration-testing/gradle.properties index 8de1d31919..60d2fb547e 100644 --- a/integration-testing/gradle.properties +++ b/integration-testing/gradle.properties @@ -1,5 +1,5 @@ kotlin_version=2.0.0 -coroutines_version=1.9.0-RC.2-SNAPSHOT +coroutines_version=1.9.0-SNAPSHOT asm_version=9.3 kotlin.code.style=official diff --git a/kotlinx-coroutines-debug/README.md b/kotlinx-coroutines-debug/README.md index 8ac9c6c208..d3cb5267bc 100644 --- a/kotlinx-coroutines-debug/README.md +++ b/kotlinx-coroutines-debug/README.md @@ -61,7 +61,7 @@ stacktraces will be dumped to the console. ### Using as JVM agent Debug module can also be used as a standalone JVM agent to enable debug probes on the application startup. -You can run your application with an additional argument: `-javaagent:kotlinx-coroutines-debug-1.9.0-RC.2.jar`. +You can run your application with an additional argument: `-javaagent:kotlinx-coroutines-debug-1.9.0.jar`. Additionally, on Linux and Mac OS X you can use `kill -5 $pid` command in order to force your application to print all alive coroutines. When used as Java agent, `"kotlinx.coroutines.debug.enable.creation.stack.trace"` system property can be used to control [DebugProbes.enableCreationStackTraces] along with agent startup. diff --git a/kotlinx-coroutines-test/README.md b/kotlinx-coroutines-test/README.md index 9a23e2230e..e8eaf3d17b 100644 --- a/kotlinx-coroutines-test/README.md +++ b/kotlinx-coroutines-test/README.md @@ -26,7 +26,7 @@ Provided [TestDispatcher] implementations: Add `kotlinx-coroutines-test` to your project test dependencies: ``` dependencies { - testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0-RC.2' + testImplementation 'org.jetbrains.kotlinx:kotlinx-coroutines-test:1.9.0' } ``` diff --git a/ui/coroutines-guide-ui.md b/ui/coroutines-guide-ui.md index c6a4e1d567..e0fc6a15b9 100644 --- a/ui/coroutines-guide-ui.md +++ b/ui/coroutines-guide-ui.md @@ -110,7 +110,7 @@ Add dependencies on `kotlinx-coroutines-android` module to the `dependencies { . `app/build.gradle` file: ```groovy -implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0-RC.2" +implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.9.0" ``` You can clone [kotlinx.coroutines](https://github.com/Kotlin/kotlinx.coroutines) project from GitHub onto your