Reactive Extensions for C++, also known as Rx.cpp, is now available for WinRT via C++/CX and OS X via clang. While still in its early stages, a lot of work has been done since the last preview.
Scheduling is a cornerstone of Reactive Extensions. In this release there are five available schedulers including one specifically for Windows’ HWND message loops.
- Immediate
- CurrentThread
- EventLoop
- NewThread
- Window
The operators, which are the “async equivalent of STL algorithms” will be familiar to Rx developers: OrderBy, ForEach, Using, Scan, Throttle, TakeUntil, Skip, SkipUntil, ToVector, ToList, Zip, Concat, CombineLatest, Merge, ToAsync, Using, ConnectableObservable, Multicast, Publish, PublishLast, RefCount, ConnectForever, SubscribeOn, ObserveOn.
Special for C++/CX on WinRT are BindCommand, DeferOperation, CoreDispatcherScheduler, FromEventPattern, FromAsyncPattern and ReactiveCommand. The last one comes from Paul Betts’ ReactiveUI.
Here is an example of creating an observable from a range:
//Declare an observable
auto values1 = rxcpp::Range(1, 10);
rxcpp::from(values1)
.for_each(
[](int p) {
cout << p << endl;
});
The source code for Rx.cpp is available on CodePlex under the Apache License 2.0 license.