Kotlin/kotlinx.coroutines
### [`v1.7.0`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-170)
[Compare Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.6.4...1.7.0)
##### Core API significant improvements
- New `Channel` implementation with significant performance improvements across the API ([#3621](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3621)).
- New `select` operator implementation: faster, more lightweight, and more robust ([#3020](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3020)).
- `Mutex` and `Semaphore` now share the same underlying data structure ([#3020](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3020)).
- `Dispatchers.IO` is added to K/N ([#3205](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3205))
- `newFixedThreadPool` and `Dispatchers.Default` implementations on K/N were wholly rewritten to support graceful growth under load ([#3595](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3595)).
- `kotlinx-coroutines-test` rework:
- Add the `timeout` parameter to `runTest` for the whole-test timeout, 10 seconds by default ([#3270](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3270)). This replaces the configuration of quiescence timeouts, which is now deprecated ([#3603](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3603)).
- The `withTimeout` exception messages indicate if the timeout used the virtual time ([#3588](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3588)).
- `TestCoroutineScheduler`, `runTest`, and `TestScope` API are promoted to stable ([#3622](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3622)).
- `runTest` now also fails if there were uncaught exceptions in coroutines not inherited from the test coroutine ([#1205](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1205)).
##### Breaking changes
- Old K/N memory model is no longer supported ([#3375](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3375)).
- New generic upper bounds were added to reactive integration API where the language since 1.8.0 dictates ([#3393](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3393)).
- `kotlinx-coroutines-core` and `kotlinx-coroutines-jdk8` artifacts were merged into a single artifact ([#3268](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3268)).
- Artificial stackframes in stacktrace recovery no longer contain the `\b` symbol and are now navigable in IDE and supplied with proper documentation ([#2291](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2291)).
- `CoroutineContext.isActive` returns `true` for contexts without any job in them ([#3300](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3300)).
##### Bug fixes and improvements
- Kotlin version is updated to 1.8.20
- Atomicfu version is updated to 0.20.2.
- `JavaFx` version is updated to 17.0.2 in `kotlinx-coroutines-javafx` ([#3671](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3671))..
- JPMS is supported ([#2237](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2237)). Thanks [@lion7](https://togithub.com/lion7)!
- `BroadcastChannel` and all the corresponding API are deprecated ([#2680](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2680)).
- Added all supported K/N targets ([#3601](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3601), [#812](https://togithub.com/Kotlin/kotlinx.coroutines/issues/812), [#855](https://togithub.com/Kotlin/kotlinx.coroutines/issues/855)).
- K/N `Dispatchers.Default` is backed by the number of threads equal to the number of available cores ([#3366](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3366)).
- Fixed an issue where some coroutines' internal exceptions were not properly serializable ([#3328](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3328)).
- Introduced `Job.parent` API ([#3201](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3201)).
- Fixed a bug when `TestScheduler` leaked cancelled jobs ([#3398](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3398)).
- `TestScope.timeSource` now provides comparable time marks ([#3617](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3617)). Thanks [@hfhbd](https://togithub.com/hfhbd)!
- Fixed an issue when cancelled `withTimeout` handles were preserved in JS runtime ([#3440](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3440)).
- Ensure `awaitFrame` only awaits a single frame when used from the main looper ([#3432](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3432)). Thanks [@pablobaxter](https://togithub.com/pablobaxter)!
- Obsolete `Class-Path` attribute was removed from `kotlinx-coroutines-debug.jar` manifest ([#3361](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3361)).
- Fixed a bug when `updateThreadContext` operated on the parent context ([#3411](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3411)).
- Added new `Flow.filterIsInstance` extension ([#3240](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3240)).
- `Dispatchers.Default` thread name prefixes are now configurable with system property ([#3231](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3231)).
- Added `Flow.timeout` operator as `@FlowPreview` ([#2624](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2624)). Thanks [@pablobaxter](https://togithub.com/pablobaxter)!
- Improved the performance of the `future` builder in case of exceptions ([#3475](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3475)). Thanks [@He-Pin](https://togithub.com/He-Pin)!
- `Mono.awaitSingleOrNull` now waits for the `onComplete` signal ([#3487](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3487)).
- `Channel.isClosedForSend` and `Channel.isClosedForReceive` are promoted from experimental to delicate ([#3448](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3448)).
- Fixed a data race in native `EventLoop` ([#3547](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3547)).
- `Dispatchers.IO.limitedParallelism(valueLargerThanIOSize)` no longer creates an additional wrapper ([#3442](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3442)). Thanks [@dovchinnikov](https://togithub.com/dovchinnikov)!
- Various `@FlowPreview` and `@ExperimentalCoroutinesApi` are promoted to experimental and stable respectively ([#3542](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3542), [#3097](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3097), [#3548](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3548)).
- Performance improvements in `Dispatchers.Default` and `Dispatchers.IO` ([#3416](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3416), [#3418](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3418)).
- Fixed a bug when internal `suspendCancellableCoroutineReusable` might have hanged ([#3613](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3613)).
- Introduced internal API to process events in the current system dispatcher ([#3439](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3439)).
- Global `CoroutineExceptionHandler` is no longer invoked in case of unprocessed `future` failure ([#3452](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3452)).
- Performance improvements and reduced thread-local pressure for the `withContext` operator ([#3592](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3592)).
- Improved performance of `DebugProbes` ([#3527](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3527)).
- Fixed a bug when the coroutine debugger might have detected the state of a coroutine incorrectly ([#3193](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3193)).
- `CoroutineDispatcher.asExecutor()` runs tasks without dispatching if the dispatcher is unconfined ([#3683](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3683)). Thanks [@odedniv](https://togithub.com/odedniv)!
- `SharedFlow.toMutableList` and `SharedFlow.toSet` lints are introduced ([#3706](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3706)).
- `Channel.invokeOnClose` is promoted to stable API ([#3358](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3358)).
- Improved lock contention in `Dispatchers.Default` and `Dispatchers.IO` during the startup phase ([#3652](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3652)).
- Fixed a bug that led to threads oversubscription in `Dispatchers.Default` ([#3642](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3642)).
- Fixed a bug that allowed `limitedParallelism` to perform dispatches even after the underlying dispatcher was closed ([#3672](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3672)).
- Fixed a bug that prevented stacktrace recovery when the exception's constructor from `cause` was selected ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)).
- Improved sanitizing of stracktrace-recovered traces ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)).
- Introduced an internal flag to disable uncaught exceptions reporting in tests as a temporary migration mechanism ([#3736](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3736)).
- Various documentation improvements and fixes.
##### Changelog relative to version 1.7.0-RC
- Fixed a bug that prevented stacktrace recovery when the exception's constructor from `cause` was selected ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)).
- Improved sanitizing of stracktrace-recovered traces ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)).
- Introduced an internal flag to disable uncaught exceptions reporting in tests as a temporary migration mechanism ([#3736](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3736)).
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
[ ] If you want to rebase/retry this PR, check this box
This PR has been generated by Mend Renovate. View repository job log here.
This PR contains the following updates:
1.6.4
->1.7.0
1.6.4
->1.7.0
Release Notes
Kotlin/kotlinx.coroutines
### [`v1.7.0`](https://togithub.com/Kotlin/kotlinx.coroutines/blob/HEAD/CHANGES.md#Version-170) [Compare Source](https://togithub.com/Kotlin/kotlinx.coroutines/compare/1.6.4...1.7.0) ##### Core API significant improvements - New `Channel` implementation with significant performance improvements across the API ([#3621](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3621)). - New `select` operator implementation: faster, more lightweight, and more robust ([#3020](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3020)). - `Mutex` and `Semaphore` now share the same underlying data structure ([#3020](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3020)). - `Dispatchers.IO` is added to K/N ([#3205](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3205)) - `newFixedThreadPool` and `Dispatchers.Default` implementations on K/N were wholly rewritten to support graceful growth under load ([#3595](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3595)). - `kotlinx-coroutines-test` rework: - Add the `timeout` parameter to `runTest` for the whole-test timeout, 10 seconds by default ([#3270](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3270)). This replaces the configuration of quiescence timeouts, which is now deprecated ([#3603](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3603)). - The `withTimeout` exception messages indicate if the timeout used the virtual time ([#3588](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3588)). - `TestCoroutineScheduler`, `runTest`, and `TestScope` API are promoted to stable ([#3622](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3622)). - `runTest` now also fails if there were uncaught exceptions in coroutines not inherited from the test coroutine ([#1205](https://togithub.com/Kotlin/kotlinx.coroutines/issues/1205)). ##### Breaking changes - Old K/N memory model is no longer supported ([#3375](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3375)). - New generic upper bounds were added to reactive integration API where the language since 1.8.0 dictates ([#3393](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3393)). - `kotlinx-coroutines-core` and `kotlinx-coroutines-jdk8` artifacts were merged into a single artifact ([#3268](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3268)). - Artificial stackframes in stacktrace recovery no longer contain the `\b` symbol and are now navigable in IDE and supplied with proper documentation ([#2291](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2291)). - `CoroutineContext.isActive` returns `true` for contexts without any job in them ([#3300](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3300)). ##### Bug fixes and improvements - Kotlin version is updated to 1.8.20 - Atomicfu version is updated to 0.20.2. - `JavaFx` version is updated to 17.0.2 in `kotlinx-coroutines-javafx` ([#3671](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3671)).. - JPMS is supported ([#2237](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2237)). Thanks [@lion7](https://togithub.com/lion7)! - `BroadcastChannel` and all the corresponding API are deprecated ([#2680](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2680)). - Added all supported K/N targets ([#3601](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3601), [#812](https://togithub.com/Kotlin/kotlinx.coroutines/issues/812), [#855](https://togithub.com/Kotlin/kotlinx.coroutines/issues/855)). - K/N `Dispatchers.Default` is backed by the number of threads equal to the number of available cores ([#3366](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3366)). - Fixed an issue where some coroutines' internal exceptions were not properly serializable ([#3328](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3328)). - Introduced `Job.parent` API ([#3201](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3201)). - Fixed a bug when `TestScheduler` leaked cancelled jobs ([#3398](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3398)). - `TestScope.timeSource` now provides comparable time marks ([#3617](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3617)). Thanks [@hfhbd](https://togithub.com/hfhbd)! - Fixed an issue when cancelled `withTimeout` handles were preserved in JS runtime ([#3440](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3440)). - Ensure `awaitFrame` only awaits a single frame when used from the main looper ([#3432](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3432)). Thanks [@pablobaxter](https://togithub.com/pablobaxter)! - Obsolete `Class-Path` attribute was removed from `kotlinx-coroutines-debug.jar` manifest ([#3361](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3361)). - Fixed a bug when `updateThreadContext` operated on the parent context ([#3411](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3411)). - Added new `Flow.filterIsInstance` extension ([#3240](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3240)). - `Dispatchers.Default` thread name prefixes are now configurable with system property ([#3231](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3231)). - Added `Flow.timeout` operator as `@FlowPreview` ([#2624](https://togithub.com/Kotlin/kotlinx.coroutines/issues/2624)). Thanks [@pablobaxter](https://togithub.com/pablobaxter)! - Improved the performance of the `future` builder in case of exceptions ([#3475](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3475)). Thanks [@He-Pin](https://togithub.com/He-Pin)! - `Mono.awaitSingleOrNull` now waits for the `onComplete` signal ([#3487](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3487)). - `Channel.isClosedForSend` and `Channel.isClosedForReceive` are promoted from experimental to delicate ([#3448](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3448)). - Fixed a data race in native `EventLoop` ([#3547](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3547)). - `Dispatchers.IO.limitedParallelism(valueLargerThanIOSize)` no longer creates an additional wrapper ([#3442](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3442)). Thanks [@dovchinnikov](https://togithub.com/dovchinnikov)! - Various `@FlowPreview` and `@ExperimentalCoroutinesApi` are promoted to experimental and stable respectively ([#3542](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3542), [#3097](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3097), [#3548](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3548)). - Performance improvements in `Dispatchers.Default` and `Dispatchers.IO` ([#3416](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3416), [#3418](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3418)). - Fixed a bug when internal `suspendCancellableCoroutineReusable` might have hanged ([#3613](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3613)). - Introduced internal API to process events in the current system dispatcher ([#3439](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3439)). - Global `CoroutineExceptionHandler` is no longer invoked in case of unprocessed `future` failure ([#3452](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3452)). - Performance improvements and reduced thread-local pressure for the `withContext` operator ([#3592](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3592)). - Improved performance of `DebugProbes` ([#3527](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3527)). - Fixed a bug when the coroutine debugger might have detected the state of a coroutine incorrectly ([#3193](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3193)). - `CoroutineDispatcher.asExecutor()` runs tasks without dispatching if the dispatcher is unconfined ([#3683](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3683)). Thanks [@odedniv](https://togithub.com/odedniv)! - `SharedFlow.toMutableList` and `SharedFlow.toSet` lints are introduced ([#3706](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3706)). - `Channel.invokeOnClose` is promoted to stable API ([#3358](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3358)). - Improved lock contention in `Dispatchers.Default` and `Dispatchers.IO` during the startup phase ([#3652](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3652)). - Fixed a bug that led to threads oversubscription in `Dispatchers.Default` ([#3642](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3642)). - Fixed a bug that allowed `limitedParallelism` to perform dispatches even after the underlying dispatcher was closed ([#3672](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3672)). - Fixed a bug that prevented stacktrace recovery when the exception's constructor from `cause` was selected ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)). - Improved sanitizing of stracktrace-recovered traces ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)). - Introduced an internal flag to disable uncaught exceptions reporting in tests as a temporary migration mechanism ([#3736](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3736)). - Various documentation improvements and fixes. ##### Changelog relative to version 1.7.0-RC - Fixed a bug that prevented stacktrace recovery when the exception's constructor from `cause` was selected ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)). - Improved sanitizing of stracktrace-recovered traces ([#3714](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3714)). - Introduced an internal flag to disable uncaught exceptions reporting in tests as a temporary migration mechanism ([#3736](https://togithub.com/Kotlin/kotlinx.coroutines/issues/3736)).Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about these updates again.
This PR has been generated by Mend Renovate. View repository job log here.