Releases: Autodesk/AutomaticComponentToolkit
Version 1.6.0: Component-Injection and Shared Ownership
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.
- 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
-
ACT now supports shared ownership of class instances between implementation and bindings:
Components now MUST define anacquiremethod
, 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 theimportcomponent
-element andinjectionmethod
-attribute in the outer component and thesymbollookupmethod
-attribute in the inner (injected) component. These features are OPTIONAL.
See the Injection-example for details. -
ACT now offers the
optionalclass
-parameter type:
Theoptionalclass
-type for parameters behaves just likeclass
, however, this instance may be empty, or null. A use case foroptionalclass
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.
Version 1.6.0-RC1: Component-Injection and Shared Ownership
This is release candidate 1 for ACT v1.6.0. It has been deprecated.
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.
-- DEPRECATED -- Version 1.5.0-RC2: Overhaul of C-based languages
This is release candidate 2 for ACT v1.5.0. It has been deprecated.
-- DEPRECATED -- Version 1.5.0-RC1: Overhaul of C-based languages
This is release candidate 1 for ACT v1.5.0. It has been deprecated.
Version 1.4.0: Nested Namespaces in C++
Changes compared to version 1.3.2:
boolean
values are now specified (and implemented) as 8 bit values in the C89-layer of the hourglass- C++ implementation now uses a nested namespace
SomeNameSpace::Impl
to avoid potential namespace clashes with the C++ binding - Bugfixes:
- added missing
inline
specifier in dynamic C++ bindings - fixed
struct
s in Pascal implementation and bindings - fixed raising of exceptions in Pascal implementation
- fixed generation of Python example code
- added missing
Version 1.3.2: Improvements to bindings
Changes compared to version 1.3.1:
- Improve NodeJS- and Golang-bindings (arrays, minor other improvements)
- Fixes to Python- and Pascal-bindings
- C++-dynamic bindings now separate definition from declaration (within header)
Version 1.3.1: Bugfixes
Changes compared to version 1.3.0:
- Fixed missing function-types in Pascal implementation and binding
- ACT now checks the parents of classes
- ACT now writes out a license file according to the license in the IDL-XML
Version 1.3.0
Changes compared to version 1.2.4:
- C++ bindings and implementation now use fixed size integers
- Arrays now use uint64 to encode their length
- Exceptions in C++ binding and implementation are now derived from
std::exception
instead ofstd::runtime_error
- ACT can now generate diffs between IDL-xmls via the
-d
switch - the generated shared libraries on Unix export fewer symbols now
- A linux build script was added, build scripts now live in the folder Build
- Minor bugfixes in all bindings
- C++ implementation now supports the indentation attribute
- repository has been prepared for open source migration
Version 1.2.4: Pascal Implementation
Changes compared to version 1.2.0:
- Pascal Implementation stubs can now be generated (nearly feature complete)
- All autogenerated files now contain the version of ACT in their heading comment.
- Add dynamic loading of libraries in C/Cpp Dynamic under UNIX
- Other minor bugfixes and improvements to other bindings and CPP-implementation.
- Internal refactoring of indentation-handling