Skip to content

Releases: Autodesk/AutomaticComponentToolkit

Version 1.6.0: Component-Injection and Shared Ownership

05 Aug 14:51
Compare
Choose a tag to compare

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.
  • ACT now supports shared ownership of class instances between implementation and bindings:
    Components now MUST define an acquiremethod, 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 the importcomponent-element and injectionmethod-attribute in the outer component and the symbollookupmethod-attribute in the inner (injected) component. These features are OPTIONAL.
    See the Injection-example for details.

  • ACT now offers the optionalclass-parameter type:
    The optionalclass-type for parameters behaves just like class, however, this instance may be empty, or null. A use case for optionalclass 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

09 Jul 08:38
Compare
Choose a tag to compare

This is release candidate 1 for ACT v1.6.0. It has been deprecated.

Version 1.5.0: Overhauling C-based languages

10 Apr 09:56
ba20316
Compare
Choose a tag to compare

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.

-- DEPRECATED -- Version 1.5.0-RC2: Overhaul of C-based languages

05 Apr 11:14
Compare
Choose a tag to compare

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

01 Apr 08:36
82b03e1
Compare
Choose a tag to compare

This is release candidate 1 for ACT v1.5.0. It has been deprecated.

Version 1.4.0: Nested Namespaces in C++

11 Jan 10:08
82b03e1
Compare
Choose a tag to compare
Pre-release

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 structs in Pascal implementation and bindings
    • fixed raising of exceptions in Pascal implementation
    • fixed generation of Python example code

Version 1.3.2: Improvements to bindings

12 Dec 14:55
Compare
Choose a tag to compare
Pre-release

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

12 Dec 14:53
Compare
Choose a tag to compare
Pre-release

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

12 Dec 14:51
Compare
Choose a tag to compare
Version 1.3.0 Pre-release
Pre-release

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 of std::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

12 Dec 14:48
Compare
Choose a tag to compare
Pre-release

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