The Accord Project community is delighted to announce version 3.0 of the Concerto schema language and runtime engine.

 Concerto is a general purpose language for describing the structure of data in business terms. Learn more …

This new major version allows Concerto models to define an explicit version in a model file, (according to the Semantic Versioning convention). Concerto models can also declare a dependency on an explicit version of another model. This makes it easier to govern changes to model definitions in large-scale deployments.

Version 3 also includes several new features:

  • Compatibility Detection. Protect your users when your model changes by ensuring backwards compatibility
  • Command Line Tool Enhancements. New concerto generate, concerto version, concerto compare commands.
  • .NET Enhancements. Improved code generation for C#. .NET serialization and deserialization tools.

Concerto 3.0 delivers fundamental improvements over previous releases, whilst maintaining a high-degree (though not total!) of backwards compatibility with 2.x. In particular all of the 2.x Concerto syntax remains valid in 3.0. A migration guide is available in the Concerto Documentation.

A full list of changes is available in the release notes.

1.  Versioned Model Dependencies. As common model definitions evolve, it becomes increasingly important that you can trust them. In Concerto v3, your model definitions can now state a dependency on an explicit version of another model. This gives you reassurance that you’ll continue to get a version of a model with known semantics. [3]

Model version declarations are currently optional, but will be made mandatory in a future major release. You can enforce this behaviour today by using strict mode.

2.   Compatibility Detection. The new concerto-analysis package provides tools for comparing two versions of a model file. This helps you to protect your users when your model changes by ensuring backwards compatibility. This is exposed in the new concerto compare command.

3. Command Line Tool Enhancements.  The Concerto command line tool  has been extended to expose more of the Concerto API. This makes it more useful for offline, batch, and CI/CD processes.

3. .NET EnhancementsThe csharp target for the concerto-tools package has been greatly enhanced to allow for reliable code-generation of C# from Concerto models. There is also a prototype concerto-dotnet project  which provides native Concerto language support for the .NET platform. Today this includes the Concerto metamodel as C# classes, and conversion tools between JSON and .NET objects.