- Move BuiltinOptionals.swift into correct source set
Release date: 2020-01-21
- Allow renaming JNI_OnLoad via define.
- Enable CMake modules for use of Gluecodium in multiple targets.
- Fixed Swift compilation issue for lambdas with parameters of class or interface types.
- Fixed compilation issue for Optional.h header on Windows.
Release date: 2020-01-16
- Fixed Swift compilation issue for constructor comments of structs with multiline field comments.
Release date: 2020-01-06
- Added "auxiliary sources" option to support IDL sources that are loaded into the model but are not generated from.
Release date: 2019-12-16
- Fixed possible name clashes for array types in Swift.
Release date: 2019-12-04
- Added missing nullability annotations for lambdas in Java.
Release date: 2019-12-03
- Fixed Swift compilation issue for lambdas nested inside interfaces.
Release date: 2019-11-28
- Fixed Swift compilation issue for lambdas with
@Swift(Name)
.
Release date: 2019-11-26
- Fixed C++ compilation issue for
@Equatable
structs with@Cpp(Accessors)
attribute.
Release date: 2019-11-21
- Fixed C++ compilation issue for
@Equatable
structs withDate
type fields. - Fixed Java compilation issue for interfaces with same name in different packages.
- Removed "stdout" command line option.
Release date: 2019-11-13
- Gluecodium Gradle plugin now properly stops the build when Gluecodium code generation fails.
- Fixed C++ compilation issue where type declarations were not ordered correctly if an std::function<> typedef (lambda) was one of the types.
Release date: 2019-11-11
- Added validation against broken import statements in LimeIDL.
- Added support for
@Swift(Extension)
attribute for type collections (types
) in LimeIDL. - Any type can now be used as an error value type in an IDL exception declaration.
- Added support for
@Java(FunctionName)
attribute for lambdas in LimeIDL. - Added Gluecodium Gradle plugin.
Release date: 2019-10-25
- Added validation against broken documentation references.
- Set type fields are now supported in @Serializable structs.
- Characters '@', '{', '}', and '' can now be used in documentation comments, by being "escaped" with an additional backslash (i.e. '@', '{', '}', and '\' respectively).
- Updated JNI generated code to use smaller header files. This would improve re-build times of the generated Java/JNI code in case of small incremental changes to IDL files.
- Fixed a compilation issue with nested types and circular includes in C++.
- Fixed compilation issues with lambdas in Swift.
- Some types used in C++ signatures are now only forward-declared and are not #included anymore. They now have to be explicitly #included when used in manually written C++ code.
Release date: 2019-10-09
- Added support for lambda types in LimeIDL. Lambdas are generated as std::function<> in C++, as functional interfaces in Java, and as closures in Swift.
- Added support for initializing constants and fields of Map<> type.
- Allow Unicode white-space characters in LimeIDL.
- Renamed Genium to Gluecodium.
Release date: 2019-09-23
- Classes and interfaces can now be defined nested within other classes or interfaces in LimeIDL.
- Added support for initializing constants and fields of List<> and Set<> types.
Release date: 2019-09-17
- Allow
const&
return values for external C++ types.
Release date: 2019-09-17
- Fixed missing include for external classes in C++.
- Fixed external type checks for method overloads in C++.
Release date: 2019-09-13
- Added validation against ambiguous type references.
Release date: 2019-09-10
- Added support for
@Cpp(Accessors)
attribute for structs.
- Fixed C++ linking issue where Hash functions were not properly exported.
- Fixed Swift compilation issue for lists of nullable elements.
- The comment header warning "Automatically generated, do not change..." is no longer generated automatically. If needed it can be manually added at the end of the copyright header.
- Java exceptions are now named after LimeIDL exceptions by appending "Exception" suffix to the IDL name. The suffix can be adjusted with custom naming rules.
- Swift errors are now named after LimeIDL exceptions by appending "Error" suffix to the IDL name. The suffix can be adjusted with custom naming rules.
Release date: 2019-09-03
- Subclasses are now passed as their actual type from C++ to Java/Swift.
- Added compile-time validation for "external" types in C++.
- Added support for
open
visibility modifier in LimeIDL. - Genium options can now be loaded from file with "-options" command line parameter.
- Classes can now only inherit from other classes in LimeIDL if the "parent" class has
open
visibility modifier. - Classes are now generated with
final
qualifier in Java by default (unless marked asopen
in LimeIDL definition).
Release date: 2019-08-20
- Fixed Java compilation for top-level enumerations and structs.
Release date: 2019-08-16
- Fixed Swift compilation for top-level exceptions.
- Fixed Java and C++ compilation for top-level enumerations.
Release date: 2019-08-15
- Structured documentation comments for are now supported for function and property definitions.
- Auto-generated struct constructors can now be documented.
- Generate documentation for Java builders.
- Platform-specific documentation comments are now supported.
- Links to members from documentation comments of function parameters, return type, and throws clause now work correctly in C++, Java, and Swift.
- Type aliases to exception types now work correctly in C++, Java, and Swift.
- Multiple "external" type definitions pointing to the same C++ type now compile correctly.
Release date: 2019-08-07
- Structs, enumerations, exceptions and type aliases can now be declared at file level in LimeIDL.
{ get set }
declaration is now optional for properties in LimeIDL.- Java builders now enforce setting of all uninitialized fields by builder chaining.
std::hash
is now also used for typedefs to primitive types.- Fixed compilation for immutable equatable structs.
- Imports now work correctly for enumerator references in LimeIDL.
- Fixed Swift compilation for nested generic types (e.g. List<List>, etc.).
- Exception type documentation is now properly reflected in the generated code.
- Java builders fix the order of setting mandatory fields to the order in which they are defined.
Release date: 2019-07-31
- New input language: LimeIDL. See LimeIDL documentation for details.
- Hash functions are generated for all Equatable and PointerEquatable types in C++.
- Added support for Equatable and PointerEquatable types in sets and map keys.
- Fixed Swift 5 compilation warning.
- Franca FIDL/FDEPL input is no longer supported. See LimeIDL documentation for the migration guide.
- Generated Swift code requires Swift 5.
- EnumHash is renamed to hash in C++.
Release date: 2019-07-24
- Fixed validation for members of internal structs.
Release date: 2019-07-22
- Added LimeIDL generator to support migration to the new LimeIDL input language.
- Fixed documentation generation for getters in Java.
Release date: 2019-07-18
- Deprecation messages are now supported for most elements.
- Documentation references to
null
value are now replaced withnil
in Swift. - Constants of struct types are now supported.
- Allow referencing getters/setters explicitly in comment links.
- Improved method documentation generation.
- String, byte[] are now marked @NonNull consistently in Java.
- C++ default struct constructor zeros all non-defaulted elements now.
- Fix comment processing for setters.
- Struct constructors that initialize "internal" fields are now also "internal" (Java, Swift).
Release date: 2019-07-01
- Fixed compilation issues for Swift argument labels in protocols and structs.
Release date: 2019-06-26
- Platform-specific names are now supported for most elements.
Release date: 2019-06-21
- Fixed compilation issue for Return for types without default constructor.
Release date: 2019-06-19
- Custom name rules are now supported for Java and Swift.
- Java
@NonNull
and@Nullable
annotations are now configurable.
- Fixed compilation issue for empty defaulted C++ struct members.
- Fixed default values for struct fields with typedef type.
- Default constructor for a C++ struct is not generated if it has immutable non-defaulted fields.
- Android generator does not create
@NonNull
and@Nullable
annotations by default anymore, to get old behaviour pass command line options:-javanonnullannotation android.support.annotation.NonNull -javanullableannotation android.support.annotation.Nullable
Release date: 2019-06-12
- Custom name rules are now supported for C++.
Release date: 2019-06-11
- Fixed compilation issue for Java interface with
Internal=true
andIsInterface=true
Release date: 2019-06-06
- Members of internal structs are marked internal automatically
- Fixed compilation issue for Java when no EnumSet was generated
Release date: 2019-06-04
- Added support for equality and pointer equality comparisons for classes
- Added hash support for all equatable types for Swift and Java
- Added Set type support.
- Nullable boolean properties now have 'is' prefix consistently
Release date: 2019-05-23
- Added support for explicit "empty" default value for struct-type fields in structs.
Release date: 2019-05-21
- Constructors of generated exception types in Java are now public.
- Added support for structs with constants.
- Added explicit support for Builder pattern in Java.
- Added support for explicit "null" default value for nullable fields in structs.
- Added support for explicit "empty" default value for collection fields in structs.
- Builder pattern is no longer automatically generated for all structs in Java. It has to be enabled explicitly for individual structs now.
- Default constructors are no longer automatically generated for structs in Java unless explicit defaults were specified for all fields.
Release date: 2019-05-14
- Java comments are generated as JavaDoc HTML and links to classes and members are supported now.
- Links to members in Swift and C++ comments are now supported.
- Added support for structs with methods.
- Added support for custom constructors for structs.
Release date: 2019-05-06
- Fixed runtime issues caused by empty ByteBuffer in Swift.
- Fixed compilation issues caused by nullable ByteBuffer fields in Swift and Java.
- Common indentation of comments is stripped to preserve markdown indentation properly.
- Passing
null
to @NonNull String or ByteBuffer in Java now causes a NullPointerException.
- Added built-in Date type.
Release date: 2019-04-17
- Added a command line parameter to specify package for Genium-internal classes (e.g. NativeBase).
Release date: 2019-04-16
- Fixed compilation issues caused by deep nesting of immutable structs.
Release date: 2019-04-11
- Replaced
std::shared_ptr
withoptional
for Nullable types.
- Whitespace (including line breaks) is now preserved in the documentation comments.
- Fixed compilation issues caused by arrays of immutable structs.
- Fixed compilation issues caused by "external" types that are C++ templates.
- C++ internal namespace is now used as path for helper includes.
- Gradle dependencies are locked now.
- Added support for multiple includes for "External" types.
Release date: 2019-03-04
- Fixed an issue where headers containing only typedefs were not generated for C++
- Fixed default initialization of ByteBuffer fields for structs in Java.
- Fixed JNI type conversion for UInt8 and UInt16 types.
Release date: 2019-02-26
- Instance-type fields, parameters and attributes are now non-nullable by default.
- "NotNull" FDEPL property was removed as it is now the default behavior for all types.
- Added support for explicitly exporting library symbols.
- Fixed crash regarding UInt8 and UInt16 conversions on Android
Release date: 2019-02-21
- Fixed compilation issues for nullable Int32 struct fields in JNI.
- Fixed compilation issues for nullable unsigned integer struct fields in JNI.
- Fixed generated equality operator implementation for nullable struct fields in C++.
- Fixed compilation issues for immutable structs that are used inside other container types.
- Fixed leaking JNI local references.
Release date: 2019-02-12
- Fixed generation of documentation comments for constructors in Java and Swift.
- Updated JNI generated code to correctly throw OutOfMemoryError when appropriate.
- Fixed several issues with typedefs to Arrays and Maps in Swift.
Release date: 2019-02-11
- Fixed Swift compilation error for arrays nested multiple layers deep in arrays.
- Fixed crashes in Swift when holding static variables pointing to proxy objects.
- Fixed JNI crashes when mixing C++ and Java threads.
Release date: 2019-02-01
- Added generation of custom
std::error_category
for C++ error codes. - Swift enumerations now conform to CaseIterable protocol.
- Added "InternalSetter" FDEPL property for attributes.
- Added "Nullable" property support.
- Fixed potential memory leak while returning Swift proxies.
- Fixed the default value of String type Struct fields in Java to be an empty string.
- Fixed JNI warnings about "removing non-JNI local reference".
Release date: 2019-01-15
- Fixed constructor validation to not to disallow constructors overriding for child classes.
Release date: 2019-01-15
- Fixed run-time issues for throwing constructors in Java.
- Added validation against signature clashes between different constructors of the same class.
Release date: 2019-01-11
- Fixed compilation issues for constructors of child classes in Swift.
- Fixed compilation issues for constructors with Array parameters in Swift.
Release date: 2019-01-09
- Fixed compilation issues for constructors with parameters in Swift.
- Fixed compilation issues for throwing constructors in Swift and Java.
Release date: 2019-01-08
- FIDL types UInt8 and UInt16 are now generated as Short and Integer in Java.
- Added "Constructor" FDEPL property that marks methods for being generated as constructors/initializers in Java/Swift.
- Added "Static" FDEPL property support for attributes.
Release date: 2018-12-18
- "NaN" and "Infinity" can now be used as struct field FDEPL default values.
- Fixed Java crashes caused by JNI local reference table overflow.
Release date: 2018-12-11
- Listener callbacks that throw exceptions/errors are now fully supported in Java/Swift.
- "NotNull" FDEPL property can now be applied to attributes and method parameters.
Release date: 2018-12-05
- Fixed arrays of enum values in Swift so that they don't produce undefined behavior anymore.
- Fixed compilation issues for arrays of enums in Swift when the enum is marked as "ExternalType".
Release date: 2018-11-29
- Returning values from Swift or Java callbacks when these are called from C++ now works for all types. It also works for callbacks that are Swift properties.
- Method parameters and return values with instance type can now be marked with "NotNull" FDEPL property. This marks them as optional/non-optional in Swift or annotates them with @NonNull annotation in Java.
- Fixed documentation comments handling for Java interfaces and Swift protocols.
- Fixed several Cpp-Swift-Cpp object round-trip segfault issues.
- Naming a parameter-less method "release" does not produce un-compilable Swift code anymore.
Release date: 2018-11-16
- Added @NonNull annotation to generated Java methods returning a struct (only works with Android flavor of Java generated code).
- Returning instances from Java callbacks when these are called from C++ now works.
- Fixed an issue with passing "nil" as a value for Swift instances.
Release date: 2018-11-12
- Fixed an issue with returning instances from Swift callbacks when these are called from C++.
Release date: 2018-11-08
- Fixed handling of structs being passed as parameters to Swift listener callbacks.
Release date: 2018-11-08
- Removed support for Struct ihneritance.
- Boolean Swift properties now have their names prefixed with "is", in conformance with Swift API design guidelines.
- Swift functions returning structs are now returning them as non-optional.
- Added "Immutable" property support for C++.
- Fixed Java method overloads to avoid adding suffixes if only one List<> overload is present (the suffixes are still added if there are several List<> overloads).
- Fixed Java method overloads to add suffixes if there is an ambiguity caused by two or more Map<> overloads.
- Deprecated camel-case command line parameters were removed.
Release date: 2018-10-25
- Added FDEPL property "Immutable" for structs for generating structs that cannot be modified after creation. This property is supported for Java and Swift.
- Fixed behavior of default constructors for C++ structs that could leave some fields uninitialized in some cases.
Release date: 2018-10-18
- Generated Swift code now fully supports Swift 4.2. It is not compatible with Swift 4.1 anymore.
- "Equatable" FDEPL property for structs is now fully supported in Swift.
- C++ structs are now generated with convenience constructors.
- Fixed array fields handling for "Equatable" structs in Swift.
- Fixed a threading issue for calling back into Java from C++ code.
Release date: 2018-10-10
- Fixed incorrect handling of "--copyright-header" command line parameter.
Release date: 2018-10-10
- Added "-stdout" command line parameter. This parameter enables echoing of the generated code into std::out console output.
- "-nostdout" command line parameter is deprecated. It will be removed in a future release. The behavior of not echoing generated code into std::out is the default behavior now.
- Camel-case command line parameters were renamed to shorter names without camel-case. The old names are deprecated. The old names will be removed in a future release.
- "-listGenerators" command line parameter was removed. All available generators are listed in the help message for "generator" parameter. Use "-help" to view the help message for all Genium command line parameters.
Release date: 2018-10-08
- Added FDEPL property "Equatable" for structs for generating the equality support infrastructure in C++ and Java (Swift is only partially supported).
- Fixed an issue where a Swift-implemented object was not castable to its original type after a Swift-Cpp-Swift round-trip in some cases.
- Fixed an issue where a Java-implemented object was not castable to its original type after a Java-Cpp-Java round-trip in all cases.
Release date: 2018-09-06
- Added support for "ExternalType" and "ExternalName" FDEPL properties for interfaces. Added support for "ExternalGetter" and "ExternalSetter" FDEPL properties for attributes in such interfaces.
- Fixed handling of nested namespaces in C++.
Release date: 2018-08-20
- Moved "External*" FDEPL properties from "GeniumExtensions" FDEPL specification into a dedicated FDEPL specification "ExternalTypes".
- Fixed instance-type attributes in Swift to be generated as properties with an optional type.
- Added FDEPL property "ObjcInterface" for enabling bridging generated Swift code with Objective-C code. For interfaces marked as such their corresponding Swift classes (and protocols) are generated with @objcMembers annotation (@objc for protocols), enabling the usage of these types and their members from Objective-C.
Release date: 2018-08-13
- Getter methods for attributes are generated as "const" in C++ now.
Release date: 2018-08-09
- Type names for structs and enumerations marked with "ExternalType", as well as the names for their child elements (fields and enumerators, respectively) are now used verbatim in generated C++ and conversion code.
- The Genium class can be instantiated directly now and serves as a high-level entry point for
- The Gluecodium class can be instantiated directly now and serves as a high-level entry point for usage as a library.
Release date: 2018-07-24
- Added support for "ExternalType" and "ExternalName" FDEPL properties for enumerations.
Release date: 2018-07-19
- Generated functions returning optional "String?" in Swift are now returning a non-optional "String" instead.
- Function parameters of "instance" types in generated Swift code are now using optional types.
Release date: 2018-05-23
- Fixed integer constants in Java to be generated with "L" suffix when needed.
Release date: 2018-05-23
- Added generation of simple constants in C++, Java, and Swift. Supported types for constants are: Boolean, string, enumeration, and all numeric types.
Release date: 2018-05-18
- Exceptions are now error-enum specific and are generated as nested classes (nested on the same level as the corresponding error-enums).
- Fixed runtime crash in case of non-unique error-enum names inside the same package.
Release date: 2018-05-07
- Fixed handling of Java constants to generate those as "public".
Release date: 2018-05-02
- Fixed package names with "_" underscore in Java/JNI.
Release date: 2018-04-25
- Added generation of is_error_code_enum<> type trait for error enums in C++. This way they can be passed to std::error_code() constructor directly, without any additional static casts.
Release date: 2018-04-25
- Added FDEPL properties "ExternalGetter" and "ExternalSetter" for enabling the usage of accessor methods as a JNI/CBridge data source for struct fields of a struct marked with "ExternalType".
- Added FDEPL property "ExternalName" for "renaming" struct types marked with "ExternalType" in C++, i.e. allowing the C++ name to differ from what is specified in the FIDL file.
Release date: 2018-04-20
- Fixed name collisions in Swift generated code.
Release date: 2018-04-13
- Renamed Transpiler to Genium.
- Added FDEPL property "ExternalType" for marking struct types as "external" in C++ and providing a path to a pre-existing C++ header file for that struct type.
Release date: 2018-03-29
- Fixed missing HERE license for artifactory publish
Release date: 2018-03-27
- Added FDEPL flag "NotNull" for marking instance type fields as optional/non-optional in Swift or annotating them with @NonNull annotation in Java.
Release date: 2018-03-23
- Added FDEPL flag "Internal" for marking classes, methods and fields as "internal" in Swift or package-private in Java.
- Fixed compilation issues for Maps with Enums as keys in iOS generator when a non-default value is specified for "C++ internal namespace" command line parameter.
Release date: 2018-03-21
- Add support for Maps for iOS generator
- Add support for Maps for Android generator
Release date: 2018-03-07
- Fixed Parcelable deserialization for structs and arrays.
Release date: 2018-03-05
- Names for getter functions for Boolean attributes are now named with "is" instead of "get".
- Fixed JNI local references leak for struct fields of String type.
Release date: 2018-02-28
- Fixed JNI type conversion for foreign packages.
Release date: 2018-02-27
- Use std::error_code for error codes
- Renaming navigation.BaseApiSpec to TranspilerExtensions which should be imported with: import "classpath:/TranspilerExtensions.fdepl" instead of: import "classpath:/franca/spec/BaseApiSpec.fdepl"
Release date: 2018-02-19
- Use uint32_t as ErrorCode
- EnumHash moved to ::transpiler namespace
- Add support for Interface Inheritance for iOS generator
Release date: 2018-02-14
- Instances in Swift structures made optional
- Add support for Interface Inheritance for Android generator
- Add support for caching in Transpiler
- Add support for Parcelable structs
Release date: 2018-02-13
- Fixed circular dependency compilation issues for C++
Release date: 2018-01-26
- Fixed compilation error for arrays in Swift generated code
Release date: 2018-01-25
- Removed validation against multiple output parameters
Release date: 2018-01-24
- Add validation against multiple output parameters. No support for this feature is planned.
- Add validation against unions. No support for this feature is planned.
- Add support for Interface Inheritance for C++ Base API generator
- Add support for comments for all generators (Base API, Android, Swift)
Release date: 2018-01-15
- Android fields of structs declared within interfaces cannot be instantiated
- Swift struct that contain interfaces will cause premature memory release
Release date: 2018-05-09
- Add support for Struct Inheritance to iOS generators
- Add support for Default values to iOS generators
Release date: 2018-05-08 Bumping version to 1.0.0 to mark Q4 2017 feature completeness
Release date: 2017-12-18
- Add support for Errors to iOS generators
Release date: 2017-12-14
- Add support for Default values to C++ Base API generators
- Add support for Default values to Java generators
Release date: 2017-12-11
- Add support for Struct Inheritance to Java generators
- Add support for Errors to Java generators
Release date: 2017-11-27
- Add support for Listeners to Swift generators
- Add support for Errors to C++ Base API generators
Release date: 2017-11-24
- Add support for Arrays to Android generators
Release date: 2017-11-22
- Add support for Arrays to iOS generators
- Add support for 'isInterface' flag in the fdepl files.
Release date: 2017-11-10
- Add support for Enums to Android generators
- Add support for Listeners to Android generators
- Add support for Attributes to iOS generators
Release date: 2017-10-19
- Add support for Attributes to Android generators
- Add support for Enums to iOS generators
- Add support for TypeDefs to Android generators
- Add support for TypeDefs to iOS generators
- Add support for Listeners to base Api generators
Release date: 2017-10-10
- Add support for Instances to iOS generators
- Add support for Instances to Android generators
- Add support for Attributes to base Api generators
Release date: 2017-09-22
- Add support for Plain Data Structures to iOS generators
- Add support for Instances to base Api generators
Release date: 2017-09-18
- Change BaseApiGeneratorSuite name to "cpp"
- Remove 'Stub' suffix from generated base_api classes
- Generate virtual destructor in C++
- Throw Transpiler exception for malformed .fdepl
- Implement struct inheritance for C++ generator
- Adds inheritance from NativeBase to non-POD, non-factory classes
- Adds instance support to java generator
- Add support for structs as function parameters
- Add support for referencing Map<> types in C++
- Enable mapping of non-inline Arrays for Cpp
- Implement unions for C++ generator
- Remove Xtend dependency
- Bugfix for order of 'get_pointer' helper in CBridge
- Fix for template generating struct internal constructor
- Bugfix - Remove stub prefix and change to cpp
- Fix cpp type mapper instance referencing
- Fix handling of xxxRef in cBridge
Release date: 2017-08-29
Release date: 2017-07-03