|
1 | 1 | # Change log for kotlinx.coroutines
|
2 | 2 |
|
| 3 | +## Version 1.7.0-Beta |
| 4 | + |
| 5 | +### Core API significant improvements |
| 6 | + |
| 7 | +* New `Channel` implementation with significant performance improvements across the API (#3621). |
| 8 | +* New `select` operator implementation: faster, more lightweight, and more robust (#3020). |
| 9 | +* `Mutex` and `Semaphore` now share the same underlying data structure (#3020). |
| 10 | +* `Dispatchers.IO` is added to K/N (#3205) |
| 11 | + * `newFixedThreadPool` and `Dispatchers.Default` implementations on K/N were wholly rewritten to support graceful growth under load (#3595). |
| 12 | +* `kotlinx-coroutines-test` rework: |
| 13 | + - Add the `timeout` parameter to `runTest` for the whole-test timeout, 10 seconds by default (#3270). This replaces the configuration of quiescence timeouts, which is now deprecated (#3603). |
| 14 | + - The `withTimeout` exception messages indicate if the timeout used the virtual time (#3588). |
| 15 | + - `TestCoroutineScheduler`, `runTest`, and `TestScope` API are promoted to stable (#3622). |
| 16 | + - `runTest` now also fails if there were uncaught exceptions in coroutines not inherited from the test coroutine (#1205). |
| 17 | + |
| 18 | +### Breaking changes |
| 19 | + |
| 20 | +* Old K/N memory model is no longer supported (#3375). |
| 21 | +* New generic upper bounds were added to reactive integration API where the language since 1.8.0 dictates (#3393). |
| 22 | +* `kotlinx-coroutines-core` and `kotlinx-coroutines-jdk8` artifacts were merged into a single artifact (#3268). |
| 23 | +* Artificial stackframes in stacktrace recovery no longer contain the `\b` symbol and are now navigable in IDE and supplied with proper documentation (#2291). |
| 24 | +* `CoroutineContext.isActive` returns `true` for contexts without any job in them (#3300). |
| 25 | + |
| 26 | +### Bug fixes and improvements |
| 27 | + |
| 28 | +* Kotlin version is updated to 1.8.10. |
| 29 | +* JPMS is supported (#2237). Thanks @lion7! |
| 30 | +* `BroadcastChannel` and all the corresponding API are deprecated (#2680). |
| 31 | +* Added all supported K/N targets (#3601, #812, #855). |
| 32 | +* K/N `Dispatchers.Default` is backed by the number of threads equal to the number of available cores (#3366). |
| 33 | +* Fixed an issue where some coroutines' internal exceptions were not properly serializable (#3328). |
| 34 | +* Introduced `Job.parent` API (#3201). |
| 35 | +* Fixed a bug when `TestScheduler` leaked cancelled jobs (#3398). |
| 36 | +* `TestScope.timeSource` now provides comparable time marks (#3617). Thanks @hfhbd! |
| 37 | +* Fixed an issue when cancelled `withTimeout` handles were preserved in JS runtime (#3440). |
| 38 | +* Ensure `awaitFrame` only awaits a single frame when used from the main looper (#3432). Thanks @pablobaxter! |
| 39 | +* Obsolete `Class-Path` attribute was removed from `kotlinx-coroutines-debug.jar` manifest (#3361). |
| 40 | +* Fixed a bug when `updateThreadContext` operated on the parent context (#3411). |
| 41 | +* Added new `Flow.filterIsInstance` extension (#3240). |
| 42 | +* `Dispatchers.Default` thread name prefixes are now configurable with system property (#3231). |
| 43 | +* Added `Flow.timeout` operator as `@FlowPreview` (#2624). Thanks @pablobaxter! |
| 44 | +* Improved the performance of the `future` builder in case of exceptions (#3475). Thanks @He-Pin! |
| 45 | +* `Mono.awaitSingleOrNull` now waits for the `onComplete` signal (#3487). |
| 46 | +* `Channel.isClosedForSend` and `Channel.isClosedForReceive` are promoted from experimental to delicate (#3448). |
| 47 | +* Fixed a data race in native `EventLoop` (#3547). |
| 48 | +* `Dispatchers.IO.limitedParallelism(valueLargerThanIOSize)` no longer creates an additional wrapper (#3442). Thanks @dovchinnikov! |
| 49 | +* Various `@FlowPreview` and `@ExperimentalCoroutinesApi` are promoted to experimental and stable respectively (#3542, #3097, #3548). |
| 50 | +* Performance improvements in `Dispatchers.Default` and `Dispatchers.IO` (#3416, #3418). |
| 51 | +* Fixed a bug when internal `suspendCancellableCoroutineReusable` might have hanged (#3613). |
| 52 | +* Introduced internal API to process events in the current system dispatcher (#3439). |
| 53 | +* Global `CoroutineExceptionHandler` is no longer invoked in case of unprocessed `future` failure (#3452). |
| 54 | +* Performance improvements and reduced thread-local pressure for the `withContext` operator (#3592). |
| 55 | +* Improved performance of `DebugProbes` (#3527). |
| 56 | +* Fixed a bug when the coroutine debugger might have detected the state of a coroutine incorrectly (#3193). |
| 57 | +* Various documentation improvements and fixes. |
| 58 | + |
3 | 59 | ## Version 1.6.4
|
4 | 60 |
|
5 | 61 | * Added `TestScope.backgroundScope` for launching coroutines that perform work in the background and need to be cancelled at the end of the test (#3287).
|
|
0 commit comments