Just a second...

What's new in Diffusion 6.2?

The latest version of Diffusion™ contains new features, performance enhancements and bug fixes.

A complete list of the latest updates and known issues can be found in the Release Notes available at http://docs.pushtechnology.com/docs/6.2.8/ReleaseNotice.html.

The Diffusion Community Site is now available at community.pushtechnology.com. By signing up for the community, you can:
  • Download Diffusion with a free community license - both Production and Evaluation licenses are available
  • View existing Enterprise community licenses, and request new ones
  • View and manage existing Cloud services
  • Access developer resources

We plan to expand the community site over time to become the central hub for all developer-focused activities for Diffusion.

New update API

The client API includes a major revision of the 'update' facility, with new capabilities. The new API allows clients more flexible options when updating topic values. It adds conditional updates, non-exclusive update streams, and topic creation on demand through the update API.

Update streams allow multiple clients to safely update topics without exclusive locking. This supports more interactive collaborative updates.

The topic type for updates is enforced on the client, and checked by the server, removing a class of potential application bugs.

Opt-in constraints allow applications to choose an appropriate optimistic or pessimistic locking scheme. The conditional constraints include the use of session locks thus allowing a cross cluster locking scheme to be applied when updating topics.

Update streams take advantage of 'delta' calculations so that only the difference from the last update needs to be sent to the server, which can result in considerable reductions in bandwidth requirements for topic updaters. The update stream protocol also voids repeatedly sending the topic path for each update.

It is also now possible to remove the value of a string, int64 or double topic by setting its value to null.

The revised update API is available in the JavaScript, .NET, Java, Android and C client libraries. It will be added to the Apple client in a future release.

For full details see Updating topics.

New fetch API

The client API includes a major revision of the 'fetch' facility, with new capabilities. The new API allows a client to retrieve typed data and/or specifications of selected topics. It also avoids issues relating to large result sets by providing the capability to page through results in both forward and reverse directions.

The revised fetch API is available in the JavaScript, .NET, Java, Android, C and Apple client libraries.

For full details see Fetching the current value of a topic.

Automatic compression of topic updates

Published topic updates are now automatically compressed by the server.

Compression provides significant bandwidth reductions with no code changes. The benefits are data dependent and will vary for each application, but we expect typical savings to be around 25%.

Compression is on by default but can be disabled on a per-connector basis in the server configuration or on a per-topic basis using the COMPRESSION topic property. Updates for a session are compressed only if the client library supports compression. The JavaScript library only supports compression if the zlib library is downloaded; it is packaged separately to reduce the download size of the core library. Compression support will be added to the Apple client in a later release.

Client-proposed session properties

It is now possible for a client to propose user-defined session properties when opening a session. This allows client sessions the ability to provide property values that can be used for filtering sessions in many session based features.

Messages sent to clients, or topics that the client gets subscribed to, can be controlled via their session property values. For example, a client could provide a property called "Department" and session filters could then be applied on a per-department basis.

Another possible use is for the client to supply supplementary credentials which can then be checked by the authentication handler.

Such user-defined properties can be accepted, changed or vetoed by authentication handlers that implement the new Authenticator interface.

The client-proposed session properties feature is available in the JavaScript, .NET, Java, Android and C client libraries. It will be added to the Apple client in a future release.

New Authenticator interface

A new Authenticator interface has been introduced for authentication handlers which provides significant advantages over the old AuthenticationHandler interface.

Using the new interface, the authenticator is passed a full set of fixed session properties (including the Session Identifier and assigned security roles) as well as any user-defined session properties proposed by the client on opening the session. The authenticator can filter the user-defined properties as required and can also change the values of a subset of the fixed session properties.

The authenticator interface is available in the .NET, Java, Android, and C client libraries. It will be added to the JavaScript and Apple clients in a future release.

New $Roles session property

A new session property has been introduced which provided the security roles assigned to a session. The new authenticator interface can change the value of this property and thus change the roles assigned to a session.

The session filter language has been extended to include a new 'hasRoles' clause allowing sessions to be filtered according to the roles assigned to them.

'Change roles' operation

An operation has been added to the Client Control API that allows client sessions with sufficient permissions to either increase or decrease the permissions available to other client sessions.

Changing roles will cause the session's topic selections to be re-evaluated. The session will be unsubscribed from topics to which it no longer has access and will be subscribed to topics to which it has gained access if they match the session's topic selections.

The change roles operation is available in the .NET, Java, and Android client libraries. It will be added to the JavaScript, C, and Apple clients in a future release.

Java 9, 10 and 11 support in Java client

Java versions 9, 10 and 11 are now supported for Java clients in addition to Java 8. Java 8 is still required for the server.

Request-response messaging in the C API

Request/response messaging has now been included in the C API.

One-way messaging deprecated

One-way messaging is deprecated from this release. Request/response messaging can be used to fully replace one-way messaging. The type-safe API bindings of request/response messaging make it safer and easier to use.

Other changes

The client API has been streamlined and simplified by removing support for legacy topic types and removing items deprecated since release 6.0. This all contributes towards a simpler, easier to use, yet more powerful API.

The installer now presents a simpler set of component choices.

In addition to those mentioned above, there have been many minor improvements to the product. See the http://docs.pushtechnology.com/docs/6.2.8/ReleaseNotice.html for full details.