Rx.cppとしても知られるReactive Extensions for C++が、WinRTでも(C++/CXを使って)、OS Xでも(clangを使って)利用できるようになった。まだ初期段階だが、最後のプレビュー以来、多くの仕事がなされている。
スケジューリングはReactive Extensionsの基盤だ。WindowsのHWNDメッセージループに特化したものも含めて、このリリースでは5つのスケジューラが利用できる。
- Immediate
- CurrentThread
- EventLoop
- NewThread
- Window
OrderBy、ForEach、Using、Scan、Throttle、TakeUntil、Skip、SkipUntil、ToVector、ToList、Zip、Concat、CombineLatest、Merge、ToAsyn、Using、ConnectableObservable、Multicast、Publish、PublishLast、RefCount、ConnectForever、SubscribeOn、ObserveOnといった「STLアルゴリズムの非同期等価」なオペレータは、Rx開発者にとっておなじみだろう。
BindCommand、DeferOperation、CoreDispatcherScheduler、FromEventPattern、FromAsyncPattern、ReactiveCommandはWinRTのC++/CXに特有なものだ。最後のReactiveCommandはPaul Betts氏のReactiveUIに由来する。
以下に、RangeからObservableを生成する例を示す。
//Declare an observable
auto values1 = rxcpp::Range(1, 10);
rxcpp::from(values1)
.for_each(
[](int p) {
cout << p << endl;
});
Rx.cppのソースコードはCodePlexからApache License 2.0ライセンスで利用できる。