Release 0.76.0

Classes in com.deondigital.api.reified have been deleted

Instead use the definitions in com.deondigital.syntax.reified.

Some API types have moved to a different package and have been renamed

The Kotlin types Type, ContractBinOp, and RuleName have been moved from com.deondigital.api to com.deondigital.core.types. Additionally, the nested classes Type.TApply and Type.TVar have been renamed to Type.Apply and Type.Var respectively.

Pattern matching must be exhaustive

The CSL type checker now verifies that all pattern matching is exhaustive. In other words, definitions such as:

val x = \1 -> True | 0 -> False

are no longer accepted, and will yield an error message like:

Missing cases: 2, 3, 4

The checker examines each pattern-matching function in isolation. This means that examples such as:

type ABC | A | B | C
val f = \A -> 1 | \bc -> (\B -> 2 | \C -> 3) bc

will not be considered exhaustive.

A consequence of this change is that Month::fromInt has been removed, because it does not cover invalid month numbers. Some APIs have been updated to take Month values directly as arguments.

Corda version upgraded to 4.8

Relevant for projects that use Corda.

Steps to migrate

  1. Update the references to the Corda version in the project to 4.8 and Corda gradle plugin version to 5.0.12.

2. If you are upgrading from Corda version 4.5, you need to create the database schemas before you can start the Corda node. Since Corda 4.6, schema creation/migration is not done automatically, see Corda database schema harmonisation notes <https://docs.corda.net/docs/corda-os/4.6/release-notes.html#database-schema-harmonisation> for more details. For specific details on upgrading a node to Corda 4.8, see Corda node upgrade notes <https://docs.corda.net/docs/corda-enterprise/4.8/node-upgrade-notes.html>.