1.1 Pre-Releases

1.1.0-beta.7 (25/11/2021)

New features:

  • Reachability counterexamples have been improved to also show the reachability data in a tabular form, alongside the state diagram view.

Improvements:

  • Coco’s gmock_helpers.h header now includes some additional matchers to assist with matching values of type coco::optional or coco::expected, making it easier to construct gMock-based tests.
  • The Coco generated mocks now expose the normally protected port fields (e.g. for a required port r, the field would be called r_) to allow the send_ methods to be directly accessed to ease construction of asynchronous mocks.
  • The Java API can now override the path to the license file, allowing for easier integration with CI pipelines.

Bug fixes:

  • Fixes a case where the generated code would mistakenly elide sub-expressions with side effects when using the Result.discard function.
  • Fixes a crash when generating code that uses Result.value in certain combinations.
  • Fixes a crash when running Eclipse for more than 24 hours whilst using the remote verification.
  • Fixes a crash when typechecking files that used implicit member expressions on values of type Signal where the signals had parameters.
  • Fixes an issue that would cause text to be incorrectly sized on the architecture, state, and counterexample diagrams on Linux.

1.1.0-beta.6 (05/11/2021)

  • A new state machine structure viewer has been added to the Coco plugin for Eclipse. This provides an easy way to see a summary of which events are allowed in which states. This is only an initial release and more features will follow.
  • Functions marked with @noSideEffects can now be used inside state invariants.
  • The command-line output now includes a summary of how many errors were encountered.
  • Added support for using COCOTEC_AUTH_TOKEN together with the coco binary to directly invoke Coco using a machine authentication token.
  • Fixes a problem where incorrect include extensions would be created when generating code.
  • Fixes an issue with sizing the swimlane columns in the counterexample viewer on Linux.
  • Fixes an issue that prevented using coco --no-license-server with an on-premise license token.

1.1.0-beta.5 (27/10/2021)

  • This release includes several improvements to the architecture diagram:
    • Highly-connected ports are now shown as references rather than edges.
    • Comments from declarations are now shown in the tooltips when hovering over a node.
    • Performance on large diagrams has been improved.
  • Added generator.cpp.componentStyle to provide an additional mode for generating C++ code for components that is designed to improve compilation times on large components by generating code using a pImpl-like pattern.
  • Fixes a case where Coco would incorrectly allow components that used _ inside implicit member expressions.
  • Fixes a case where some unusual architectures were incorrectly allowed with missing setAccess calls.

1.1.0-beta.4 (30/09/2021)

  • Added support for converting States to String via Cast: e.g. nextState as String.
  • Fixes a crash when viewing counterexamples where the provided port events include a return with an enum.

1.1.0-beta.3 (26/09/2021)

Bug fixes:

  • Fixes a case where the C generator would generate uncompilable C code when passing a Slot<T> to a function of type &out T.
  • Fixes a case where the C generator would generate uncompilable C code when dereferencing via multiple fields (e.g. x.y.z).

1.1.0-beta.2 (23/09/2021)

New features:

  • Member functions inside external types, structs, and enums can now use the binaryOperator, implicitCast, and unaryOperator attributes.
  • Member functions on external types, enums and structs can now be nondeterministic.

Improvements:

  • Non-verified fields of structs can now be referenced without preventing verification.
  • The C generator now supports struct literals and range.

Bug fixes:

  • Fixes a case where the typechecker would fail, but no diagnostics would be reported.
  • Fixes a case where the verification would report an internal error when a function inside a state machine returns a value that is then immediately implicitly cast.
  • Fixes a case where vals of type Bounded would not have their bounds checked on initialisation.
  • Fixes a bug where the support bundle command would incorrectly mangle the names of modules.

1.1.0-beta.1 (20/09/2021)

New features:

  • Static constants can now be defined in states, structs, enums, ports and components. For example:

    port Driver {
      static val kInitialized : Int = 10
    }
    
  • The C generator has undergone major improvements and now supports far more of Coco.

Improvements:

  • Defaulted type parameters are now correctly applied when looking up static constants. For example, given struct S<T = Int> {}, then S.x will look for static members in S<Int>.