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 typecoco::optional
orcoco::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 calledr_
) to allow thesend_
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 thecoco
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)¶
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
, andunaryOperator
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 typeBounded
would not have their bounds checked on initialisation. - Fixes a bug where the support bundle command would incorrectly mangle the names of modules.