We are pleased to announce the latest monthly Corda milestone release, M8. The main focus of this release has been performance and stability, Corda nodes now have a greatly reduced memory footprint. M8 also includes HTTP server split, improvements in exception/error handling for flows, simplification of contract clauses, and many bug fixes.
Upgrading is recommended, especially if your project involves running a network of 3+ nodes locally. There have been some API changes but upgrading most apps should only take a few minutes.
You can read the documentation, and download the code from the release-M8 branch in our git repository. It is also available via Maven Central/JCenter and so you can upgrade your CorDapps to use it by switching to version 0.8 in your build files.
Node memory usage and performance improvements, demo nodes now only require 200 MB heap space to run.
The Corda node no longer runs an internal web server, it’s now run in a separate process. Driver and Cordformation have been updated to reflect this change. Existing CorDapps should be updated with additional calls to the new
startWebserver()interface in their Driver logic (if they use the driver e.g. in integration tests). See the IRS demo for an example.
Partyequality is now based on the owning key, rather than the owning key and name. This is important for party anonymisation to work, as each key must identify exactly one party.
Contracts: created new composite clauses called
FirstComposition, as this is significantly clearer in intent.
AnyOfalso enforces that at least one subclause must match, whereas
AnyCompositionwould accept no matches.
Explorer: the user can now configure certificate path and keystore/truststore password on the login screen.
- Key Concepts section revamped with new structure and content.
- Added more details to Getting set up page.
Flow framework: improved exception handling with the introduction of
FlowException. If this or a subtype is thrown inside a flow it will propagate to all counterparty flows and subsequently be thrown by them as well. Existing flows such as
NotaryFlow.Client/Serviceand others have been modified to throw a
FlowException(in this particular case a
NotaryException) instead of sending back error responses.
Notary flow: provide complete details of underlying error when contract validation fails.