Build 1.0.2838.0 12/24/2010 – Rx Christmas Release 2010
- New: support for joins in Rx. This includes two new operators, Join and GroupJoin, which have query expression support too:
- This work will be covered on Channel 9 in much more detail. We’ll update this post with a link to the video when it’s online. Here’s the sketch of this new functionality.
- Depending on the use of “into”, either Join or GroupJoin is being called in the following sample (see language specification for more details on the translation into query operator methods):
from x in xs
join y in ys on f(x) equals g(y) [into z]
In the sample above, xs and ys are observable sequences. Furthermore, f(x) and g(y) are functions that return an observable sequence that denotes a duration. Results are produced when those observable sequences overlap. For example, one could monitor people entering and leaving a room and create a joined sequence that produces pairs of people that are in the same room at the same time.
- Added a Window operator that uses joins underneath.
- Reimplemented BufferWithTime, BufferWithCount, BufferWithTimeOrCount in terms of those new join and windowing operators.
- Generalized Publish family of operators (Publish, Prune, Replay) to a single Publish operator that takes in a Subject. Sharing a subscription to an observable sequence can be seen as “shadowing” the observable sequence using a Subject that can enforce different sharing policies (e.g. maintain history or not).
- Related to this work is the addition of a Multicast operator, which encapsulates a ConnectableObservable.
- ConnectableObservable is now parameterized in two generic type parameters, reflecting the most general ISubject.
- Added an overload to If that doesn’t take an “else” case observable sequence (defaulting to Observable.Empty).
- DispatcherScheduler is now maintained on a per-thread basis using ThreadStatic.
- Refined implementation of Switch.
- Variance annotations on IAsyncEnumerable and IAsyncEnumerator for .NET 4.
- Fix for scheduling in the Concat, Catch, and OnError operators.
- If operator can now be used without supplying an “else” case.
- Fix to EnumerableEx.Scan.
Download the different release flavors here:
- Download Rx 1.0.2838.0 for .NET 3.5 SP1
- Download Rx 1.0.2838.0 for .NET 4
- Download Rx 1.0.2838.0 for Silverlight 3
- Download Rx 1.0.2838.0 for Silverlight 4
- Download Rx 1.0.2838.0 for all common flavors
- Download Rx 1.0.2838.0 for XNA 4 XBOX 360
- Download Rx 1.0.2838.0 for XNA 3.1 Zune
- Download Rx 1.0.2838.0 for Windows Phone 7