Skip to content

Releases: dotnet/reactive

Ix.NET v3.2.0-preview.635

03 Jul 15:30
Compare
Choose a tag to compare
ixnet-v3.2.0-preview.635

Fix code coverage

Ix.NET v3.2.0-preview.620

03 Jul 02:55
ee70f99
Compare
Choose a tag to compare
Merge pull request #734 from dotnet/ix-refs

Ix Reference Assemblies

Rx.NET v4.1.0-preview.84

18 Jun 23:46
Compare
Choose a tag to compare

NuGet: 4.1.0-preview.84

>PM Install-Package System.Reactive -Version 4.1.0-preview.84

Version 4.1.0 is an enhancement version over 4.0.0 by keeping the public API and extending it additively as well as having significant internal changes for better performance via less allocation, less indirection and less locking on the existing components. Note that the codebase now uses C# 7.1 language features.

API enhancements

  • Pull 486: Add the RetryWhen operator.
  • Pull 497: Add the IConnectableObservable.AutoConnect() operator.
  • Pull 536: Add the RepeatWhen operator.
  • Pull 133: Add a RefCount overload supporting a grace period before disconnecting.
  • Pull 567: Add the Append and Prepend operators.

Performance enhancements

  • Pull 504: Improve the logic of AsyncLock.
  • Pull 505: Improve and fix CompositeDisposable.
  • Pull 491: Optimize Concat(IObservable<IObservable<T>>).
  • Pull 499: Make TailRecursiveSink lock-free and have less allocations.
  • Pull 506: Improve AutoDetachObserver memory footprint.
  • Pull 508: Replace ObserveOn(IScheduler) internals with a lock-free algorithm.
  • Pull 510: Improve AsyncSubject by using lock-free methods.
  • Pull 511: Improve Subject observer tracking.
  • Pull 512: Improve Amb with lock-free algorithm.
  • Pull 513: Make Never<TResult> singleton.
  • Pull 535: SerialDisposable to use lock free methods.
  • Pull 544: Make plain Empty<T>() a singleton.
  • Pull 545: Dedicated Amb implementation for arrays and enumerables.
  • Pull 550: Rework TakeUntil with lock-free methods.
  • Pull 500: Avoid some closure allocations and enable delegate caching in the System.Reactive.Concurrency namespace.
  • Pull 549: Deanonymize operators.
  • Pull 556: Use the helper methods for IDisposable-fields, avoid repeating code patterns.
  • Pull 551: Rework SkipUntil with lock-free methods.
  • Pull 546: Reimplement Timeout(TimeSpan) with lock-free methods.
  • Pull 566: BasicProducer/Producer: Save the allocation of a closure and allow delegate caching in case scheduling on CurrentThreadScheduler is required.
  • Pull 558: Use Schedule calls with state.
  • Pull 568: Use Disposable helper methods were applicable.
  • Pull 574: Make RefCountDisposable lock-free.
  • Pull 575: Rework subscription in Producer such that all Sinks set the upstream disposable by themselves.
  • Pull 561: Inline disposability into ScheduledItem.
  • Pull 578: Inline StableCompositeDisposable.Create into the Sinks.
  • Pull 580: Inline Disposable.Create.
  • Pull 583: Use the stateful overload of AsyncLock in some places to save allocation of closures and allow delegate caching.
  • Pull 586: Save more allocations of closures and enable more delegate caching.
  • Pull 592: Inline AnonymousObserver use at places.
  • Pull 591: Save even more allocations.
  • Pull 590: Improve blocking First & Last operators.
  • Pull 593: Inline SerialDisposable usages.

Bugfixes

  • Pull 569: Fix PriorityQueue non-first element removal.
  • Pull 579: Fix timed delay hangs with dotCover and the DefaultScheduler.
  • Pull 528: Fix PeriodicTimerSystemClockMonitor concurrency & failure behavior.
  • Pull 560: Fix Delay hanging due to wrong disposable-chain management.
  • Pull 421: EventLoopScheduler set _nextItem to null on Tick to avoid leaks.
  • Pull 514: Fix ActivePlan crashing with self-joins.
  • Pull 529: Have the ControlScheduler do more eager disposed checks.
  • Pull 507: Fix PriorityQueue to not share a item ordering helper index.
  • Pull 505: Fix CompositeDisposable concurrency.

Documentation changes

  • Pull 480: Update RxJS reference.
  • Pull 538: Fix CS1711: The type parameter comes from the outer class, where it is already documented. No need to document it here again.
  • Pull 543: Fix XML document spelling errors.
  • Pull 519: Updated links in README.md.
  • Pull 589: Add missing state XML comment to the new AsyncLock methods.

Other notable (internal) changes

  • Pull 527: Refactor Linq operator unit tests into separate files/classes.
  • Pull 523: Fix CombineLatest and Zip code generator templates. (#)
  • Pull 515: Reference System.ValueTuple for further reduction of allocations, use C# 7.1 to use value tuples without the need for explicit tuple component naming.
  • Pull 554: Enhance AsyncLock to support passing state.
  • Pull 493: Strengthen the concept of the Sink class.
  • Pull 482: Add public API approval tests for Rx.NET.
  • Pull 548: Avoid repeating code patterns in the System.Reactive.Disposables-namespace.
  • Pull 518: Add a new extension method for IScheduler that allows to schedule an Action<TState> and pass a corresponding state object.
  • Pull 555: Resolve the source of confusion that is DefaultDisposable.
  • Pull 564: Rename and reorder the signature of the extension for schedule that takes an Action<TState> and a state.
  • Pull 537: Update the HomoIcon tool to reflect new repository structure and manual code changes.
  • Pull 563: Add internal ExceptionHelper & HalfSerializer lock-free tools.
  • Pull 572: Use HalfSerializer extensions.
  • Pull 588: Check for license header and add them if missing.
  • Pull 595: Add reflection-based Argument-Null validation test.
  • Pull 601: Use LastIndexOf instead of IndexOf in LicenseHeaderTest.
  • Pull 597: Capture the concept of a "safe observer".
  • Pull 603: Align safe observers.

Rx.NET v4.0.0

25 May 17:12
Compare
Choose a tag to compare
rxnet-v4.0.0

remove prerelease

Rx.NET v4.0.0-preview.4.build.391

23 May 20:29
Compare
Choose a tag to compare
rxnet-v4.0.0-preview.4.build.391

rename var

Rx.NET v4.0.0-preview.3.build.380

16 May 14:59
269d926
Compare
Choose a tag to compare
Add explicit windowsbase reference (#509)

* add explicit windowsbase reference

* set to preview 3

* Update version.json

Reactive Extensions v4 Preview 1

27 May 22:35
Compare
Choose a tag to compare
Pre-release

The first v4 preview of Rx addresses a number of issues and contains several enhancements.

The biggest enhancement is consolidating the existing packages into one main package, System.Reactive. This will prevent most of the pain around binding redirects that were caused by #205. If you are using Rx 4.0 and need to use libraries built against Rx 3.x, then you need to also install the compatibility package System.Reactive.Compatibility. That package contains facades with type forwarders to the new assembly so types are unified correctly. You only need this compatibility package if you are consuming a library built against 3.x. You do not need it otherwise.

There have also been other performance enhancements in the codebase and various fixes as noted below:

  • #393 - use SourceLink.Create.CommandLine contributed by Cameron Taggart (ctaggart)
  • #391 - Using C# 7 pattern matching features contributed by Bart J.F. De Smet (bartdesmet)
  • #388 - First steps to reduce operator object layouts contributed by Bart J.F. De Smet (bartdesmet)
  • #387 - Rename Omega methods contributed by Bart J.F. De Smet (bartdesmet)
  • #386 - Remove unused usings in operators contributed by Bart J.F. De Smet (bartdesmet)
  • #385 - Seal operators contributed by Bart J.F. De Smet (bartdesmet)
  • #384 - Remove NO_PERF conditional compilation contributed by Bart J.F. De Smet (bartdesmet)
  • #383 - Fixing names in authors.txt contributed by Bart J.F. De Smet (bartdesmet)
  • #381 - Misc concurrency improvements contributed by Bart J.F. De Smet (bartdesmet)
  • #380 - Some improvements to internal types contributed by Bart J.F. De Smet (bartdesmet)
  • #379 - Misc. improvements to Disposable types contributed by Bart J.F. De Smet (bartdesmet)
  • #378 - Fixing XML doc comments contributed by Bart J.F. De Smet (bartdesmet)
  • #377 - Misc. improvements to subjects contributed by Bart J.F. De Smet (bartdesmet)
  • #376 - Some improvements to core classes contributed by Bart J.F. De Smet (bartdesmet)
  • #375 - Cleanup of TaskObservableExtensions contributed by Bart J.F. De Smet (bartdesmet)
  • #374 - Eta reduction of some lambdas contributed by Bart J.F. De Smet (bartdesmet)
  • #373 - Using some C# 6.0 features contributed by Bart J.F. De Smet (bartdesmet)
  • #372 - Removing a few conditional compilation symbols contributed by Bart J.F. De Smet (bartdesmet)
  • #371 - Remove conditional support for expression trees contributed by Bart J.F. De Smet (bartdesmet)
  • #369 - Removing conditional usage of TLS contributed by Bart J.F. De Smet (bartdesmet)
  • #368 - Removing conditional use of ConditionalWeakTable contributed by Bart J.F. De Smet (bartdesmet)
  • #367 - Removing conditional compilation for TPL contributed by Bart J.F. De Smet (bartdesmet)
  • #365 - Removing remants of Windows Phone 7 support contributed by Bart J.F. De Smet (bartdesmet)
  • #364 - Removing conditional compilation for Silverlight contributed by Bart J.F. De Smet (bartdesmet)
  • #363 - Removing checks for concurrent APIs contributed by Bart J.F. De Smet (bartdesmet)
  • #362 - Removing checks for WeakReference contributed by Bart J.F. De Smet (bartdesmet)
  • #361 - Task.Delay exists on all platforms now contributed by Bart J.F. De Smet (bartdesmet)
  • #360 - Removing traces of a backport of Semaphore contributed by Bart J.F. De Smet (bartdesmet)
  • #359 - All timers now have the self-rooting behavior contributed by Bart J.F. De Smet (bartdesmet)
  • #358 - Using nameof when looking up members through reflection contributed by Bart J.F. De Smet (bartdesmet)
  • #357 - Removing checks for absence of higher arity delegate types contributed by Bart J.F. De Smet (bartdesmet)
  • #356 - Removing check for 64-bit interlocked instructions contributed by Bart J.F. De Smet (bartdesmet)
  • #355 - Removing check for absence of Stopwatch contributed by Bart J.F. De Smet (bartdesmet)
  • #354 - Removing checks for EventArgs constraints contributed by Bart J.F. De Smet (bartdesmet)
  • #353 - Delegate invocation using C# 6.0 syntax contributed by Bart J.F. De Smet (bartdesmet)
  • #352 - Removing checks for absence of SynchronizationContext contributed by Bart J.F. De Smet (bartdesmet)
  • #351 - Removing checks for absence of HashSet contributed by Bart J.F. De Smet (bartdesmet)
  • #350 - Removing TASKEX symbol contributed by Bart J.F. De Smet (bartdesmet)
  • #349 - Removing some unused usings contributed by Bart J.F. De Smet (bartdesmet)
  • #348 - Removing backported BCL types contributed by Bart J.F. De Smet (bartdesmet)
  • #347 - Using nameof in more places contributed by Bart J.F. De Smet (bartdesmet)
  • #346 - Cleaning up XML doc comments contributed by Bart J.F. De Smet (bartdesmet)
  • #345 - Use of Interlocked on volatile fields no longer raises CS0420 contributed by Bart J.F. De Smet (bartdesmet)
  • #344 - Removing NO_VARIANCE checks contributed by Bart J.F. De Smet (bartdesmet)
  • #338 - enable source link contributed by Cameron Taggart (ctaggart)
  • #337 - [WIP] enable source link contributed by Cameron Taggart (ctaggart)
  • #321 - AsyncEnumerable.ToObservable: Use Try...-methods on TaskCompletionSources to avoid unexpected exceptions when the iterator is cancelled. contributed by Daniel C. Weber (danielcweber)
  • #305 - Incompatibility between System.Reactive.Core and System.Reactive.Windows.Threading 3.1.1 NuGet packages
  • #302 - Let IOrderedAsyncQueryable implement IOrderedAsyncQueryable contributed by Axel Heer (axelheer)...
Read more

Rx and Ix 3.1.1

21 Nov 13:59
Compare
Choose a tag to compare

Minor packaging update that ensures the NETStandard.Library meta-package isn't referenced by projects targeting the Desktop .NET Framework (4.5 and 4.6).

Rx and Ix 3.1

23 Sep 12:46
Compare
Choose a tag to compare

The Reactive and Interactive Extensions v3.1 is a minor update to the libraries, consisting mostly of bug fixes and small enhancements.

The full list of items fixed/improved is available here, but below are some key highlights:

  • #205 Implement an assembly version strategy
  • #237 Rewrite of Ix Async to reduce memory allocations, make the code easier to read and fix many bugs
  • #273 Restored access to the PlatformEnlightenmentProvider.Current setter

Many thanks to @aelij for his excellent work in converting Ix Async to use async and await in #170.

Note for Desktop .NET Users: As part of #205, we now have a strict assembly versioning scheme in place. This may require binding redirects to work correctly. NuGet will generate these for you, so there's nothing you should have to do. If you're seeing issues, before reporting a bug, please verify you have AutoGenerateBindingRedirects enabled as described here. You may need to manually add it some older projects.

Reactive and Interactive Extensions for .NET 3.0

27 Jun 13:38
Compare
Choose a tag to compare

Major update from version 2.2.5 adding support for .NET Core and the .NET Platform Standard. In addition to .NET Core support, a few bugs were addressed.

This update is the first after moving to the .NET Foundation. As such, there are a few noteworthy items:

  • The strong name key has been changed. The old key was a Microsoft key that could not be fully checked-in. The new key is checked in, allowing anyone to create custom builds easily.
    The package names have all changed
  • The NuGet package names have changed. The Rx-* and Ix-* packages have been renamed to match their library names, keeping inline with the rest of .NET Core. As the strong name key had to change, we did update the old packages as the new binaries incompatible due to strong name conflicts. They are fully source-code compatible.
    • Use System.Reactive instead of Rx-Main
    • Use System.Interactive instead of Ix-Main
    • Use System.Interactive.Async instead of Ix-Async
  • The supported platforms are .NET Platform Standard 1.0 and higher. This means the following minimum versions:
    • .NET Core App 1.0
    • .NET 4.5
    • Windows 8
    • Windows Phone 8 Silverlight
    • Windows Phone 8.1
  • On Visual Studio 2012 and 2013, NuGet 2.12 is required. On VS 2015, NuGet 3.4 or later is required.

As always, Rx and Ix have enhanced support per-platform, ensuring an optimal experience based on your target runtime.