Skip to content

Releases: RxDave/Qactive

Qactive 2.1.0

09 Jul 20:02
Compare
Choose a tag to compare

Note: I've tagged the wrong commit. The actual commit for v2.1.0 is 39a5509.

New In This Release

  • Upgraded to Rx 3.0 for all targets (except for the .NET 4.0 libraries, since Rx 3.0 doesn't support it. They still require Rx 2.2.5.)
  • Fixed a major bug that introduced a subtle race condition, sometimes resulting in duplex observable notifications to be observed in the wrong order; i.e., not the order in which they were sent/received.
  • Custom expression visitors can now be added to the QbservableServiceOptions instance that you pass to the service operators/factories, allowing you to easily view or manipulate the expression tree before it's processed, without having to build your own IQbservableProvider implementation.
  • Implemented graceful socket shutdown in the golden path.
  • Improved ShutdownReason by making QbservableProtocolShutdownReason a Flags enum. Client termination notifications now include an accurate account of the reasons for shutdown. When logging the reason, you'll often see a comma-separated list; e.g., ObservableTerminated, ClientTerminated, meaning that the observable terminated and then the client initiated the socket shutdown process.
  • Added support for specifying 0 as the service port on the host. This worked previously, but the provider's EndPoint property remains 0 because it represents more than one potential host simultaneously, each with distinct ports. To acquire the port that TCP chooses when you specify 0, the ITcpQactiveProviderTransportInitializer interface has two new methods: StartedListener and StoppedListener. Each provides the server number and the real TCP-selected port (in the form of the full EndPoint) as parameters. This is technically a breaking API change but since it's not very significant I'll treat it as minor. (As a bonus, the unit tests now generate unique server ports, so they can be run in parallel.)
  • Starting, stopping, connecting and disconnecting, are now all being traced by the TCP provider for logging and diagnostic purposes.
  • Improved QbservableServiceOptions's Add method so that it can be called when IsFrozen is true; in that case, a clone is returned instead.
  • Defined new types in Qactive.Expressions: ExpressionEqualityComparer and EqualityExpressionVisitor. They are not used in Qactive's libraries. Currently, they are only used for unit testing.

New In Recent Releases

  • Added .NET 4.0 to the NuGet packages.
  • Subject and variants are now interpreted as duplex observables, without having to cast to IObservable<T> first.
  • Non-closure duplex callbacks are now supported; e.g., providerSource.CombineLatest(localObservable, ...)
  • Logging improvements.
  • Error handling improvements.
  • Bug fixes.
  • Unit tests.

Download from NuGet

Qactive.Providers.Tcp

Depends on Rx, Qactive.Providers.Streaming, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive.Providers.Streaming

Depends on Rx, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive

Depends on Rx
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0, ASP.NET Core 1.0, Windows 8, Windows Phone 8.1, Xamarin.Android, Xamarin.iOS

Qactive.Expressions

No dependencies
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive 2.0.4

21 Jun 02:39
Compare
Choose a tag to compare

New In This Release

  • Added .NET 4.0 to the NuGet packages.
  • Fixed a major bug that caused large-ish reads in the transport layer to sometimes get truncated, resulting in an inappropriate exception stating that the stream ended without sending all of the data.
  • Added support for passing in subjects as duplex observables and lists as duplex enumerables, or any types implementing IObservable<T> or IEnumerable<T> in positions where either of those interfaces are explicitly required, without having to call AsObservable or AsEnumerable first.
  • Support for non-closure duplex callbacks. For example, you can now pass observables as the duration arguments of the Window operator; however, this will always result in a duplex callback and duplex must be enabled on the server. (In a future release, Qbservable.Provider will be supported as well, which will enable generators to be executed server-side.)
  • Improved error handling.

New In Recent Releases

  • Fixed a major regression bug that caused duplex observable subscriptions to hang indefinitely without receiving any notifications.
  • Fixed a major regression bug regarding data logging within secure services.
  • Started writing unit tests for the TCP provider. (Note that a couple are failing due to race conditions and another due to reference issues. They'll be resolved in the future.)
  • Fixed a serialization error in the .NET 4.5.2 assemblies by adding a .NET 4.5.2 specific assembly for Qactive.dll in the NuGet package. The portable version still exists but it's not used by any other packages yet.
  • Fixed a bug that caused an error for nested generic type arguments that are anonymous types, sometimes causing queries that contain subqueries to fail during pre-processing on the client (with error messages that don't really indicate the problem.)
  • Fixed a bug with array handling in expression trees that caused errors for initializers of arrays with anonymous types, or any array bounds expressions. (Also, the error thrown wasn't clear on the actual problem, since it was a bug.)
  • Now logging subscriptions and unsubscribing (as Info), duplex enumerations (as Info) and all notifications and enumerated values (as Verbose), via the "Qactive" TraceSource. This source is set to Info by default. It can be changed via the app.config (it's just a typical .NET TraceSource named "Qactive") or programmatically (via the Qactive.QactiveTraceSources class).
  • Additional logging improvements.
  • Improved TCP negotiation to accept the client's local ID, which is written to diagnostic output so it can be used for event correlation.
  • Some more unit tests and test improvements.

Download from NuGet

Qactive.Providers.Tcp

Depends on Rx, Qactive.Providers.Streaming, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive.Providers.Streaming

Depends on Rx, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive

Depends on Rx
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0, ASP.NET Core 1.0, Windows 8, Windows Phone 8.1, Xamarin.Android, Xamarin.iOS

Qactive.Expressions

No dependencies
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, .NET Framework 4.0

Qactive 2.0.3

10 Jun 02:57
Compare
Choose a tag to compare

New In This Release

  • Fixed a major regression bug that caused duplex observable subscriptions to hang indefinitely without receiving any notifications.
  • Fixed a major regression bug regarding data logging within secure services.
  • Started writing unit tests for the TCP provider. (Note that a couple are failing due to race conditions and another due to reference issues. They'll be resolved in the future.)

New In Recent Releases

  • Fixed a serialization error in the .NET 4.5.2 assemblies by adding a .NET 4.5.2 specific assembly for Qactive.dll in the NuGet package. The portable version still exists but it's not used by any other packages yet.
  • Fixed a bug that caused an error for nested generic type arguments that are anonymous types, sometimes causing queries that contain subqueries to fail during pre-processing on the client (with error messages that don't really indicate the problem.)
  • Fixed a bug with array handling in expression trees that caused errors for initializers of arrays with anonymous types, or any array bounds expressions. (Also, the error thrown wasn't clear on the actual problem, since it was a bug.)
  • Now logging subscriptions and unsubscribing (as Info), duplex enumerations (as Info) and all notifications and enumerated values (as Verbose), via the "Qactive" TraceSource. This source is set to Info by default. It can be changed via the app.config (it's just a typical .NET TraceSource named "Qactive") or programmatically (via the Qactive.QactiveTraceSources class).
  • Additional logging improvements.
  • Improved TCP negotiation to accept the client's local ID, which is written to diagnostic output so it can be used for event correlation.
  • Some more unit tests and test improvements.

Download from NuGet

Qactive.Providers.Tcp

Depends on Rx, Qactive.Providers.Streaming, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2

Qactive.Providers.Streaming

Depends on Rx, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2

Qactive

Depends on Rx
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, ASP.NET Core 1.0, Windows 8, Windows Phone 8.1, Xamarin.Android, Xamarin.iOS

Qactive.Expressions

No dependencies
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2

Qactive 2.0.2

07 Jun 12:47
Compare
Choose a tag to compare

New In This Release

  • Fixed a serialization error in the .NET 4.5.2 assemblies by adding a .NET 4.5.2 specific assembly for Qactive.dll in the NuGet package. The portable version still exists but it's not used by any other packages yet.

New In Previous Release

  • Fixed a bug that caused an error for nested generic type arguments that are anonymous types, sometimes causing queries that contain subqueries to fail during pre-processing on the client (with error messages that don't really indicate the problem.)
  • Fixed a bug with array handling in expression trees that caused errors for initializers of arrays with anonymous types, or any array bounds expressions. (Also, the error thrown wasn't clear on the actual problem, since it was a bug.)
  • Now logging subscriptions and unsubscribing (as Info), duplex enumerations (as Info) and all notifications and enumerated values (as Verbose), via the "Qactive" TraceSource. This source is set to Info by default. It can be changed via the app.config (it's just a typical .NET TraceSource named "Qactive") or programmatically (via the Qactive.QactiveTraceSources class).
  • Additional logging improvements.
  • Improved TCP negotiation to accept the client's local ID, which is written to diagnostic output so it can be used for event correlation.
  • Some more unit tests and test improvements.

Download from NuGet

Qactive.Providers.Tcp

Depends on Rx, Qactive.Providers.Streaming, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2

Qactive.Providers.Streaming

Depends on Rx, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2

Qactive

Depends on Rx
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2, ASP.NET Core 1.0, Windows 8, Windows Phone 8.1, Xamarin.Android, Xamarin.iOS

Qactive.Expressions

No dependencies
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5.2

Qactive 2.0.1

05 Jun 18:26
Compare
Choose a tag to compare

New In This Release

  • Fixed a bug that caused an error for nested generic type arguments that are anonymous types, sometimes causing queries that contain subqueries to fail during pre-processing on the client (with error messages that don't really indicate the problem.)
  • Fixed a bug with array handling in expression trees that caused errors for initializers of arrays with anonymous types, or any array bounds expressions. (Also, the error thrown wasn't clear on the actual problem, since it was a bug.)
  • Now logging subscriptions and unsubscribing (as Info), duplex enumerations (as Info) and all notifications and enumerated values (as Verbose), via the "Qactive" TraceSource. This source is set to Info by default. It can be changed via the app.config (it's just a typical .NET TraceSource named "Qactive") or programmatically (via the Qactive.QactiveTraceSources class).
  • Additional logging improvements.
  • Improved TCP negotiation to accept the client's local ID, which is written to diagnostic output so it can be used for event correlation.
  • Some more unit tests and test improvements.

Download from NuGet

Qactive.Providers.Tcp

Depends on Rx, Qactive.Providers.Streaming, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5

Qactive.Providers.Streaming

Depends on Rx, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5

Qactive

Depends on Rx
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5, ASP.NET Core 1.0, Windows 8, Windows Phone 8.1, Xamarin.Android, Xamarin.iOS

Qactive.Expressions

No dependencies
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5

Qactive 2.0.0

26 May 22:10
Compare
Choose a tag to compare

New In This Release

  • Separated Stream dependencies into a new project (deployed as a NuGet package): Qactive.Providers.Streaming
  • Removed dependency on Qactive.Expressions from Qactive. (The TCP provider and streaming protocol depend on Qactive.Expressions, although the core library does not.)
  • Added a portable library version of Qactive (see available runtimes below near the NuGet package link.)
  • Added .NET 4.5 versions for each of the other libraries.
  • Added support for anonymous type projection (#8)
  • Added Code Contracts (#5)
  • Added a QactiveTraceSources type (#7). Currently, original and rewritten expression trees, client and server-side, are logged; however, it's off by default. These trace sources can be enabled programmatically or in the typical manner within an app.config file. (The TraceSource name is Qactive.Expressions.)
  • Fixed some bugs.
  • Improved some error handling.
  • Some small API improvements (went along with the refactoring of the streaming dependencies into its own library.)
  • Added some unit tests.

Download from NuGet

Qactive.Providers.Tcp

Depends on Rx, Qactive.Providers.Streaming, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5

Qactive.Providers.Streaming

Depends on Rx, Qactive.Expressions and Qactive
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5

Qactive

Depends on Rx
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5, ASP.NET Core 1.0, Windows 8, Windows Phone 8.1, Xamarin.Android, Xamarin.iOS

Qactive.Expressions

No dependencies
Runtimes: .NET Framework 4.6.1, .NET Framework 4.5

Qactive 1.0.2

04 Apr 03:29
Compare
Choose a tag to compare

Providers

Qactive.Providers.Tcp (depends on Qactive and Qactive.Expressions)

Core

Qactive (depends on Qactive.Expressions)

Qactive.Expressions