Skip to content

Version 1.6.0: Component-Injection and Shared Ownership

Latest
Compare
Choose a tag to compare
@martinweismann martinweismann released this 05 Aug 14:51

Changes compared to version 1.5.0:

  • Upgrading an existing (pre v1.6-)ACT component to use v1.6.0 does not require a major version increment of that component:

    • The binaries created with ACT-v1.6.0 are binary compatible to binaries that have been created with ACT-v1.5.0. Since v1.6.0 requires to provide an acquiremethod (see below), the minor version of the ACT-v1.6.0-binary must be increased compared to the ACT-v1.5.0-component.
  • ACT now supports shared ownership of class instances between implementation and bindings:
    Components now MUST define an acquiremethod, which acquires shared ownership of an instance.

    See the Injection-example for details.

  • ACT now allows components to be injected at runtime into other components.
    This is specified via the importcomponent-element and injectionmethod-attribute in the outer component and the symbollookupmethod-attribute in the inner (injected) component. These features are OPTIONAL.
    See the Injection-example for details.

  • ACT now offers the optionalclass-parameter type:
    The optionalclass-type for parameters behaves just like class, however, this instance may be empty, or null. A use case for optionalclass is e.g. a "findElementByName"-method of a list, which might or might not return a class instance.

    See the example of optionalclass for details.

  • Minor improvements and bugfixes:

    • Go-bindings have been substantially improved
    • Fix C#-return values
    • Fix go-out-strings
    • ACT now avoids warnings (size_t and C4250)
    • The memory footprint of C++-error-handling has been reduced to 8 byte per class instance (vs. 32 byte before)
    • C++: strings are now passed through the interface explicitly as null-terminated strings.
    • C++-types are used more consistently
    • ACT now checks special method signatures early in the generation-process
    • Autogenerated C++-Bindings+Implementations now also work if BaseName != NameSpace

Hint: the tutorial has been updated to work with v1.6.0.