Version 0.16.1 (Maven Central)
- Pull 730 Improve Error Handling and Stacktraces When Unsubscribe Fails
- Pull 720 Added
Observable.timeout
wrappers to scala adapter - Pull 731 Fix non-deterministic unit test
- Pull 742 Build with Gradle 1.10
- Pull 718 Merge overloads
- Pull 733 Buffer with Observable boundary
- Pull 734 Delay with subscription and item delaying observables
- Pull 735 Window with Observable boundary
- Pull 736 MergeMap with Iterable and resultSelector overloads
- Pull 738 Publish and PublishLast overloads
- Pull 739 Debounce with selector
- Pull 740 Timeout with selector overloads
- Pull 745 Fixed
switch
bug - Pull 741 Zip with iterable, removed old aggregator version and updated tests
- Pull 749 Separated Android test code from source
- Pull 732 Ported groupByUntil function to scala-adapter
Version 0.16.0 (Maven Central)
This is a significant release with the following changes:
- Refactor of Subjects and Subscriptions to non-blocking implementations
- Many bug fixes, new operators and behavior changes to match Rx.Net.
- Deprecation of some operators due to renaming or eliminating duplicates
- The
rx.concurrency
package has been renamed torx.schedulers
. Existing classes still remain inrx.concurrency
but are deprecated. Use ofrx.concurrency
should be migrated torx.schedulers
as these deprecated classes will be removed in a future release. - Breaking changes to Scala bindings. See Release Notes for details.
- New modules: rxjava-string, rxjava-async-util and rxjava-computation-expressions for operators deemed not applicable to the core library.
- Pull 516 rxjava-string module with StringObservable
- Pull 533 Operator: ToAsync
- Pull 535 Fix compilation errors due to referencing the Android support library directly
- Pull 545 Fixed Zip issue with infinite streams
- Pull 539 Zipping a finite and an infinite Observable
- Pull 541 Operator: SkipUntil
- Pull 537 Add scala adapters for doOnEach operator
- Pull 560 Add type variances for doOnEach actions
- Pull 562 Scala Adaptor Improvements
- Pull 563 Operator: GroupByUntil
- Pull 561 Revised Approach to Creating Observables in Scala
- Pull 565 Operator: GroupJoin v2
- Pull 567 Operator: Timestamp with Scheduler
- Pull 568 Use lock free strategy for several Subscription implementations
- Pull 571 Operator: Sample with Observable v2
- Pull 572 Multiple Subscriptions to ObserveOn
- Pull 573 Removed Opening and Closing historical artifacts
- Pull 575 Operator: SequenceEqual reimplementation
- Pull 587 Operator: LongCount
- Pull 586 Fix Concat to allow multiple observers
- Pull 598 New Scala Bindings
- Pull 596 Fix for buffer not stopping when unsubscribed
- Pull 576 Operators: Timer and Delay
- Pull 593 Lock-free subscriptions
- Pull 599 Refactor rx.concurrency to rx.schedulers
- Pull 600 BugFix: Replay Subject
- Pull 594 Operator: Start
- Pull 604 StringObservable.join
- Pull 609 Operation: Timer
- Pull 612 Operation: Replay (overloads)
- Pull 628 BugFix: MergeDelayError Synchronization
- Pull 602 BugFix: ObserveOn Subscription leak
- Pull 631 Make NewThreadScheduler create Daemon threads
- Pull 651 Subjects Refactor - Non-Blocking, Common Abstraction, Performance
- Pull 661 Subscriptions Rewrite
- Pull 520 BugFix: blocking/non-blocking
first
- Pull 621 Scala: SerialSubscription & From
- Pull 626 BO.Latest, fixed: BO.next, BO.mostRecent, BO.toIterable
- Pull 633 BugFix: null in toList operator
- Pull 635 Conditional Operators
- Pull 638 Operations: DelaySubscription, TakeLast w/ time, TakeLastBuffer
- Pull 659 Missing fixes from the subject rewrite
- Pull 688 Fix SafeObserver handling of onComplete errors
- Pull 690 Fixed Scala bindings
- Pull 693 Kotlin M6.2
- Pull 689 Removed ObserverBase
- Pull 664 Operation: AsObservable
- Pull 697 Operations: Skip, SkipLast, Take with time
- Pull 698 Operations: Average, Sum
- Pull 699 Operation: Repeat
- Pull 701 Operation: Collect
- Pull 707 Module: rxjava-async-util
- Pull 708 BugFix: combineLatest
- Pull 712 Fix Scheduler Memory Leaks
- Pull 714 Module: rxjava-computation-expressions
- Pull 715 Add missing type hint to clojure example
- Pull 717 Scala: Added ConnectableObservable
- Pull 723 Deprecate multiple arity ‘from’
- Pull 724 Revert use of CurrentThreadScheduler for Observable.from
- Pull 725 Simpler computation/io naming for Schedulers
- Pull 727 ImmediateScheduler optimization for toObservableIterable
Version 0.15.1 (Maven Central)
This release should be additive functionality and bug fixes.
- Pull 510 Operators: And, Then, When
- Pull 514 Operator: Join
- Pull 525 Operators: toMap/toMultiMap
- Pull 510 BugFix: Zip
- Pull 512 Scala Adaptor Details
- Pull 512 Scala fixes
- Pull 508 Empty subscribe
- Pull 522 Unsubscribe from takeLast
- Pull 525 BugFix: Handling of Terminal State for Behavior/Publish Subjects
Version 0.15.0 (Maven Central)
This release contains a refactor of the Scala Bindings by @headinthebox that results in some breaking changes. The previous solution ended up not working well in all cases for idiomatic Scala usage. Java/Scala interop has been changed and is no longer transparent so as to optimize for native Scala usage. Read the rxjava-scala README for more information.
- Pull 503 New Scala Bindings
- Pull 502 Fix ObserveOn and add ParallelMerge Scheduler overload
- Pull 499 ObserveOn Refactor
- Pull 492 Implement the scheduler overloads for Range, From, StartWith
- Pull 496 Add contravariant for min and max
Version 0.14.11 (Maven Central)
This has a very slight breaking change by removing one doOnEach
overload. The version was not bumped from 0.14 to 0.15 as it is so minor and the offending method was just released in the previous version.
Version 0.14.10 (Maven Central)
- Pull 481 Operator: Using
- Pull 480 BugFix: Emit an IllegalArgumentException instead of ArithmeticException if the observable is empty
- Pull 479 Operator: DoOnEach
- Pull 478 Operator: Min, MinBy, Max, MaxBy
- Pull 463 Add Timeout Overloads
Version 0.14.9 (Maven Central)
- Pull 477 BugFix: CompositeSubscription
- Pull 476 BugFix: Don't emit null onComplete when no onNext received in AsyncSubject
- Pull 474 BugFix: Reduce an empty observable
- Pull 474 BugFix: non-deterministic unit test
- Pull 472 BugFix: Issue 431 Unsubscribe with Schedulers.newThread
- Pull 470 Operator: Last
Version 0.14.8 (Maven Central)
Version 0.14.7 (Maven Central)
- Pull 459 Fix multiple unsubscribe behavior
- Pull 458 rxjava-android: OperationObserveFromAndroidComponent
- Pull 453 Fix error handling in map operator
- Pull 450 Operator: TimeInterval
- Pull 452 Scheduler Overload of Just/Return Operator
- Pull 433 Fixes: Next Operator
- Commit d64a8c5 Update rxjava-apache-http to Apache HttpAsyncClient 4.0 GA
Version 0.14.6 (Maven Central)
- Pull 441 Fixed the issue that 'take' does not call 'onError'
- Pull 443 OperationSwitch notify onComplete() too early.
- Pull 434 Timeout operator and SerialSubscription
- Pull 447 Caching the result of 'isInternalImplementation'
Version 0.14.5 (Maven Central)
- Pull 438 Kotlin Language Adaptor
Version 0.14.4 (Maven Central)
- Issue 428 Fix: buffer() using TimeAndSizeBasedChunks incorrectly forces thread into interrupted state
- Pull 435 rx-apache-http recognizes "Transfer-Encoding: chunked" as an HTTP stream
- Pull 437 Fixes: Scheduler and Merge
Version 0.14.3 (Maven Central)
- Pull 407 Operator: RefCount
- Pull 410 Operator: Contains
- Pull 411 Unit Test fix: update counter before triggering latch
- Pull 413 Fixed the issues of takeLast(items, 0) and null values
- Pull 414 Operator: SkipLast
- Pull 415 Operator: Empty with scheduler
- Pull 416 Operator: Throw with scheduler
- Pull 420 Scala Adaptor Improvements
- Pull 422 JRuby function wrapping support
- Pull 424 Operator: IgnoreElements
- Pull 426 PublishSubject ReSubscribe for publish().refCount() Behavior
Version 0.14.2 (Maven Central)
- Pull 403 Operators: Cast and OfType
- Pull 401 Operator: DefaultIfEmpty
- Pull 409 Operator: Synchronize with object
Version 0.14.1 (Maven Central)
- Pull 402 rxjava-apache-http improvements
Version 0.14.0 (Maven Central)
Further progress to the Scala adaptor and a handful of new operators.
Bump to 0.14.0 due to small breaking change to distinct
operator removing overloaded methods with Comparator
. These methods were added in 0.13.2 and determined to be incorrect.
This release also includes a new contrib module, rxjava-apache-http that provides an Observable API to the Apache HttpAsyncClient.
- Pull 396 Add missing methods to Scala Adaptor
- Pull 390 Operators: ElementAt and ElementAtOrDefault
- Pull 398 Operators: IsEmpty and Exists (instead of Any)
- Pull 397 Observable API for Apache HttpAsyncClient 4.0
- Pull 400 Removing
comparator
overloads ofdistinct
- Upload to Sonatype failed so version skipped
Version 0.13.4 (Maven Central)
- Pull 393 Parallel Operator & ObserveOn/ScheduledObserver Fixes
- Pull 394 Change Interval and Sample default Scheduler
- Pull 391 Fix OSGI support for rxjava-scala
- Upload to Sonatype failed so version skipped
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 mo