Release Notes
Build 1.0.2787.0 10/28/2010
Rx.NET
-
- Added XNA 4.0 Xbox 360 support.
- Added Windows Phone 7 support.
- Fixed xna crash in CurrentThreadScheduler.
- Removed conflict of EnumerableEx.Zip and Enumerable.Zip on Silverlight 4.
- Fixed ForkJoin bug on empty source.
- Added drain operator.
- Added Rx extension methods to BCL via System.Reactive.ClientProfile and System.Reactive.ExtendedProfile assemblies.
- Fixed bug to ensure subjects clear observers once OnCompleted fires.
- Added support for the new C# await keyword (Observable.GetAwaiter).
- Added ToTask and ToTaskLast operators
- Added IAsyncEnumerable interface and all standard query operators for this interface.
- Fixed bug in Observable.Concat, Observable.Catch and Observable.Merge to dispose of source enumerable correctly.
- Added NuPack support (packages will be online soon)
rx.js
-
- Changed default schedulers to immediate where possible to match rx.net semantics.
Download Rx 1.0.2787.0 for .NET 3.5 SP1
Download Rx 1.0.2787.0 for .NET 4
Download Rx 1.0.2787.0 for Silverlight 3
Download Rx 1.0.2787.0 for Silverlight 4
Download Rx 1.0.2787.0 for JavaScript
Download Rx 1.0.2787.0 for all common flavors
Download Rx 1.0.2787.0 for XNA 4 XBOX 360
Download Rx 1.0.2787.0 for XNA 3.1 Zune
Download Rx 1.0.2787.0 for Windows Phone 7
Build 1.0.2698.0 9/10/2010, HotFix release
Rx.NET
-
- move testing code to separate assembly (System.Reactive.Testing) to make Rx run on .NET 4 Client profile again
- fix race condition in certain operators for OnError/OnCompleted messages
Download Rx 1.0.2698.0 for .NET 3.5 SP1
Download Rx 1.0.2698.0 for .NET 4
Download Rx 1.0.2698.0 for Silverlight 3
Download Rx 1.0.2698.0 for Silverlight 4
Download Rx 1.0.2698.0 for all common flavors
Download Rx 1.0.2698.0 for XNA 3.1 XBOX
Download Rx 1.0.2698.0 for XNA 3.1 Zune
Build 1.0.2677.0 8/27/2010
Rx.NET
-
- Fixed bugs in ForkJoin and Catch when using Immediate scheduler.
- Added download containing all common Rx flavors (.NET 3.5, .NET 4, SL3, SL4, JS).
- Added XNA 3.1 XBOX and Zune flavors.
- Added additional Publish overloads.
- Removed public helper from DistinctUntil.
- Changed FromAsyncPattern operators to use Immediate Scheduler on async subject.
- Added helper code for testing Rx using TestScheduler (System.Reactive.Testing namespace).
RxJS
-
- Added virtual & test scheduler.
- Made currentThread scheduler use priority queue to optimize performance.
- Added dojo deferred support.
- Added bindings for Microsoft Translator & Google Language.
- Made 2 small perf fixes suggested by Douglas Crockford.
Download Rx 1.0.2677.0 for .NET 3.5 SP1
Download Rx 1.0.2677.0 for .NET 4
Download Rx 1.0.2677.0 for Silverlight 3
Download Rx 1.0.2677.0 for Silverlight 4
Download Rx 1.0.2677.0 for all common flavors
Download Rx 1.0.2677.0 for XNA 3.1 XBOX
Download Rx 1.0.2677.0 for XNA 3.1 Zune
Build 1.0.2617.0 07/15/2010
Rx.NET
-
- Fixed GC issue with ThreadPool Timer.
- Made lock in CompositeDisposable smaller.
- Fixed deadlock in ForkJoin when using Immediate scheduler.
- Changed order of arguments for Generate* operators to match C# for pattern based on feedback from C# Team.
- Changed FromAsyncPattern to catch exceptions thrown in BeginInvoke.
- Made ConnectableObservable.Connect block subsequent calls until first call is complete.
- Added virtual scheduler and test scheduler
- Made MaxBy & MinBy operators return all values that match.
- Renamed EnumerableEx.LongCount to EnumerablEx.LongCountEnumerable to avoid naming conflict with Enumerable.LongCount.
Rx JS
-
- Added Virtual Earth and Google Maps bindings.
- Fixed crash in For operator with use of Immediate scheduler.
- Changed order of arguments for Generate* operators to match JavaScript for pattern based on feedback from C# Team.
Download Rx 1.0.2617.0 for .NET 3.5 SP1
Download Rx 1.0.2617.0 for .NET 4
Download Rx 1.0.2617.0 for Silverlight 3
Download Rx 1.0.2617.0 for Silverlight 4
Build 1.0.2563.0 06/09/2010
Rx.NET
-
- Separated SL3 and SL4 installers
- Added EventLoopScheduler (executes on dedicated thread)
- Ported many operators from System.Reactive to System.Interactive
- Removed Amb & Merge from System.Interactive in favor of ToObservable.Amb using System.Reactive
- Added FromEvent overload for non-generic EventHandler
- Fixed performance in N-ary overload of ForkJoin
Rx JS
-
- Improved MooTools support
Download Rx 1.0.2563.0 for .NET 3.5 SP1
Download Rx 1.0.2563.0 for .NET 4
Download Rx 1.0.2563.0 for Silverlight 3
Download Rx 1.0.2563.0 for Silverlight 4
Build 1.0.2521.0 05/14/2010
Rx .NET
-
- Added Iterate & ListObservable for enumerable iteration pattern
- Added schedulers to subjects to control synchronization
- Added co and contravariance for IConnectableObservable<T>, IGroupedObservable<T> & ISubject<T1,T2>
- Added Rx equivalent of IQueryable: IQbservable including interfaces & operators.
- Fixed Run operators exception behavior
- Enabled sidebyside install of different versions of Rx (the previous version, 1.0.2441.0 and future versions)
- Install location changed for above change to %PROGRAMFILES%\Microsoft Cloud Programmability\Reactive Extensions\<rx version>\<.net version>
Rx JS
-
- Added additional bindings for dojo, ExtJs, MooTools, Prototype, JQuery, Yui3
- Added new bindings for Raphael
- Fixed nullness issue in mutableDisposable
- Fixed order issues in subscription, Switch & Amb
- Fixed "concurrency" issue in subjects
- Fixed Do exception behavior
- Added Do observable overload
- · fixed Defer unsubscription bug
- · added While, If, DoWhile, Case, For and Let operators.
Download Rx 1.0.2521.0 for .NET 3.5 SP1
Download Rx 1.0.2521.0 for .NET 4
Download Rx 1.0.2521.0 for Silverlight 4
Build 1.0.2441.0 04/14/2010
Rx .NET
-
- Added BufferWithTimeOrCount.
- Changed ForkJoin to take the last value from each source.
- Peformed FxCop naming cleanup work.
- Removed FutureDisposable in favor of MutableDisposable.
- Added Sequential operators like While, If, Case etc…
- Added SkipLast & TakeLast.
- Made fixes to CurrentThreadScheduler & NewThreadScheduler.
- Added Scan0.
- Made Sample fire last sample area on Oncompleted & have abort semantics on Error.
- Made Buffers have abort semantics on Error.
- Moved to .NET 4 RTM
Rx JS
-
- Changed distribution from MSI installer to ZIP file
- Added BufferWithTimeOrCount.
- Added ForkJoin.
- Added SkipLast & TakeLast.
- Removed FutureDisposable in favor of MutableDisposable.
- Breakout support for html api into separate file (rx.html.js).
- Added jQuery support (rx.jquery.js).
- Added dojo support (rx.dojo.js).
- Added MooTools support (rx.mootools.js).
- Added Prototype support (rx.prototypel.js).
- Added ExtJS support (rx.extjs.js).
- Added Yui3 support (rx.yui3.js).
- Added aggregates such as Sum, Count, IsEmpty etc… (rx.aggregates.js).
- Added joins support (rx.joins.js).
- Changed default schedulers for various API.
- Made List implementation public.
- Made several to TakeUntil, Scan1,Take, SkipWhile, Repeat, Retry, Catch, StartWith, Subjects, ToAsync, Start.
- Make schedulers have own notion of time (Now()).
- Added Scan0.
- Made Sample fire last sample area on Oncompleted & have abort semantics on Error.
- Made Buffers have abort semantics on Error.
- Fixed Aggregate, Count, Sum & Average behavior on empty observables.
- Added Samples for all different library integration points
- Added readable (debug) version of library integration points.
Download Rx 1.0.2441.0 for .NET 3.5 SP1
Download Rx 1.0.2441.0 for .NET 4
Download Rx 1.0.2441.0 for Silverlight 3 & 4
Build 1.0.2369.0 03/17/2010
- Reactive Extensions for JavaScript, initial release.
Build 1.0.2350.0 03/15/2010
- Added System.Observable to redist.txt.
- Changed Timeout to work on multiple notifications.
- Renamed HoldUntilChanged to DistinctUntilChanged.
- Made Semaphore for Silverlight internal.
- Adding Zip overload for IO<T> and IE<T> zipping.
- Changed last Throttle message to come out at Completion time and fix concurrency bug in Throttle.
- Changed OnErrorResumeNext to always complete.
- Changed Delay error semantics to be abort.
- Added ObserveOn/SubscribeOn on IScheduler.
- Fixed finally behavior.
- Minimized locks in subjects.
- Added MinBy, MaxBy operators as well as Min, Max with comparers.
- Added DistinctBy for Enumerable.
Build 1.0.2317.0 03/05/2010
- Moved to RC for .NET 4 build.
- Moved IObservable & IObserver to seperate assembly: System.Observable.dll.
- Removed IsCritical and its usage on exceptions thrown inside Rx operators.
- Fixed bugs in Enumerable->Observable conversions.
- Fixed threading bugs in EnumerableEx Merge and Amb operator.
- Changed signature of Buffer to expose an IList<T> as opposed to an IEnumerable<T>.
- Fixed Buffer behavior, with regards to flushing last frame and non-overlapping windows (count < skip).
- Renamed Buffer to BufferWithTime and BufferWithCount.
- Introduced BufferWithCount for IEnumerable.
- Renamed Hide to AsObservable, add AsObserver, AsEnumerator.
- Moved Schedulers & Disposables to System.CoreEx.
- Added schedulers to subjects.
- Enforced abort semantics for all exceptions in Rx.
- Added OfType and Cast to Observable, plus additional Do methods + parity in EnumerableEx.
- Reworked GroupBy to be lazy & performant.
- Removed deadlocks throughout Rx.
- Fixed reentrancy bug in Scheduler.
- Added RefCountDisposable.
- Removed LockDisposable.
- Added AsyncLock.
- Changed TimeSpan.MaxValue to not be a sentinel value for Infinite.
- Changed IScheduler argument positioning to be last where possible.
- Moved schedulers to System.Concurrency.
- Renamed Scheduler.Now to Scheduler.CurrentThread.
- Renamed Scheduler.Later to Scheduler.ThreadPool.
- Removed Scheduler.Default.
- Added Scheduler.Immediate and ImmediateScheduler.
- Added Scheduler.TaskPool and TaskPoolScheduler where Tasks are available.
- Added Scheduler.NewThread and NewThreadScheduler.
- Added SynchronizationContextScheduler.
- Added IConnectableObservable.
- Added ConnectableObservable.
- Removed EventSubject.
- Changed Publish/Replay/Prune to return IConnectableObservables.
- Added RefCount operator.
- Made all subjects not disposable.
- Added schedulers to asynchronous operations.
- Made Rx assemblies CLSCompliant.
- Added aggregate operators.
- Removed properties from Rx.
- Removed timedrift from time based operators.
- Changed default schedulers for operators.
- Cleaned up Generate and GenerateWithTime overloads.
- Renamed GroupDisposable to CompositeDisposable.
- Moved reference required overloads of extension methods to defining namespace.
- Many other small bug fixes.
- Removed BooleanSignal.
- Fixed timing bug in ControlScheduler.
Build 1.0.2149.0 12/22/2009
- Include version number in Setup Title & UAC elevation prompt
- Fix assembly file version to state 1.0.2149.0 instead of 0.9.00
- Fix typo in license
- Fix deadlock issue with Scheduler.Now by installing trampoline at Subscribe
- Bring EnumerableEx.Using inline with Observable.Using
- Remove extra firing from Generate timer
Build 1.0.2144.0 12/18/2009
- License changes based on forum feedback
- Add FromAsyncPattern to Silverlight
- Remove Observable.Context and replace with IScheduler mechanism.
- Perf fixes for Last*,First* and Single*. Adding Any, All
- Additional StartWith overloads
- Fix bug in EnumerableEx.Memoize
- Fix bug in EnumerableEx.Retry
- Fix bug in EnumerableEx.Merge
- Add ObserveOn & SubscribeOn for Control and Dispatcher schedulers
- Removed all time based operators which takes an Int instead of a TimeSpan or DateTime
- Generalized the Using operator by adding a type parameter TResource constrained to implement IDisposable
- Renamed BufferWithTime to Buffer since there is no ambiguity between the two now
- Renamed Until to TakeUntil
- Renamed WaitUntil to SkipUntil
- Added various disposables in System.Disposables
- Fixed a bug in Observable.Join
- Added Observable.IsEmpty
- Changed DateTime to DateTimeOffset
- Setup will automatically uninstall previous releases
Build 1.0.2067.0 11/20/2009
- Improved performance of FromEvent.
- TimeInterval & TimeStamped now have a ToString() to help debugability.
- A few general performance improvements regarding Notifications, including Generate and various time based operators
- Fixed semantics of Delay
- Improve performance of Throttle
Known issue: need to uninstall previous build before installing new build (will be fixed in next release).
Build 1.0.2052.0 11/17/2009, First Release
There are 3 versions of Rx: Rx for .NET 3.5 Sp1, Rx for Silverlight 3 and Rx for .NET 4 Beta 2.
All 3 versions can be downloaded from the Devlabs Rx project page.
The installer ships the following dlls:
System.CoreEx, api used by both System.Reactive and System.Interactive:
- Additional Action<,> and Func<,> types (for .NET 3.5 SP1 only, matches types in .NET 4)
- TimeInterval<T> & TimeStamped<T> adds time information to a value.
- IEvent<TEventArgs> wraps existing .NET event values.
- Notification<T> to materialize next/error/completed notifications.
- SynchronizationContexts provides access to common SynchronizationContexts.
- Unit, represents void for use in generics.
- BooleanSignal, a boolean state locking mechanism wrapping Semaphore.
- Semaphore adds the semaphore functionality to Silverlight 3.
System.Reactive, api related to IObservable & IObserver.
- IObservable<T> & IObserver<T>, the base interfaces for Reactive (lives in mscorlib.dll for .NET 4).
- Numerous Observable & Observer sequence operators:
-
- Standard LINQ operaturs such as: Select, Where, GroupBy, SelectMany
- combining operations such as Zip Repeat, Merge, Amb, Concat and StartWith.
- caching operations such as: Share, Memoize, MemoizeAll and Publish.
- creation operators such as: Return, Throw, Repeat and Generate.
- threading operators such as: Asynchronous, Synchronize, SubscribeOn, ObserveOn.
- exception handling operators such as: Catch, Finally, Retry and OnErrorResumeNext.
- evaluation operators such as: Run & Do.
- stream manipulation operators such as: Scan and Aggregate
- time based operators: Timestamp, Interval, Delay,
- remoting operator: Remotable
- Various Subjects, publish & subscribe (pub/sub) for Reactive with different caching policies.
- System.Joins.*, implements join-calculus on top of Rx.
System.Interactive, backport of Observable sequence operators that apply to IEnumerable as well.
- combining operations such as Zip (for .NET 3.5 SP1 and Silverlight 3), Repeat, Merge, Amb, Concat and StartWith.
- caching operations such as: Share, Memoize, MemoizeAll and Publish.
- creation operators such as: Return, Throw, Repeat and Generate.
- threading operators such as: Asynchronous & Synchronize.
- exception handling operators such as: Catch, Finally, Retry and OnErrorResumeNext.
- evaluation operators such as: Run & Do.
- stream manipulation operators such as: Scan.
- remoting operator: Remotable.
System.Threading, backport of Parallel Extensions for .NET 4 to .NET 3.5 SP1
- Task<T> for executing asynchronous operations.
- Concurrent Collections such as ConcurrentStack, ConcurentQueue ad ConcurrentDictionary.
- PLINQ for writing parallel queries.
- addition Threading operations such as Barrier,SpinLock and SpinWait.
·
Anonymous
November 17, 2009
So why have a new type, Unit, instead of using System.Void? I must be missing something.Anonymous
November 17, 2009
@KFarmer> System.Void is treated by .NET as a special type that cannot be used in generic arguments. e.g. IObservable<System.Void> is not allowed, that's why we provided the alternative Unit. Some of our api return an event stream that only signals completion, such as Observable.ToAsync(Action action) which returns IObservable<Unit>Anonymous
November 17, 2009
Well done Rx team! This changes everything, and it's only the beginning. What a time to be a developer! Keep up the fantastic work!Anonymous
April 19, 2010
I am not sure how to use the TakeLast method. Is it possible to provide a short snippet on how to use it. Thanks a lot and keep em coming. Great work !!Anonymous
May 15, 2010
Rx is fantastic. How is anyone going to take this thing seriously, though, with a type called IQbservable. That must have been a great naming party.Anonymous
June 05, 2010
This is great but here is my problem. I have read and used Rx on my own at home and love it. Two weeks ago, I did a demo for my boss in relation to a project we are about to start. He was very excited but ask the blocking question "this is great but what makes you think this will not end up like volta". I had no response of cause. So my question is that, its all great to say a project is experimental but since volta was shut down, no word has been release whether its been faced out or .....leaving first adopters hanging. I will assume Rx is here to say since its been somewhat integrated into silverlight, wpf , javascript etc. With that said, what should be the response to my boss.Anonymous
August 27, 2010
Please release more use documentationAnonymous
August 27, 2010
Please release more use documentationAnonymous
August 27, 2010
@Emmanuel ... Rx is Volta ... that's your answer.Anonymous
September 03, 2010
Guys, you really really REALLY need to remove the UnitTesting reference in System.Reactive for .Net 4.0. It can't be used in ClientProfile apps... HUGE bummer.Anonymous
March 31, 2011
I just installed the latest Rx and went to the C:Program Files (x86)Microsoft Cloud ProgrammabilityReactive Extensionsv1.0.2787.0WP7 directory. When I replaced my reference to Microsoft.Phone.Reactive with System.Reactive it complained that this was a full Silverlight assembly. Why not put out a release that has the assembly named Microsoft.Phone.Reactive? Why change namespaces? Why not mark this assembly as Windows Phone 7 Compatible?