The MS Open Tech Hub releases Rx 2.2

From the Rx team:
Claudio Caldato, Principal Program Manager Lead, MS Open Tech
Snesha Foss, Senior Program Manager, MS Open Tech
Kirk Shoop, Senior Software Development Engineer, MS Open Tech
Matthew Podwysocki, Software Engineer, Microsoft
Donna Malayeri , Program Manager, Azure Mobile Services, Microsoft

Today Microsoft Open Technologies, Inc. (MS Open Tech), is happy to share the news of recent improvements we have made to Reactive Extensions.

Rx 2.2 is now available via the Rx CodePlex project and includes more support for Windows Phone 8, various bug fixes and contributions from the community.

Reactive Extensions (Rx) is a programming model that allows developers to use a common interface for writing applications that interact with diverse data sources, like stock quotes, Tweets, UI events, and Web service requests. Since Rx was open-sourced by MS Open Tech in November, 2012, Rx has become an important under-the-hood component of several high-availability multi-platform applications, including NetFlix and GitHub. For a more detailed overview, have a look at the Beginner’s Guide to Reactive Extensions. . Back in October, Bart De Smet provided an overview of what to expect on the latest release on Channel9, it’s a good start to get an overview of the updates.

A lot of work has also gone into Rx.cpp since the last release, listed below. We’ve also added initial support for WinRT in C++/CX. A WinRT sample converted to use Rx.cpp is available on GitGub. It’s also worth noting that Rx.cpp compiles with clang on Mac OS X as well as MSVC on Microsoft Windows.



Schedulers control when a subscription starts and when notifications are published. The following schedulers have been implemented for this release: Immediate, CurrentThread, EventLoop, NewThread, Window (schedule to HWND message-loop).


Sources are generally adapters provide a Subscribe method for a data source so that Operators can be applied to the data. The following sources have been implemented for this release: Iterate, Interval, Return, Empty, Throw, Random (using engine and transform from the std namespace)


Operators are used to work with subscriptions and subjects. Operators are the async equivalent of STL algorithms, instead of iterators they take observables. The following operators have been implemented for this release: OrderBy, ForEach, Using, Scan, Throttle, TakeUntil, Skip, SkipUntil, ToVector, ToList, Zip, Concat, CombineLatest, Merge, ToAsync, Using, ConnectableObservable, Multicast, Publish, PublishLast, RefCount, ConnectForever, SubscribeOn, ObserveOn.


The following Subjects have been implemented for this release: ConnectableSubject, GroupedSubject, BehaviorSubject, and AsyncSubject,

Helper Classes

New helper classes for this release are Producer and Sink.

WinRT C++/CX

Support for WinRT has been implemented in this release, and a great example has been provided on GitHub. Supported Classes and Methods are, BindCommand, DeferOperation, CoreDispatcherScheduler, FromEventPattern, FromAsyncPattern and ReactiveCommand.  Special mention goes to Paul Betts, who gave us permission to build a C++ version of the .NET ReactiveCommand class he created in the ReactiveUI library. Thanks for the inspiration!

The MS Open Tech Hub engineering program has been a great venue for projects like this one, as it provides our team with the resources and agility we need to get these updates out to the community.

Stay tuned for more updates soon, and please try out our work and pitch in on CodePlex!