Version 0.13.2 (Maven Central)
- Pull 389 Scala Adaptor Improvements
- Pull 382 Removing deprecated RxImplicits from rxjava-scala
- Pull 381 Operator: mapWithIndex
- Pull 380 Implemented
distinct
anddistinctUntilChanged
variants using a comparator - Pull 379 Make
interval
work with multiple subscribers
Version 0.13.1 (Maven Central)
This release includes a new Scala adaptor as part of the effort from issue ReactiveX#336 pursuing idiomatic Scala support.
- Pull 376 Idiomatic Scala Adaptor
- Pull 375 Operator: Distinct
- Pull 374 Operator: DistinctUntilChanged
- Pull 373 Fixes and Cleanup
Version 0.13.0 (Maven Central)
This release has some minor changes related to varargs that could break backwards compatibility if directly passing arrays but for most this release should not be breaking.
- Pull 354 Operators: Count, Sum, Average
- Pull 355 Operators: skipWhile and skipWhileWithIndex
- Pull 356 Operator: Interval
- Pull 357 Operators: first and firstOrDefault
- Pull 368 Operators: Throttle and Debounce
- Pull 371 Operator: Retry
- Pull 370 Change zip method signature from Collection to Iterable
- Pull 369 Generics Improvements: co/contra-variance
- Pull 361 Remove use of varargs from API
Version 0.12.2 (Maven Central)
- Pull 352 Groovy Language Adaptor: Add Func5-9 and N to the wrapper
Version 0.12.1 (Maven Central)
Version 0.12.0 (Maven Central)
This version adds to the static typing changes in 0.11 and adds covariant/contravariant typing via super/extends generics.
Additional cleanup was done, particularly related to BlockingObservable
. Also the window
operator was added.
The largest breaking change is that Observable.create
now accepts an OnSubscribeFunc
rather than a Func1
.
This means that instead of this:
public static <T> Observable<T> create(Func1<? super Observer<? super T>, ? extends Subscription> func)
it is now:
public static <T> Observable<T> create(OnSubscribeFunc<T> func)
This was done to simplify the usage of Observable.create
which was already verbose but made far worse by the ? super
generics.
For example, instead of writing this:
Observable.create(new Func1<Observer<? super SomeType>, Subscription>() {
/// body here
}
it is now written as:
Observable.create(new OnSubscribeFunc<SomeType>() {
/// body here
}
- Pull 343 Covariant Support with super/extends and
OnSubscribeFunc
as type forObservable.create
- Pull 337 Operator:
window
- Pull 348 Rename
switchDo
toswitchOnNext
(deprecateswitchDo
for eventual deletion) - Pull 348 Delete
switchDo
instance method in preference for static - Pull 346 Remove duplicate static methods from
BlockingObservable
- Pull 346
BlockingObservable
no longer extends fromObservable
- Pull 345 Remove unnecessary constructor from
Observable
Version 0.11.2 (Maven Central)
- Commit ccf53e8 Update to Scala 2.10.2
Version 0.11.1 (Maven Central)
- Pull 325 Clojure: Preserve metadata on fn and action macros
Version 0.11.0 (Maven Central)
This is a major refactor of rxjava-core and the language adaptors.
Note that there are breaking changes in this release. Details are below.
After this refactor it is expected that the API will settle down and allow us to stabilize towards a 1.0 release.
- Pull 332 Refactor Core to be Statically Typed
RxJava was written from the beginning to target the JVM, not any specific language.
As a side-effect of Java not having lambdas/clojures yet (and other considerations), Netflix used dynamic languages with it predominantly for the year of its existence prior to open sourcing.
To bridge the rxjava-core written in Java with the various languages a FunctionalLanguageAdaptor was registered at runtime for each language of interest.
To enable these language adaptors methods are overloaded with Object
in the API since Object
is the only super-type that works across all languages for their various implementations of lambdas and closures.
This downside of this has been that it breaks static typing for Java, Scala and other statically-typed languages. More can be read on this issue and discussion of the subject here: https://groups.google.com/forum/#!topic/rxjava/bVZoKSsb1-o
This release:
- removes all
Object
overload methods from rxjava-core so it is statically typed - removes dynamic FunctionalLanguageAdaptors
- uses idiomatic approaches for each language adaptor
- Java core is statically typed and has no knowledge of other languages
- Scala uses implicits
- Groovy uses an ExtensionModule
- Clojure adds a new macro (NOTE: this requires code changes)
- JRuby has been temporarily disabled (discussing new implementation at ReactiveX#320)
- language supports continue to be additive
- the rxjava-core will always be required and then whichever language modules are desired such as rxjava-scala, rxjava-clojure, rxjava-groovy are added to the classpath
- deletes deprecated methods
- deletes redundant static methods on
Observable
that cluttered the API and in some cases caused dynamic languages trouble choosing which method to invoke - deletes redundant methods on
Scheduler
that gave dynamic languages a hard time choosing which method to invoke
The benefits of this are:
- Everything is statically typed so compile-time checks for Java, Scala, etc work correctly
- Method dispatch is now done via native Java bytecode using types rather than going via
Object
which then has to do a lookup in a map. Memoization helped with the performance but each method invocation still required looking in a map for the correct adaptor. With this approach the appropriate methods will be compiled into therx.Observable
class to correctly invoke the right adaptor without lookups. - Interaction from each language should work as expected idiomatically for that language.
Further history on the various discussions and different attempts at solutions can be seen at ReactiveX#304, ReactiveX#204 and ReactiveX#208
Version 0.10.1 (Maven Central)
A new contrib module for Android: https://github.com/Netflix/RxJava/tree/master/rxjava-contrib/rxjava-android
- Pull 318 rxjava-android module with Android Schedulers
Version 0.10.0 (Maven Central)
This release includes a breaking change as it changes onError(Exception)
to onError(Throwable)
. This decision was made via discussion at ReactiveX#296.
Any statically-typed Observer
implementations with onError(Exception)
will need to be updated to onError(Throwable)
when moving to this version.
- Pull 312 Fix for OperatorOnErrorResumeNextViaObservable and async Resume
- Pull 314 Map Error Handling
- Pull 315 Change onError(Exception) to onError(Throwable) - Issue #296
Version 0.9.2 (Maven Central)
Version 0.9.1 (Maven Central)
- Pull 303 CombineLatest
- Pull 290 Zip overload with FuncN
- Pull 302 NPE fix when no package on class
- Pull 284 GroupBy fixes (items still oustanding)
- Pull 288 PublishSubject concurrent modification fixes
- Issue 198 Throw if no onError handler specified
- Issue 278 Subscribe argument validation
- Javadoc improvements and many new marble diagrams
Version 0.9.0 (Maven Central)
This release includes breaking changes that move all blocking operators (such as single
, last
, forEach
) to BlockingObservable
.
This means Observable
has only non-blocking operators on it. The blocking operators can now be accessed via .toBlockingObservable()
or BlockingObservable.from(observable)
.
Notes and link to the discussion of this change can be found at ReactiveX#272.
- Pull 272 Move blocking operators into BlockingObservable
- Pull 273 Fix Concat (make non-blocking)
- Issue 13 Operator: Switch
- Pull 274 Remove SLF4J dependency (RxJava is now a single jar with no dependencies)
Version 0.8.4 (Maven Central)
- Pull 269 (Really) Fix concurrency bug in ScheduledObserver
Version 0.8.3 (Maven Central)
- Pull 268 Fix concurrency bug in ScheduledObserver
Version 0.8.2 (Maven Central)
- Issue 74 Operator: Sample
- Issue 93 Operator: Timestamp
- Pull 253 Fix multiple subscription bug on operation filter
- Pull 254 SwingScheduler (new rxjava-swing module)
- Pull 256 BehaviorSubject
- Pull 257 Improved scan, reduce, aggregate
- Pull 262 SwingObservable (new rxjava-swing module)
- Pull 264 Publish, Replay and Cache Operators
Version 0.8.1 (Maven Central)
- Pull 250 AsyncSubject
- Pull 252 ToFuture
- Pull 246 Scheduler.schedulePeriodically
- Pull 247 flatMap aliased to mapMany
Version 0.8.0 (Maven Central)
This is a breaking (non-backwards compatible) release that updates the Scheduler implementation released in 0.7.0.
See ReactiveX#19 for background, discussion and status of Schedulers.
It is believed that the public signatures of Scheduler and related objects is now stabilized but ongoing feedback and review by the community could still result in changes.
- Issue 19 Schedulers improvements, changes and additions
- Issue 202 Fix Concat bugs
- Issue 65 Multicast
- Pull 218 ReplaySubject
Version 0.7.0 (Maven Central)
This release adds the foundations of Rx Schedulers.
There are still open questions, portions not implemented and assuredly bugs and behavior we didn't understand and thus implemented wrong.
Please provide bug reports, pull requests or feedback to help us on the road to version 1.0 and get schedulers implemented correctly.
See ReactiveX#19 (comment) for some known open questions that we could use help answering.
- Issue 19 Schedulers
Version 0.6.3 (Maven Central)
- Pull 224 RxJavaObservableExecutionHook
Version 0.6.2 (Maven Central)
- Issue 101 Operator: Where (alias to filter)
- Pull 197 TakeWhile observables do not properly complete
- Issue 21 Operator: All
- Pull 206 Observable.toList breaks with multiple subscribers
- Issue 29 Operator: CombineLatest
- Issue 211 Remove use of JSR 305 and dependency on com.google.code.findbugs
- Pull 212 Operation take leaks errors
- Pull 220 TakeWhile protect calls to predicate
- Pull 221 Error Handling Improvements - User Provided Observers/Functions
- Pull 201 Synchronize Observer on OperationMerge
- Issue 43 Operator: Finally
Version 0.6.1 (Maven Central)
- Pull 190 Fix generics issue with materialize() that prevented chaining
Version 0.6.0 (Maven Central)
- Issue 154 Add OSGi manifest headers
- Issue 173 Subscription Utilities and Default Implementations
- Pull 184 Convert 'last' from non-blocking to blocking to match Rx.Net (see Issue 57)
NOTE: This is a version bump from 0.5 to 0.6 because Issue 173 and Pull 184 include breaking changes.
These changes are being done in the goal of matching the Rx.Net implementation so breaking changes will be made prior to 1.0 on 0.x releases if necessary.
It was found that the last()
operator was implemented incorrectly (non-blocking instead of blocking) so any use of last()
on version 0.5.x should be changed to use takeLast(1)
. Since the return type needed to change this could not be done via a deprecation.
Also removed were the Observable.createSubscription
/Observable.noOpSubscription
methods which are now on the rx.subscriptions.Subscriptions utility class as Subscriptions.create
/Subscriptions.empty
. These methods could have been deprecated rather than removed but since another breaking change was being done they were just cleanly changed as part of the pre-1.0 process.
Version 0.5.5 (Maven Central)
- Issue 35 Operator: Defer
- Issue 37 Operator: Dematerialize
- Issue 50 Operator: GetEnumerator (GetIterator)
- Issue 64 Operator: MostRecent
- Issue 86 Operator: TakeUntil
Version 0.5.4 (Maven Central)
- Issue 18 Operator: ToIterable
- Issue 58 Operator: LastOrDefault
- Issue 66 Operator: Next
- Issue 77 Operator: Single and SingleOrDefault
- Issue 164 Range.createWithCount bugfix
- Pull 161 Build Status Badges and CI Integration
Version 0.5.3 (Maven Central)
- Issue 45 Operator: ForEach
- Issue 87 Operator: TakeWhile
- Pull 145 IntelliJ IDEA support in Gradle build
Version 0.5.2 (Maven Central)
- Issue 68 Operator: Range
- Issue 76 Operator: SequenceEqual
- Issue 85 Operator: TakeLast
- Issue 139 Plugin System
- Issue 141 Error Handler Plugin
- Pull 134 VideoExample in Clojure
- Pull 135 Idiomatic usage of import in ns macro in rx-examples.
- Pull 136 Add examples for jbundler and sbt
Version 0.5.1 (Maven Central)
- variety of code cleanup commits
- Pull 132 Broke rxjava-examples module into each language-adaptor module
- Issue 118 & Issue 119 Cleaned up Javadocs still referencing internal Netflix paths
- Javadoc and README changes
Version 0.5.0 (Maven Central)
- Initial open source release
- See Netflix Tech Blog for introduction