Skip to content

Releases: ReactiveX/RxJava

2.0.3

18 Dec 09:26
Compare
Choose a tag to compare

Maven

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 and retryWhen
  • Pull 4924: flatMapCompletable change Completable to CompletableSource

Other

  • Pull 4907: Use t instead of value to allow for IDE naming

1.2.4

15 Dec 11:56
Compare
Choose a tag to compare

Maven

Other

  • Pull 4912: Fix resolveAndroidApiVersion when running under Robolectric
  • Pull 4908: Use t instead of value to allow for IDE naming.
  • Pull 4884: enable TestScheduler with nanosecond periodic scheduling

2.0.2

02 Dec 10:47
Compare
Choose a tag to compare

Maven

API enhancements

  • Pull 4858: add Maybe.flatMapSingleElement returning Maybe
  • 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 to Observable/Flowable not reporting NoSuchElementException.

1.2.3

23 Nov 08:49
Compare
Choose a tag to compare

Maven

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 of TestSubscriber and support a test() 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

  • Pull 4826: Schedule.when() bug fix
  • Pull 4830: Completable.doAfterTerminate to run after onError as well.
  • Pull 4841: replace non-serializable value of OnNextValue with its toString.
  • Pull 4849: fix Completable.concat & merge hanging in async situations.

2.0.1

12 Nov 09:00
Compare
Choose a tag to compare

Maven

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 of NullPointerException for calling with null parameter(s).
  • Pull 4798: Fix Observable.toFlowable documentation
  • Pull 4803: Fix ObservableEmitter mentioning FlowableEmitter.
  • 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

  • Pull 4783: Fix Observable.repeatWhen & retryWhen not disposing the inner.
  • Pull 4819: Fix Observable.repeatWhen not reacting to upstream onError properly.

1.2.2

03 Nov 09:14
Compare
Choose a tag to compare

Maven

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 in onSuccess and onError.

API enhancements

Performance enhancements

  • Pull 4676: Make identity function a singleton.
  • Pull 4764: zip - check local boolean before volatile in boolean and

Bugfixes

  • Pull 4716: fixsubscribe(Action1 [, Action1]) to report isUnsubscribed true after the callbacks were invoked
  • Pull 4740: Error when tracking exception with unknown cause
  • Pull 4791: Add null check to Observable.switchIfEmpty

2.0.0

29 Oct 10:57
Compare
Choose a tag to compare

Maven

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 to MISSING

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() and Flowable.subscribeOn()
  • Pull 4761:
    • Unify MapNotification, Materialize, OnErrorReturn last element backpressure under the same helper class.
    • Reuse parts of FlowableSequenceEqual in FlowableSequenceEqualSingle.
  • 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()and Flowable.flatMapMaybe() termination detection
  • 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 avoid onSubscribe() races.
  • Pull 4766:
    • Fix Flowable.skipUntil lifecycle and concurrency properties.
    • Fix Flowable.concatMapEager error management.
  • Pull 4770: allow subscribeOn to work with blocking create.

2.0.0-RC5

21 Oct 07:20
Compare
Choose a tag to compare

Maven

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 add assertValueAt(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 have flatMapIterable(Function) use the flatten operator.
  • Pull 4729: Merge FlowableEmitter.BackpressureMode into BackpressureStrategy
  • Pull 4710: Remove checked exceptions from transformer interfaces.

Performance enhancements

  • Pull 4723: enable fusion on Observable.observeOn

Bugfixes

  • Pull 4681: Fix Flowable + Single elementAt and elementAtOrError operators on empty sources.
  • Pull 4686: Fix flatMapX over-cancellation in case of an inner error.
  • Pull 4689: Fix doOnEvent NPE on dispose()
  • Pull 4695: CompositeException fix order of exceptions
  • Pull 4696: Fix inner Throwable order for CompletablePeek
  • 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, fix Observable.flatMap maxConcurrency behavior with scalars, use of unbounded queue, fix Observable.timeInterval not saving the Disposable
  • Pull 4723: fix fusion of Observable.just, fix Observable.replay() potential emission before onSubscribe call
  • Pull 4731: Delegate null Collections down to onError in toList
  • Pull 4736: fix onBackpressureBuffer(long, Action, BufferOverflowStrategy) return type, fix concatMapDelayError wrong barrier mode selected.
  • Pull 4738: Fix Flowable.flatMap error, cancellation and resource management.

Removals

  • Pull 4689: Remove Maybe.toCompletable, use Maybe.ignoreElement.
  • Pull 4708: remove bufferSize overloads of Observable.publish as there is no need to buffer anything for an Observable
  • Pull 4723: remove flatMapIterable(Function, int) overload

Other

  • Pull 4682: Update Mockito to 2.1.0
  • Pull 4699: Clean up null usages by using ObjectHelper.requireNonNull.

2.0.0-RC4

07 Oct 07:31
Compare
Choose a tag to compare

(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 to Observable and Flowable
  • Pull 4616: Add Completable.andThen(MaybeSource)
  • Pull 4614: Add Maybe.flatMapSingle
  • Pull 4617: Add Single.flatMapMaybe
  • Pull 4585: Evaluate Schedulers initialization via Callable
  • Pull 4607: TestSubscriber & TestObserver add assertValue(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 with CompositeException when there is only one error
  • Pull 4604: add flattenAs{Observable,Flowable} to Single and Maybe
  • Pull 4658: Observable.compose to use ObservableTransformer.
  • Pull 4667: Add flatMap{Completable, Maybe, Single} operators to Flowable and Observable.
  • Pull 4672: Remove Function from transformer interfaces to allow a single obj.
  • Maybe.ignoreElement to return Completable.

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 fix onTerminate
  • 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 and Single to use their Transformers in compose().
  • Pull 4654: Upcast ConcurrentHashMap to Map to avoid compatibility issue.

Removals

  • Pull 4595: Remove takeFirst(predicate) from Observable & Flowable

Other

  • Pull 4647: Merge AmbArray and AmbIterable into Amb for Single, Maybe and Completable types.

1.2.1

05 Oct 07:56
Compare
Choose a tag to compare

Maven

API enhancements

  • Pull 4555: enhance generics of doOnError and doOnRequest
  • Pull 4580: rename AsyncEmitter to Emitter

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 call RxJavaHooks before delivering the error