You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGES.md
+13-15Lines changed: 13 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,9 +3,6 @@
3
3
### 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)) ###
4
4
5
5
6
-
# 0.17.0 Release Notes
7
-
8
-
9
6
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.
10
7
11
8
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
64
61
65
62
As shown in the code above the changes fall into 2 major sections:
66
63
67
-
#### 1) Lift/Operator/OnSubscribe/Subscriber
64
+
#####1) Lift/Operator/OnSubscribe/Subscriber
68
65
69
66
Changes that allow unsubscribing from synchronous Observables without needing to add concurrency.
70
67
71
-
#### 2) Schedulers
68
+
#####2) Schedulers
72
69
73
70
Simplification of the `Scheduler` interface and make clearer the concept of "outer" and "inner" Schedulers for recursion.
74
71
75
72
76
-
## Lift/Operator/OnSubscribe/Subscriber
73
+
####Lift/Operator/OnSubscribe/Subscriber
77
74
78
75
New types `Subscriber` and `OnSubscribe` along with the new `lift` function have been added. The reasons and benefits are as follows:
79
76
80
-
### 1) Synchronous Unsubscribe
77
+
#####1) Synchronous Unsubscribe
81
78
82
79
RxJava versions up until 0.16.x are unable to unsubscribe from a synchronous Observable such as this:
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:
176
173
@@ -208,7 +205,7 @@ All operator implementations in the `rx.operators` package will over time be mig
208
205
NOTE: Operators that have not yet been migrated do not work with synchronous unsubscribe.
209
206
210
207
211
-
### 3) SimplerOperatorImplementations
208
+
##### 3) SimplerOperatorImplementations
212
209
213
210
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.
214
211
@@ -273,7 +270,7 @@ public Subscriber<? super T> call(final Subscriber<? super T> child) {
273
270
```
274
271
275
272
276
-
### 4) Recursion/Loop Performance with Unsubscribe
273
+
#####4) Recursion/Loop Performance with Unsubscribe
277
274
278
275
The `fromIterable` use case is 20x faster when implemented as a loop instead of recursive scheduler (see https://github.com/Netflix/RxJava/commit/a18b8c1a572b7b9509b7a7fe1a5075ce93657771).
279
276
@@ -283,7 +280,7 @@ Several places we can remove recursive scheduling used originally for unsubscrib
283
280
284
281
285
282
286
-
## Schedulers
283
+
####Schedulers
287
284
288
285
289
286
Schedulers were greatly simplified to a design based around `Action1<Inner>`.
@@ -500,9 +497,9 @@ s.unsubscribe();
500
497
501
498
502
499
503
-
## Migration Path
500
+
####Migration Path
504
501
505
-
#### 1) Lift/OnSubscribe/Subscriber
502
+
#####1) Lift/OnSubscribe/Subscriber
506
503
507
504
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.
Custom `Scheduler` implementations will need to be re-implemented and any direct use of the `Scheduler` interface will also need to be updated.
621
618
@@ -630,7 +627,7 @@ It is recommended to use `Subscriptions.create` for most `Subscription` usage.
630
627
631
628
632
629
633
-
# The Future...
630
+
####The Future...
634
631
635
632
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.
636
633
@@ -641,6 +638,7 @@ As we get closer to 1.0 there will be a release that focused on deleting all dep
641
638
We appreciate your usage, feedback and contributions and hope the library is creating value for you!
642
639
643
640
641
+
#### Pull Requests
644
642
645
643
646
644
*[Pull 767](https://github.com/Netflix/RxJava/pull/767) Zip fix for multiple onCompleted and moved unsubscribe outside the lock.
0 commit comments