Reactive Extensions v4 Preview 1

@onovotny onovotny released this May 27, 2017

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)
  • #301 - AsyncEnumerableQuery does not implement IOrderedAsyncQueryable
  • #299 - Version 3.1.1 has different DLL versions, depending on the platform.
  • #199 - Consolidate core Rx libs into single library/package