Releases: Autodesk/AutomaticComponentToolkit
v1.8.0-alpha : Java Bindings and RTTI support
What's Changed to v1.6.0
Major
- Add Java bindings generation by @dabastynator in #81
- RTTI - Native Run-Time Type Information support by @martinweismann in #182
- Run-time type information support by @fsahmad in #141
Minor
- Build ACT for ARM 5 by @martinweismann in #76
- Enable res-file include for pascal impl by @dabastynator in #79
- Fix for #85: Improved default error handling in C++ Stub by @alexanderoster in #86
- Added Language String support for C++ implementation (Issue #83) by @alexanderoster in #84
- Added custom directories and suppression commands by @alexanderoster in #87
- Removed GetProcAddress static function by @alexanderoster in #89
- Out optionalclass is not generating valid code in C++ implementation. #101 by @alexanderoster in #111
- #101: Out optionalclass is not generating valid code in C++ implementation. by @alexanderoster in #114
- Added String Out fix for caching string calls by @alexanderoster in #88
- Cgo dynamic first test version by @alexanderoster in #121
- Format go bindings code by @qmuntal in #131
- Issue #134: Add ClassParam template to C++ headers by @alexanderoster in #135
- renamed GetHandle function in c++ header by @alexanderoster in #138
- Fix for #146: Empty Parent string is not taken into account in isStringOutClass by @alexanderoster in #147
- Remove unnecessary AbiHeader-file for CppDynamic by @martinweismann in #150
- Better error messages (develop) by @woodwan in #152
- Fix csharp callback issue. by @zpgit in #159
- Add comments for enums and errors by @zpgit in #160
- Fix codacy issue in cpp binding. by @zpgit in #161
- Make C# class public by @zpgit in #163
- Fix C4296 in bindingccpp by @martinweismann in #164
- Fix string cache compilation error by @martinweismann in #166
- Fix MacOS build script by @anpilog in #167
- Fix initialisation order warning by @anpilog in #165
- Do null check for C# pointer to avoid crash. by @zpgit in #172
- Add copyright for C# binding interface. by @zpgit in #171
- Make the C# object disposable by @zpgit in #179
- Add MacOS ARM build by @martinweismann in #180
- Allow struct predeclaration (develop) by @woodwan in #175
- Autogenerate Documentation with Sphinx by @martinweismann in #181
- wasmtime host and guest bindings by @martinweismann in #184
- Check for out of bounds memory access by @martinweismann in #185
- Automatically update when a reserved keyword is used as an enum in ACT (Python bindings) by @vijaiaeroastro in #207
- Update build.yml by @vijaiaeroastro in #210
- A PR to fix go bindings in ACT by @vijaiaeroastro in #211
- [cppbinding] classParam now keeps ownership of the shared_ptr for … by @3dJan in #212
New Contributors
- @qmuntal made their first contribution in #131
- @zpgit made their first contribution in #159
- @anpilog made their first contribution in #167
- @fsahmad made their first contribution in #141
- @vijaiaeroastro made their first contribution in #207
- @3dJan made their first contribution in #212
Full Changelog: v1.6.0...v1.8.0-alpha
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