Release 0.73.1

This patch release resolves a bug and a regression in the 0.73.0 release:

  • Fixed a performance regression on DbLedger that was caused by named reports being type checked even though their type was already resolved.
  • Fixed an issue that prevented Corda applications from connecting to Corda nodes more than once.

Release 0.73.0

This release of the Deon Digital CSL platform carries a number of significant changes and improvements, as outlined in the changelog. Here, we shall touch upon the most important changes in more detail and what it means for projects. In addition to the Changelog we have introduced a more formal “Migration Guide” that outlines the changes that are needed in the usage of CSL. See also the migration guide.

Tooling improvement: Gradle sic plugin simplification

The Gradle sic plugin has been improved and simplified. Previously, the plugin generated the states and flows JARs necessary for running a CorDapp. Now, these two JARs have been changed to be regular library dependencies, and the Gradle plugin now only generates the CSL-specific components of a CorDapp – i.e, compiled artefacts necessary at runtime. This brings two major benefits:

  • The performance of Gradle builds is improved, since less output is generated and prebuilt JARs are used instead,
  • It makes it simpler to configure a build; you don’t work with generated, “ephemeral” JAR dependencies which do not live in the same realm as other Gradle dependencies, making them fit poorly into a traditional Java/JVM development process.

It also means that deploying the CorDapp requires uploading these two library JARs, which can be fetched here and here during builds or deployments.

Performance improvement: Internal serialization is (much) faster

The CSL runtime performs a lot of serialization and deserialization, whether it is using a Corda- or a DbLedger-backend. This is unavoidable, as the runtime persists all the necessary information related to a contract instance and the events being applied to it. Until this release, all of this was done using our custom JSON serialization framework, built on top of Google’s gson library. Instead, we now use the binary format MessagePack for all internal serialization. This gives a significant boost to performance both in terms of time and space: Our benchmarks show that the new serialization/deserialization functions are about 20-25 times faster while also generating data that takes up 20-25 times less space.

These gains do not translate to 20-25 times performance increases in CorDapp execution, as there are many other factors at play in the CSL and Corda runtime than just the Deon Digital-specific (de)serialization, but our benchmarks show noticeable speedups nonetheless – about half the time to instantiate a contract and to apply an event.

This has the significant impact that the data stored on the ledger (Corda or DbLedger) is kept in a different format.

Corda: Upstream fixes and improvements

While not explicitly part of this release per se, R3 has made improvements and fixes to the Corda platform based on feedback from Deon Digital during the development of this release: