Releases: ReactiveX/RxJava
2.0.3
Bugfixes
- Pull 4899:
FlowableScanSeed
- prevent post-terminal events - Pull 4901:
FlowableScan
- prevent multiple terminal emissions - Pull 4903:
doAfterNext
- prevent post-terminal emission - Pull 4904:
Observable.scan
no seed fix post-terminal behaviour - Pull 4911: fix & update
Observable.repeatWhen
andretryWhen
- Pull 4924:
flatMapCompletable
changeCompletable
toCompletableSource
Other
- Pull 4907: Use
t
instead of value to allow for IDE naming
1.2.4
2.0.2
API enhancements
- Pull 4858: add
Maybe.flatMapSingleElement
returningMaybe
- Pull 4881: Add
@CheckReturnValue
annotation to aid static verification tools
Performance enhancements
- Pull 4885: Dedicated
reduce()
op implementations
Bugfixes
- Pull 4873:
TestObserver
shouldn't clear the upstream disposable on terminated - Pull 4877: Apply missing
RxJavaPlugins.onAssembly
on ops - Commit bf0c: Fix
firstOrError
converted back toObservable
/Flowable
not reportingNoSuchElementException
.
1.2.3
Documentation enhancements
- Pull 4846: Specify the system parameters configuring the schedulers in the
Schedulers
javadoc.
API enhancements
- Pull 4777: add
AssertableSubscriber
to provide method chained version ofTestSubscriber
and support atest()
method on the base reactive classes. - Pull 4851: add
Single.fromEmitter
- Pull 4852:
Single.takeUntil
CancellationException
message enhancements
Performance enhancements
- Pull 4846: remove
ObjectPool
, code style cleanups
Bugfixes
2.0.1
API enhancements
- Pull 4827: Porting the
Scheduler.when
operator from 1.x to 2.x - Pull 4831: add
Flowable.doFinally(Action)
for handling post-terminal or cancel cleanup. - Pull 4832: add
doFinally
to the rest of the reactive base classes - Pull 4833: add
Flowable.doAfterNext
operator - Pull 4835: add
Observable.doAfterNext
and{Single|Maybe}.doAfterSuccess
. - Pull 4838: add fluent
TestSubscriber.requestMore
Documentation fixes/enhancements
- Pull 4793: Fix javadoc mentioning
IllegalArgumentException
instead ofNullPointerException
for calling withnull
parameter(s). - Pull 4798: Fix
Observable.toFlowable
documentation - Pull 4803: Fix
ObservableEmitter
mentioningFlowableEmitter
. - Pull 4810: Fix
Completable.retryWhen
terminology about signal emission. - Pull 4815: Fix typo in javadoc of
Maybe.toSingle
- Pull 4839: fix wording of some operators, remove
@throws
implications
Bugfixes
1.2.2
Note that the interface Cancellable
has been moved to rx.functions
affecting CompletableEmitter
and the experimental Observable.fromEmitter(Action1<AsyncEmitter<T>> emitter, AsyncEmitter.BackpressureMode backpressure)
has been removed.
Another important clarification was added to the javadoc about using SingleSubscriber
: due to the internal enhancements of Single
, a SingleSubscriber
is no longer wrapped into a Subscriber
+SafeSubscriber
which setup used to call unsubscribe
on the SingleSubscriber
yielding isUnsubscribed() == true
when the source terminated. Therefore, when one extends the class SingleSubscriber
, the unsubscribe()
should be called manually to yield the given expecation mentioned before:
Subscritpion s = Single.just(1).subscribe(new SingleSubscriber<Integer>() {
@Override public void onSuccess(Integer t) {
System.out.println("Success");
unsubscribe();
}
@Override public void onError(Throwable e) {
e.printStackTrace();
unsubscribe();
}
});
assertTrue(s.isUnsubscribed());
Documentation enhancements
- Pull 4693: improve
timer
javadoc - Pull 4769: Add note to
SingleSubscriber
doc about unsubscribe invocation inonSuccess
andonError
.
API enhancements
Performance enhancements
- Pull 4676: Make identity function a singleton.
- Pull 4764:
zip
- check local boolean before volatile in boolean and
Bugfixes
2.0.0
This is it, general availability of RxJava 2! Rewritten from scratch to offer better performance, lower overhead, more features, a modern underlying technology and interoperation with the Reactive-Streams ecosystem. Big thanks goes to the several dozen people who gave feedback, fixes, enhancements and reviewed pull requests in the past, very intensive, 4 months.
Users are encouraged to read the wiki articles What's different in 2.0 and Writing operators for 2.0 to get a overview about changes and differences between working with RxJava 1 and 2. If you find something missing or under-explained, don't worry and open an issue about it!
Some other common libraries such as RxAndroid and Retrofit 2 Adapter were already following the 2.x development and you can expect them to release versions supporting the 2.0.0 GA shortly. In addition, there is an ongoing effort to port companion libraries of RxJava itself to support the 2.x line. For now, several ported features are available as part of the RxJava2Extensions project. RxJava 1 and 2 can live side by side in the same project and the RxJava2Interop library allows dataflow conversions between the two versions.
The sections below contain the changes since 2.0.0-RC5 beyond the general quality and test coverage improvements of the codebase.
API enhancements
- Pull 4760: Add
Single.fromObservable(ObservableSource)
- Pull 4767: Rename
BackpressureStrategy.NONE
toMISSING
Documentation enhancements
- Pull 4744: Fixed Javadoc for
Disposables.fromFuture
- Pull 4749: New 2.x marble diagrams
- Pull 4752: Add more new marble diagrams & update old ones
Performance enhancements
- Pull 4742:
- cleanup
Flowable.publish()
and enable operator fusion on its input - compact
Flowable.blockingSubscribe()
,Observable.blockingSubscribe()
andFlowable.subscribeOn()
- cleanup
- Pull 4761:
- Unify
MapNotification
,Materialize
,OnErrorReturn
last element backpressure under the same helper class. - Reuse parts of
FlowableSequenceEqual
inFlowableSequenceEqualSingle
.
- Unify
- Pull 4766:
Flowable.scan(T, BiFunction)
now emits the initial value only when the upstream signals an event.
Bugfixes
- Pull 4742:
- Fix
Flowable.materialize()
terminal signal emission in face of backpressure. - Fix
Flowable.onErrorReturn()
terminal signal emission in face of backpressure. - fix
Flowable.flatMapSingle()
andFlowable.flatMapMaybe()
termination detection
- Fix
- Pull 4747:
distinctUntilChanged
to store the selected key instead of the value - Pull 4751: fix
Flowable.concatMapEager
hang due to bad request management. - Pull 4761: Fix cancellation bugs in
Flowable
operators. - Pull 4763: rewrite of
takeUntil
to avoidonSubscribe()
races. - Pull 4766:
- Fix
Flowable.skipUntil
lifecycle and concurrency properties. - Fix
Flowable.concatMapEager
error management.
- Fix
- Pull 4770: allow
subscribeOn
to work with blocking create.
2.0.0-RC5
This release contains API fixes, further cleanups to code and javadoc, better test coverage and bugfixes. Thanks to the respective contributors and @JakeWharton for the reviews.
API enhancements
- Pull 4685: Test static from methods and add
Maybe.fromSingle
&fromCompletable
- Pull 4687: Add
Observable.rangeLong
&Flowable.rangeLong
. - Pull 4690:
BaseTestConsumer
addassertValueAt(index, Predicate<T>)
. - Pull 4711: Decouple stream operators from Function interface (
FlowableOperator
and co). - Pull 4712: make
Observable.sequenceEqual
return Single - Pull 4714: have
Flowable.toList(Callable)
return Single - Pull 4720: remove variance from the input source of
retryWhen
- Pull 4723: remove
flatMapIterable(Function, int)
overload and haveflatMapIterable(Function)
use the flatten operator. - Pull 4729: Merge
FlowableEmitter.BackpressureMode
intoBackpressureStrategy
- Pull 4710: Remove checked exceptions from transformer interfaces.
Performance enhancements
- Pull 4723: enable fusion on
Observable.observeOn
Bugfixes
- Pull 4681: Fix
Flowable
+Single
elementAt
andelementAtOrError
operators on empty sources. - Pull 4686: Fix
flatMapX
over-cancellation in case of an inner error. - Pull 4689: Fix
doOnEvent
NPE ondispose()
- Pull 4695:
CompositeException
fix order of exceptions - Pull 4696: Fix inner
Throwable
order forCompletablePeek
- Pull 4705: fix
Observable.flatMap
's dispose behavior and error accumulation - Pull 4707: Fix
Flowable.elementAt
on empty sources. - Pull 4708: fix
Observable.publish(Function)
latecommer behavior - Pull 4712: fix
Observable.combineLatest
error management, fixObservable.flatMap
maxConcurrency
behavior with scalars, use of unbounded queue, fixObservable.timeInterval
not saving theDisposable
- Pull 4723: fix fusion of
Observable.just
, fixObservable.replay()
potential emission beforeonSubscribe
call - Pull 4731: Delegate null
Collection
s down toonError
intoList
- Pull 4736: fix
onBackpressureBuffer(long, Action, BufferOverflowStrategy)
return type, fixconcatMapDelayError
wrong barrier mode selected. - Pull 4738: Fix
Flowable.flatMap
error, cancellation and resource management.
Removals
- Pull 4689: Remove
Maybe.toCompletable
, useMaybe.ignoreElement
. - Pull 4708: remove
bufferSize
overloads ofObservable.publish
as there is no need to buffer anything for anObservable
- Pull 4723: remove
flatMapIterable(Function, int)
overload
Other
2.0.0-RC4
(Maven)
This release contains new operators, further cleanups, better test coverage and bugfixes. Thanks to the respective contributors and @JakeWharton for the reviews.
API enhancements
- Pull 4589: Add
singleOrError
,firstOrError
,lastOrError
&elementAtOrError
toObservable
andFlowable
- Pull 4616: Add
Completable.andThen(MaybeSource)
- Pull 4614: Add
Maybe.flatMapSingle
- Pull 4617: Add
Single.flatMapMaybe
- Pull 4585: Evaluate
Schedulers
initialization viaCallable
- Pull 4607:
TestSubscriber
&TestObserver
addassertValue(Predicate)
. - Pull 4627: Use predicates in
BaseTestConsumer.assertError(Class/Throwable)
to remove duplicate code, tests tweaks to remove few IDE warnings - Pull 4629: Add
Completable.fromRunnable()
- Pull 4631:
TestConsumer
don't wrap withCompositeException
when there is only one error - Pull 4604: add
flattenAs{Observable,Flowable}
toSingle
andMaybe
- Pull 4658:
Observable.compose
to useObservableTransformer
. - Pull 4667: Add
flatMap{Completable, Maybe, Single}
operators toFlowable
andObservable
. - Pull 4672: Remove
Function
from transformer interfaces to allow a single obj. Maybe.ignoreElement
to returnCompletable
.
Performance enhancements
- Pull 4612: Improve performance of
Observable.flatMapIterable
- Pull 4622: Enable operator fusion in
onBackpressureBuffer
Bugfixes
- Pull 4590: Report errors from
onError
to Plugin when done. - Pull 4592:
UnicastSubject
fixonTerminate
- Pull 4593: Enhance NPE messages
- Pull 4603: RxJavaPlugins - Don't pass null throwable down to Error Handler
- Pull 4619: Make
CompositeExcepetion
thread-safe like 1.x and also fix some issues. - Pull 4645: Signal NPE
ObservableAmb
FlowableAmb
- Pull 4651: Switch
Maybe
andSingle
to use theirTransformer
s incompose()
. - Pull 4654: Upcast
ConcurrentHashMap
toMap
to avoid compatibility issue.
Removals
- Pull 4595: Remove
takeFirst(predicate)
fromObservable
&Flowable
Other
- Pull 4647: Merge
AmbArray
andAmbIterable
intoAmb
forSingle
,Maybe
andCompletable
types.
1.2.1
API enhancements
Performance enhancements
- Pull 4621:
NotificationLite
- reduce allocations - Pull 4648: rework
Single
internals to reduce overhead and stack depth
Deprecations
- Pull 4580:
CompletableEmitter.setCancellation
will change its type in 1.2.2. - Pull 4648: Deprecate
Single(Observable.OnSubscribe)
constructor
Bugfixes
- Pull 4641:
SafeSubscriber
not to callRxJavaHooks
before delivering the error