Skip to content

Commit 8166d5d

Browse files
Version 0.17.0 Release Notes
1 parent 7983e57 commit 8166d5d

File tree

1 file changed

+13
-15
lines changed

1 file changed

+13
-15
lines changed

CHANGES.md

Lines changed: 13 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@
33
### Version 0.17.0 ([Maven Central](http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22com.netflix.rxjava%22%20AND%20v%3A%220.17.0%22)) ###
44

55

6-
# 0.17.0 Release Notes
7-
8-
96
Version 0.17.0 contains some significant signature changes that allow us to significantly improve handling of synchronous Observables and simplify Schedulers. Many of the changes have backwards compatible deprecated methods to ease the migration while some are breaking.
107

118
The new signatures related to `Observable` in this release are:
@@ -64,20 +61,20 @@ This release applies many lessons learned over the past year and seeks to stream
6461

6562
As shown in the code above the changes fall into 2 major sections:
6663

67-
#### 1) Lift/Operator/OnSubscribe/Subscriber
64+
##### 1) Lift/Operator/OnSubscribe/Subscriber
6865

6966
Changes that allow unsubscribing from synchronous Observables without needing to add concurrency.
7067

71-
#### 2) Schedulers
68+
##### 2) Schedulers
7269

7370
Simplification of the `Scheduler` interface and make clearer the concept of "outer" and "inner" Schedulers for recursion.
7471

7572

76-
## Lift/Operator/OnSubscribe/Subscriber
73+
#### Lift/Operator/OnSubscribe/Subscriber
7774

7875
New types `Subscriber` and `OnSubscribe` along with the new `lift` function have been added. The reasons and benefits are as follows:
7976

80-
### 1) Synchronous Unsubscribe
77+
##### 1) Synchronous Unsubscribe
8178

8279
RxJava versions up until 0.16.x are unable to unsubscribe from a synchronous Observable such as this:
8380

@@ -170,7 +167,7 @@ oi.subscribe(new Subscriber<Integer>() {
170167
```
171168

172169

173-
### 2) Custom Operator Chaining
170+
##### 2) Custom Operator Chaining
174171

175172
Because Java doesn't support extension methods, the only approach to applying custom operators without getting them added to `rx.Observable` is using static methods. This has meant code like this:
176173

@@ -208,7 +205,7 @@ All operator implementations in the `rx.operators` package will over time be mig
208205
NOTE: Operators that have not yet been migrated do not work with synchronous unsubscribe.
209206

210207

211-
### 3) Simpler Operator Implementations
208+
##### 3) Simpler Operator Implementations
212209

213210
The `lift` operator injects the necessary `Observer` and `Subscription` instances (via the new `Subscriber` type) and eliminates (for most use cases) the need for manual subscription management. Because the `Subscription` is available in-scope there are no awkward coding patterns needed for creating a `Subscription`, closing over it and returning and taking into account synchronous vs asynchronous.
214211

@@ -273,7 +270,7 @@ public Subscriber<? super T> call(final Subscriber<? super T> child) {
273270
```
274271

275272

276-
### 4) Recursion/Loop Performance with Unsubscribe
273+
##### 4) Recursion/Loop Performance with Unsubscribe
277274

278275
The `fromIterable` use case is 20x faster when implemented as a loop instead of recursive scheduler (see https://github.com/Netflix/RxJava/commit/a18b8c1a572b7b9509b7a7fe1a5075ce93657771).
279276

@@ -283,7 +280,7 @@ Several places we can remove recursive scheduling used originally for unsubscrib
283280

284281

285282

286-
## Schedulers
283+
#### Schedulers
287284

288285

289286
Schedulers were greatly simplified to a design based around `Action1<Inner>`.
@@ -500,9 +497,9 @@ s.unsubscribe();
500497

501498

502499

503-
## Migration Path
500+
#### Migration Path
504501

505-
#### 1) Lift/OnSubscribe/Subscriber
502+
##### 1) Lift/OnSubscribe/Subscriber
506503

507504
The `lift` function will not be used by most and is additive so will not affect backwards compatibility. The `Subscriber` type is also additive and for most use cases does not need to be used directly, the `Observer` interface can continue being used.
508505

@@ -615,7 +612,7 @@ Observable.create(new OnSubscribe<Integer>() {
615612

616613

617614

618-
#### 2) Schedulers
615+
##### 2) Schedulers
619616

620617
Custom `Scheduler` implementations will need to be re-implemented and any direct use of the `Scheduler` interface will also need to be updated.
621618

@@ -630,7 +627,7 @@ It is recommended to use `Subscriptions.create` for most `Subscription` usage.
630627

631628

632629

633-
# The Future...
630+
#### The Future...
634631

635632
We have most if not all operators from Rx.Net that we want or intend to port. We think we have got the `create`/`subscribe` signatures as we want and the `Subscription` and `Scheduler` interfaces are now clean. There is at least one more major topic related to back pressure that may result in signature change in a future release. Beyond that no further major signature changing work is expected prior to 1.0.
636633

@@ -641,6 +638,7 @@ As we get closer to 1.0 there will be a release that focused on deleting all dep
641638
We appreciate your usage, feedback and contributions and hope the library is creating value for you!
642639

643640

641+
#### Pull Requests
644642

645643

646644
* [Pull 767](https://github.com/Netflix/RxJava/pull/767) Zip fix for multiple onCompleted and moved unsubscribe outside the lock.

0 commit comments

Comments
 (0)