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 anerrormethod
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 theglobal
-section.
Note: This resolves the previously unmotivated/undefinedclass="BaseClass"
in thereleasemethod
s 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::CTheClass
instead ofNameSpace::CNameSpaceTheClass
(the old behavior can be resurrected by setting theclassidentifier
-attribute of the CPP-implementation to equal thenamespace
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 class
es). - A scalar type
pointer
has 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
const
andnoexcept
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
- Fix
Hint: the tutorial has been updated to work with v1.5.0.