[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[ANN] Dezyne 2.17.0 released

From: Janneke Nieuwenhuizen
Subject: [ANN] Dezyne 2.17.0 released
Date: Mon, 23 Jan 2023 14:00:01 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)

We are happy to announce Dezyne 2.17 which introduces implicit interface

* About

Dezyne[0] is a programming language and a set of tools to specify,
validate, verify, simulate, document, and implement concurrent control

The Dezyne language has formal semantics expressed in mCRL2[1] developed
at the department of Mathematics and Computer Science of the Eindhoven
University of Technology (TUE[2]).  Dezyne requires that every model is
finite, deterministic and free of deadlocks, livelocks, and contract
violations.  This achieved by means of the language itself as well as by
builtin verification through model checking.  This allows the
construction of complex systems by assembling independently verified

* Summary

Before 2.17.0, for a component to be compliant with its provides
interface(s), implementing a component required meticulously specifying
the same behavior in the component as in the provides interface;
therefore the code from the interface is often repeated in the

Now the provides interface(s) are implicitly applied as
a constraint on the component behavior.  This means that anything
disallowed by the interface, i.e., explicitly or implicitly marked as
`illegal', is implicitly marked as `illegal' in the component

Also in this release: An unreachable code check, generalized integer
expressions, and a full rewrite of the language lookup mechanism fixing
some long standing namespace bugs.

The dzn.async ports feature---which proved not to be composable---has
been removed.

See also the documentation <>.

We will evaluate your reports and track them via the Gitlab
dezyne-issues project[3], see our guide to writing helpful bug

* What's next?

In the next releases we like to see shared interface state and
verification with system scope for automatically exploring possible
traces in a system.

* Future

Looking beyond the next releases: Module-specifications and
data-interfaces.  Hierarchical behaviors.  Support for Module Based

The Dezyne developers.

* Download

  git clone git://

Here are the compressed sources and a GPG detached signature[*]:

Here are the SHA1 and SHA256 checksums:

  ca074ffe6ceab64c49d74af21ceee7f8a7adcc4f  dezyne-2.17.0.tar.gz

[*] Use a .sig file to verify that the corresponding file (without the
.sig suffix) is intact.  First, be sure to download both the .sig file
and the corresponding tarball.  Then, run a command like this:

  gpg --verify dezyne-2.17.0.tar.gz.sig

If that command fails because you don't have the required public key,
then run this command to import it:

  gpg --keyserver --recv-keys 

and rerun the 'gpg --verify' command.

Alternatively, Dezyne can be installed using GNU Guix[5]:
  guix pull
  guix install dezyne


* Changes in 2.17.0 since 2.16.3
** Language
  - A component's behavior is now implicitly constrained by the behavior
    of its provides interfaces.
  - Unary minus is now supported in integer expressions.
  - Integer expressions have been generalized: It is no longer necessary
    to split a longer expression or to use parameters.
  - Support for `dzn.async' ports has been removed.
** Parser
  - A new transformation has been added: `tag-imperative-blocks'.
  - Reduced well-formedness checking overhead by about 50%.
  - The behavior of imported components is no longer checked for
  - Defining an event in an interface and not using it in its behavior is
    now reported as a well-formedness error.
** Verification
  - The verifier now checks for unreachable code.
  - As a result of the unreachable code check, two identical on
    statements are now reported as having an overlapping guard.
  - The verifier has a new option `-C,--no-constraint' to disable
    the constraining fo a component's behavior.
  - The verifier has a new option '-D,--non-non-compliance' to report a
    deadlock error instead of a non-compliance error.
  - The verifier has a new option `-U,--no-unreachable' to disable the
    unreachable code check.
  - The verifier has a new option `--jitty' to run `lps2ts' using
    `--rewriter=jittyc' for large models.
** Code
  - The performance of the code generators has been improved by skipping
    normalization of imported interfaces and components.
  - The generated C++ and its runtime now uses typed pointers instead of
    void pointers for component instances.
  - The C++ code generator now uses C++11 style enums, instead of struct
    scoped C style enums.
  - The return type of the enum to_string function has been changed from
    std::string to char const*.
  - The enum stream operator << has been templatized to allow
    overloading for character type and traits.
  - The C++ code generator no longer generates redundant enum string
    conversion functions.
  - The C++ code generator now places the foreign skeleton constructor
    into its own compilation unit.  This assures compilation with
    non-redundantly generated new style enums regardless of import
** Noteworthy bug fixes
  - Some longstanding bugs have been fixed in relation to
    + Extending nested namespaces in imports,
    + Referencing partially named identifiers,
    by a full rewrite of the lookup algorithm.
  - The C++ code generator now supports imported foreign components.
  - The C# code generator now supports foreign components returning a
    enum that is defined in an interface.
  - The experimental C code generator no longer generates duplicate enum
    string conversion functions.
  - The experimental C code generator now supports a foreign component at the
    top of a system.
  - The well-formedness check no longer crashes on a binary expression
    with a data constant.

* Links


Janneke Nieuwenhuizen <>  | GNU LilyPond
Freelance IT | AvatarĀ®

reply via email to

[Prev in Thread] Current Thread [Next in Thread]