Version 1.5.0: Overhauling C-based languages
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.
- 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
- 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 anerrormethodnow (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 theglobal-section.
Note: This resolves the previously unmotivated/undefinedclass="BaseClass"in thereleasemethods 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-, andfunctionpointer-definitions do not contain the NameSpace anymore. E.g. a<class name="TheClass"> ...is now calledNameSpace::CTheClassinstead ofNameSpace::CNameSpaceTheClass(the old behavior can be resurrected by setting theclassidentifier-attribute of the CPP-implementation to equal thenamespaceof 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
pointerhas been introduced (you do not have to use "uint64" for addresses anymore). It maps to avoid*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 bytype="class"(type="handle"still works). - The NodeJS-bindings have been heavily improved.
- C#-bindings have been added (experimental).
- Bugfixes:
- Fix
constandnoexceptspecifiers in C++ exceptions - Fix python
structin parameter - Replace
WIN32with_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
- Fix
Hint: the tutorial has been updated to work with v1.5.0.