RxJava v3.0.0-RC2 Release Notes

Release Date: 2019-08-20 // over 4 years ago
  • ๐Ÿ”– Version 3.0.0-RC2 - August 20, 2019 (Maven)

    Javadocs

    ๐Ÿš€ This is an early release for 3.0.0 to allow preparations for the breaking API changes and cleanups.

    Please check out the wiki page What's different in 3.0 from time to time for the details and migration guide.

    Major change

    ๐Ÿ“ฆ After considering several factors, the components of RxJava 3 have been moved to a new base package to avoid class file conflicts due to having v2 and v3 in the same project. The new base package is io.reactivex.rxjava3 and the base types will live in io.reactivex.rxjava3.core:

    Name v2 v3
    ๐Ÿ“ฆ Base package io.reactivex
    Flowable io.reactivex.Flowable io.reactivex.rxjava3.core.Flowable
    PublishSubject io.reactivex.subjects.PublishSubject io.reactivex.rxjava3.subjects.PublishSubject
    ConnectableObservable io.reactivex.observables.ConnectableObservable io.reactivex.rxjava3.observables.ConnectableObservable
    Function io.reactivex.functions.Function io.reactivex.rxjava3.functions.Function
    etc.

    Flowables of the two versions can talk to each other without bridges because both implement the Reactive Streams' interfaces such as Publisher:

    io.reactivex.Flowable.range(1, 10) .flatMap(v -\> io.reactivex.rxjava3.core.Flowable.just(v \* 10)) .subscribeWith(new io.reactivex.rxjava3.subscribers.TestSubscriber\<\>()) .assertResult(10, 20, 30, 40, 50, 60, 70, 80, 90, 100);
    

    The other reactive types do not share such base interfaces (they have their own respective copies) and will require bridges, likely provided via 3rd party libraries as with v1->v2 or v1->v3 bridges.

    Dependency changes

    • โฌ†๏ธ Upgrade to Reactive Streams 1.0.3-RC1 (#6621)

    API changes

    • Widen throws on the XOnSubscribe interfaces (#6579)

    Behavior changes

    • Constrain upstream requests of elementAt and first operators (#6620)

    ๐Ÿ›  Bugfixes

    • ๐Ÿ›  Fix switchMaps inconsistency swallowing errors when cancelled (#6572)
    • ๐Ÿ›  Fix ObservableBlockingSubscribe compares TERMINATED with wrong object (#6577)
    • ๐Ÿ›  Fix truncation bugs in replay() and ReplaySubject/Processor (#6582)
    • ๐Ÿ›  Fix mergeWith not cancelling the other source if the main errors (#6598)
    • ๐Ÿ›  Fix refCount not resetting when termination triggers cross-cancel (#6609)
    • ๐Ÿ›  Fix many operators swallowing undeliverable exceptions (#6612)
    • ๐Ÿ›  Fix switchMap incorrect sync-fusion & error management (#6616)

    ๐Ÿ“š Documentation enhancements

    ๐Ÿš€ No changes in this release.

    Other