Releases: heremaps/gluecodium
Releases · heremaps/gluecodium
Release list
Release version 14.1.1 (#1804)
- C++: fixed a bug related to redundant 'using' statements generation for derived classes. We generate using statment to avoid warning/error related to method shadowing, when base and derived classes have method overload with the same name.
Release version 14.1.0 (#1802)
- Kotlin: use
@JvmSyntheticannotation for Kotlin internal elements whenever possible to hide them from Java code. - Kotlin: allow the usage of 'RequiresOptIn' and 'OptIn' annotations for internal API via CLI parameters. This way error is generated when the code, which is not intended to access the internal API uses it. Three new CLI parameters are available: 'androidrequiresoptinannotation', 'androidoptinannotation' and 'androidinternalapiannotationname'.
- Kotlin: for external types usage in Kotlin, use 'internal' keyword for the types, which are generated by Gluecodium as their 'internal' representation.
- Kotlin: minimize the usage of 'JvmSuppressWildcards' annotation for collection parameters. This annotation was used for all generated collection types. It needs to be used only when collection type holds enumeration or open type e.g.: 'open class', 'interface' or 'fun interface'.
- Kotlin: raise error when '@internal' elements are defined in interfaces. Kotlin language does not allow usage of 'internal' keyword in interfaces. We need to raise an error, because there is no valid way of generating such code.
- Kotlin: make the 'Impl' classes private. Such classes are used to represent C++ implementation of interface/lambda in Kotlin and they should not be accessed by the users. Only JNI layer should access such types.
- Kotlin: always handle static properties as get/set pair. Moreover, disallow internal static properties/functions in LimeInterface elements.
Release version 14.0.0 (#1787)
- Kotlin: Warning -- breaking change! The getters of seconds and nanoseconds in Duration class are replaced with read-only properties.
Release version 13.20.0 (#1785)
Features:
- Kotlin: interfaces are now generated as functional interfaces whenever it is possible.
- Kotlin: static properties of classes can be now accessed also via static getter and setter generated as extension function.
- Kotlin: generated collection types are immutable.
Release version 13.19.0 (#1779)
Features:
- Kotlin: reintroduced handling of
@Internalannotation, which results in usage ofinternalkeyword.
Release version 13.18.0 (#1778)
Features:
- Dart/FFI: a new public function called
*_library_execute_callbacks_for_isolate_of_current_thread()is available to execute enqueued callbacks for the current thread. This can be used to implement platform event handlers, which need to wait until certain actions complete. If such handlers block the thread, then no callbacks can be executed -- this may lead to dead locks. The new function can be used together with polling to execute some Dart callbacks while the thread is waiting.
Bug-fixes:
- Dart/FFI: the bug related to entering isolate context after the given isolate is closed is solved for execution of Dart callbacks from C++. Since this release the callbacks queue manager received a new function, which checks if callbacks queue for given isolate is open and only in such case enters isolate context before executing a callback.
Release version 13.17.0 (#1776)
Features:
- Validation:
LimeLambdaValidatorclass is extended with new functionality to raise warning/error when parameters with default names are explicitly documented.
Bug-fixes:
- C++: the compilation error in generated C++ code for equatable structure with set of enumerations is fixed by adjusting the template specialization in
UnorderedSetHash.h. - Validation:
LimeValidatorUtils.needsDocumentationComment()function is extended to avoid raising warnings/errors when a given LimeElement is annotated as internal/skipped for each platform (Java, Kotlin, Swift, Dart).
Release version 13.16.0 (#1766)
Features:
- Dart: added support for type aliases (typedefs).
Bug-fixes:
- Dart: removed redundant white-spaces from rendered comments for constructors of structures. Adjusted the rendered comments to list parameters using bullet points to improve readability.
Release version 13.15.1 (#1763)
Bug-fixes:
- Kotlin: fixed warnings from the generated
NativeBase.ktfile related to redundant imports. Fixed warnings related to usage of!!operator on non-nullable type in the generated code related to serialization. - Kotlin: implemented proper handling of custom platform names for accessors of properties. Before this release the generated JNI symbol did not match the signature generated by Kotlin compiler when custom name was used. The problem is fixed via usage of
@JvmName()for getters and setters. - Validation: the attributes mismatch validator for Kotlin and Java attributes takes into account also accessors of properties and function parameters. Before this release such problems were not reported.
- CMake: fixed the problem with regeneration of files when
GLUECODIUM_FORCE_USAGE_OF_JNI_FROM_JAVA_GENERATORwas set. Before this release files were regenerated even if they did not need to be regenerated.
Release version 13.15.0 (#1756)
Features
- CMake: the limitation which disallowed generating both
androidandandroid-kotlinvia CMake is lifted viaGLUECODIUM_FORCE_USAGE_OF_JNI_FROM_JAVA_GENERATOR.
When the new optional property is set totrue, then usage of both generators is allowed. However, the generated Kotlin code uses JNI layer generated by Java generator.
Therefore, it is crucial to ensure that LIME model for both Java and Kotlin is same -- that's responsibility of the user. - Validation: the warnings related to android attributes mismatch, which are enabled via
-enableandroidattributesmismatchwarningcan be treated as errors viawerror=AndroidAttributesMismatch.
Bug fixes:
- Kotlin: fixed bug related to redundant generation of properties in
Implclass for nested lambda.
Prior to this fix the properties were duplicated and caused compilation problems. - Kotlin: added
@JvmFieldannotation tovaluefield of generated enumerations. Without that annotation
the field had to be accessed via getter when Kotlin code was consumed by Java.