Вышла новая версия Reactive Extensions для .NET
Библиотека реактивных расширений Reactive Extensions for .NET получила очередное обновление. Как пишут разработчики, теперь библиотека будет разделена на две ветки: стабильную и экспериментальную. Если вам нужна поддержка, полная документация всех функций и важна стабильная работа реактивных расширений в промышленном применении, то используйте стабильную версию, если вы интересуетесь самыми новыми функциями, которые разработчики добавили в инструмент, то обратите внимание на экспериментальную версию.
В связи с разделением разработки на две ветки, произошли некоторые изменения: изменения пространств имен на System .Reactive для стабильной ветки, переименование некоторых типов и операторов и другие изменения, которые можно узнать из сопроводительной документации. Стабильная версия будет доступна для многих платформ, но поддерживаться официально будет только для .NET 4.0, Silverlight 4 и Windows Phone 7.
Загрузить стабильную версию Reactive Extensions (Rx) v1.0.10425 можно по этой ссылке. Загрузить экспериментальную версию Reactive Extensions (Rx) v1.1.10425 (Experimental Release) можно отсюда. Анонс новой версии и нововведений от разработчиков можно найти на этом форуме.
Новая версия Rx v1.0.10425 для .NET содержит следующие изменения и нововведения:
- Fixed time delay in Window and Buffer operators
- Fixed bug in GroupJoin
- Fixed bug in Merge(n)
- Renamed Window* to Window
- Renamed Buffer* to Buffer
- Renamed Generate* to Generate
- Removed RemoveTimeInterval
- Removed RemoveTimestamp
- Removed Scan0
- Removed Let on TValue
- Ensured parity between Buffer and Window overloads, every overloads exists for both
- Added absolute time scheduling to IScheduler
- Renamed Join (as in the pattern) to When
- Added overload to Sample that takes an IObservable
- Moved TestScheduler to Microsoft.Reactive.Testing
- Created ReactiveTest base type with useful members
- Added state parameter to IScheduler schedule methods
- Added additional overloads for First/Last/Single (OrDefault)
- Added ElementAt
- Added Distinct
- Renamed FromEvent to FromEventPattern
- Added FromEvent which converts from non-standard events to observables
- Added ToEventPattern and IEventPatternSource
- Added ToEvent and IEventSource
- Improved performance of Task.ToObservable
- Removed IEvent, Added EventPattern
- Added ReactiveAssert class with common asserts in Microsoft.Reactive.Testing
- Split release into Experimental and Stable
- - Stable is only available on .NET 4, SL 4, and WP7
- - Marked all parts of the API which are only available in Experimental with the ExperimentalAttribute
- Improved Doc comments
- Fixed a bug in Concat, OnErrorResumeNext, and Catch
- Improved perf of subjects
- Removed VirtualScheduler
- Added VirtualTimeSchedulerBase, VirtualTimeScheduler
- Added HistoricalSchedulerBase, HistoricalScheduler
- Remove extended Action and Func Definitions in System.Reactive for downlevel platforms
- Stopped shipping TPL 3.5
- Temporarily not shipping System.Linq.Async, Ix, and RxJS
- Added documentation for Microsoft.Reactive.Testing
- Changed IScheduler interface, there are new extension methods on Scheduler which expose the old methods, but implementors will need to change; recursive and distributed scheduling
- New Assembly structure:
- - System.Reactive (what used to be CoreEx and Reactive)
- - System.Reactive.Providers (Qbservable, IQbservable, and IQbservableProvider) - Observable.Provider is now Qbservable.Provider
- - System.Reactive.Windows.Forms (all operators, schedulers, etc related to Windows Forms)
- - System.Reactive.Windows.Threading (all operators, schedulers, etc related to WPF)
- - Microsoft.Reactive.Testing (all code to assist in writing tests)
- Third-party Qbservable extensibility
- New namespace structure:
- - System
- - Reactive
- - Linq
- - Disposables
- - Concurrency
- - Joins
- - Subjects
- - Threading
- - Tasks
- - Windows
- - Threading
- - Forms
- - Microsoft
- - Reactive
- - Testing
- MutableDisposable changed to take an assignment policy
- Reduced the memory consumption of CurrentThreadScheduler, VirtualTimeScheduler, HistoricalScheduler, and EventLoopScheduler
- Reduced the memory consumption of many operators
- Added Unit.Default
- Added static class Subject with a few operators for Subjects
- Removed CurrentThreadScheduler.EnsureTrampoline, Added CurrentThreadScheduler.ScheduleRequired
- Added Observer.Synchronize
- Made IObservable compatible with new Async CTP in the Experimental subset
- Using await on IObservable now only returns the last message, if you want the old behavior use ToList first
- Replaced all Subject* with FastSubject*, if you want old behavior then create a subject and use the Subject.Synchronize operator
- Removed publish overloads that take a scheduler