|
1 | 1 | # Change log for kotlinx.coroutines
|
2 | 2 |
|
| 3 | +## Version 0.17 |
| 4 | + |
| 5 | +* `CompletableDeferred` is introduced as a set-once event-like communication primitive (see #70). |
| 6 | + * [Coroutines guide](coroutines-guide.md) uses it in a section on actors. |
| 7 | + * `CompletableDeferred` is an interface with private impl (courtesy of @fvasco, see #86). |
| 8 | + * It extends `Deferred` interface with `complete` and `completeExceptionally` functions. |
| 9 | +* `Job.join` and `Job.await` wait until a cancelled coroutine stops execution (see #64). |
| 10 | + * `Job` and `Deferred` have a new _cancelling_ state which they enter on invocation of `cancel`. |
| 11 | + * `Job.invokeOnCompletion` has an additional overload with `onCancelling: Boolean` parameter to |
| 12 | + install handlers that are fired as soon as coroutine enters _cancelling_ state as opposed |
| 13 | + to waiting until it _completes_. |
| 14 | + * Internal `select` implementation is refactored to decouple it from `JobSupport` internal class |
| 15 | + and to optimize its state-machine. |
| 16 | + * Internal `AbstractCoroutine` class is refactored so that it is extended only by true coroutines, |
| 17 | + all of which support the new _cancelling_ state. |
| 18 | +* `CoroutineScope.context` is renamed to `coroutineContext` to avoid conflicts with other usages of `context` |
| 19 | + in applications (like Android context, see #75). |
| 20 | +* `BroadcastChannel.open` is renamed to `openSubscription` (see #54). |
| 21 | +* Fixed `StackOverflowError` in a convoy of `Mutex.unlock` invokers with `Unconfined` dispatcher (see #80). |
| 22 | +* Fixed `SecurityException` when trying to use coroutines library with installed `SecurityManager`. |
| 23 | +* Fixed a bug in `withTimeoutOrNull` in case with nested timeouts when coroutine was cancelled before it was |
| 24 | + ever suspended. |
| 25 | +* Fixed a minor problem with `awaitFirst` on reactive streams that would have resulted in spurious stack-traces printed |
| 26 | + on the console when used with publishers/observables that continue to invoke `onNext` despite being cancelled/disposed |
| 27 | + (which they are technically allowed to do by specification). |
| 28 | +* All factory functions for various interfaces are implemented as top-level functions |
| 29 | + (affects `Job`, `Channel`, `BroadcastChannel`, `Mutex`, `EventLoop`, and `CoroutineExceptionHandler`). |
| 30 | + Previous approach of using `operator invoke` on their companion objects is deprecated. |
| 31 | +* Nicer-to-use debug `toString` implementations for coroutine dispatcher tasks and continuations. |
| 32 | +* A default dispatcher for `delay` is rewritten and now shares code with `EventLoopImpl` that is used by |
| 33 | + `runBlocking`. It internally supports non-default `TimeSource` so that delay-using tests can be written |
| 34 | + with "virtual time" by replacing their time source for the duration of tests (this feature is not available |
| 35 | + outside of the library). |
| 36 | + |
3 | 37 | ## Version 0.16
|
4 | 38 |
|
5 | 39 | * Coroutines that are scheduled for execution are cancellable by default now
|
|
13 | 47 | * `run` function is also cancellable in the same way and accepts an optional
|
14 | 48 | `CoroutineStart` parameter to change this default.
|
15 | 49 | * `BroadcastChannel` factory function is introduced
|
16 |
| -* `CorouiteExceptionHandler` factory function is introduced by @konrad-kaminski |
| 50 | +* `CoroutineExceptionHandler` factory function is introduced by @konrad-kaminski |
17 | 51 | * [`integration`](integration) directory is introduced for all 3rd party integration projects
|
18 | 52 | * It has [contribution guidelines](integration/README.md#contributing) and contributions from community are welcome
|
19 | 53 | * Support for Guava `ListenableFuture` in the new [`kotlinx-coroutines-guava`](integration/kotlinx-coroutines-guava) module
|
20 | 54 | * Rx1 Scheduler support by @konrad-kaminski
|
21 |
| -* #66 Fixed a number of `Channel` and `BroadcastChannel` implementation bugs related to concurrent |
22 |
| - send/close/close of channels that lead to hanging send, offer or close operations. |
| 55 | +* Fixed a number of `Channel` and `BroadcastChannel` implementation bugs related to concurrent |
| 56 | + send/close/close of channels that lead to hanging send, offer or close operations (see #66). |
23 | 57 | Thanks to @chrisly42 and @cy6erGn0m for finding them.
|
24 |
| -* #67 Fixed `withTimeoutOrNull` which was returning `null` on timeout of inner or outer `withTimeout` blocks. |
| 58 | +* Fixed `withTimeoutOrNull` which was returning `null` on timeout of inner or outer `withTimeout` blocks (see #67). |
25 | 59 | Thanks to @gregschlom for finding the problem.
|
26 | 60 | * Fixed a bug where `Job` fails to dispose a handler when it is the only handler by @uchuhimo
|
27 | 61 |
|
|
0 commit comments