Skip to content

Version 1.5.0: Overhauling C-based languages

Compare
Choose a tag to compare
@martinweismann martinweismann released this 10 Apr 09:56
· 2 commits to master since this release
ba20316

Changes compared to version 1.4.0:

  • Upgrading an existing (pre v1.5-)ACT component to use v1.5.0 does not require a major version increment of that component:
    • The binaries created with ACT-v1.5.0 are binary compatible to binaries that have been created with ACT-v1.4.0. Since v1.5.0 requires to provide an errormethod (see below), the minor version of the ACT-v1.5.0-binary must be increased compared to the ACT-v1.4.0-component.
    • Most bindings (esp. the C++) created with ACT-v1.5.0 differ substantially from the ones generated with ACT-v1.4.0. Consumers will have to adapt their code.
  • Added Error Propagation:
    The error messages of internal exceptions in both C++ and Pascal-implementation are now translated into native error messages of exceptions in most binding languages. Implementers MUST implement an errormethod now (see global section).
  • The C++-binding is now header-only, too, and its usage is nearly identical to the C++-dynamic header.
  • All classes are now derived from a common base class. This base class MUST be explicitly specified via the baseclassname-attribute in the global-section.
    Note: This resolves the previously unmotivated/undefined class="BaseClass" in the releasemethods signature.
  • C++- and Python-Bindings and the C++-Implementation now make more use of namespaces. The main change is that the names of class-, enum-, struct-, and functionpointer-definitions do not contain the NameSpace anymore. E.g. a <class name="TheClass"> ... is now called NameSpace::CTheClass instead of NameSpace::CNameSpaceTheClass (the old behavior can be resurrected by setting the classidentifier-attribute of the CPP-implementation to equal the namespace of the component.
  • The C++-bindings and -Implementation now describe the thin-layer of the API using C++ terms for the simple types (e.g. enum classes).
  • A scalar type pointer has been introduced (you do not have to use "uint64" for addresses anymore). It maps to a void* in C++ world. (with all the ramifications that come with that, e.g. 64/32bit dependence)
  • ACT components now contain prerelease- and build-information according to https://semver.org/#spec-item-9 .
  • The type="handle" has been replaced by type="class" (type="handle" still works).
  • The NodeJS-bindings have been heavily improved.
  • C#-bindings have been added (experimental).
  • Bugfixes:
    • Fix const and noexcept specifiers in C++ exceptions
    • Fix python struct in parameter
    • Replace WIN32 with _WIN32
    • Parsing the IDL file is now more verbose and informative if errors arise
    • Fix circular dependency in Pascal implementation
    • Fix boolean return and out-values in Pascal bindings

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