| ## 0.14.2 |
| |
| - The name `factory` can now also be used in a method name without renaming. |
| - Throw when output folder contains non JNIgen files. Users with existing |
| package bindings will need to delete them once for it to start working. |
| - Added the ability to generate classes in Java SDK (`java.core`) module without |
| providing the class path. |
| - Added gradle support for new Flutter projects that use `build.gradle.kts` |
| instead of `build.gradle`. |
| - Fixed a bug where Kotlin suspend functions that returned nullable values were |
| generated incorrectly. |
| - Fixed a [bug](https://github.com/dart-lang/native/issues/2250) where classes |
| that inherited a generic without specifying all type parameters were not |
| generated. |
| - Added the ability to generate Kotlin stdlib classes without providing the |
| class path. |
| |
| ## 0.14.1 |
| |
| - Added support for generating matching Kotlin operators as Dart operators. |
| - Include the methods of the superinterfaces of a class or interface in the |
| bindings. |
| - Fix a bug where Kotlin suspendable functions that returned the result without |
| ever suspending would timeout in Dart. |
| - Retrieval of dependencies uses Gradle (`GradleTools`) in lieu of Maven |
| (`MavenTools`). |
| - Updated `bin\download_maven_jars.dart` to use `GradleTools`. |
| |
| ## 0.14.0 |
| |
| - Fixed a bug where the source parser would not have all of the type paremeters |
| of the types. |
| |
| ## 0.13.1 |
| |
| - Fixed a bug where Kotlin wildcards would crash the code generation. |
| - Support nullability annotations that are on Java elements like methods and |
| fields instead of directly on the return type or field type. |
| - Fixed a bug where enum values were generated as nullable. |
| - Fixed a bug where type arguments could be nullable when the top type of their |
| paramater was non-nullable. |
| |
| ## 0.13.0 |
| |
| - **Breaking Change**([#1516](https://github.com/dart-lang/native/issues/1516)): |
| Inner classes are now generated as `OuterClass$InnerClass`. |
| - **Breaking Change**([#1644](https://github.com/dart-lang/native/issues/1644)): |
| Generate null-safe Dart bindings for Java and Kotlin. |
| - Fixed a potential name collision when generating in multi-file mode. |
| - Added the ability to add user-defined visitors to config. Currently only |
| capable of excluding classes, methods, and fields. |
| - Add dependency override for `package:jni` instead of the path dependency. |
| |
| ## 0.12.2 |
| |
| - Now excludes invalid identifiers by default. |
| - Fixed a bug where if multiple jars have classes within the same package, only |
| one of them gets generated. |
| - Fixed a bug where it would be possible for a type class inference to fail. |
| - Improve the diagnostics when gradle fails when `bin/jnigen` is run. |
| |
| ## 0.12.1 |
| |
| - Support implementing generic functions in interfaces. |
| |
| ## 0.12.0 |
| |
| - **Breaking Change**([#1530](https://github.com/dart-lang/native/pull/1530)): |
| Changed the renaming strategy for method overloadings. Instead of adding a |
| numeric suffix, we add a dollar sign (`$`) and then the numeric suffix. This |
| is done to avoid name collision between methods that originally end with |
| numeric suffices and the renamed overloads. Similarly names that are Dart |
| keywords get a dollar sign suffix now. For more information, check out the |
| [documentation](https://github.com/dart-lang/native/tree/main/pkgs/jnigen/docs/java_differences.md#method-overloading). |
| - **Breaking Change**: Each single dollar sign is replaced with two dollar signs |
| in the identifier names. |
| - **Breaking Change**: Removed the `Impl` suffix from the generated |
| implemenation classes. So the implementation class for an interface named |
| `Foo` is now simply called `$Foo` instead of `$FooImpl`. |
| - **Breaking Change**: Renamed and made the typeclasses internal. |
| - **Breaking Change**: Relaxed the renaming rules to allow for more identifiers |
| to remain unchanged. |
| - Added `JImplementer` which enables building an object that implements multiple |
| Java interfaces. Each interface now has a static `implementIn` method that |
| takes a `JImplementer` and the implementation object. |
| - Added the ability to implement void-returning interface methods as listeners. |
| - Generating identifiers that start with an underscore (`_`) and making them |
| public by prepending a dollar sign. |
| - Fixed an issue where inheriting a generic class could generate incorrect code. |
| - No longer generating constructors for abstract classes. |
| - No longer generating `protected` elements. |
| - Fixed an issue where synthetic methods caused code generation to fail. |
| |
| ## 0.11.0 |
| |
| - No changes. Keep major version in sync with `package:jni`. |
| |
| ## 0.10.1 |
| |
| - Added backticks to code references in doc comments. |
| |
| ## 0.10.0 |
| |
| - Added support for Kotlin's top-level functions and fields. |
| - Used `package:dart_flutter_team_lints`. |
| |
| ## 0.9.3 |
| |
| - Fixed a bug where wrong argument types were generated for varargs. |
| - Fixed the macOS arm64 varargs issue caused by the previous release. |
| - Support throwing Java exceptions from Dart code. |
| ([#1209](https://github.com/dart-lang/native/issues/1209)) |
| |
| ## 0.9.2 |
| |
| - Fixed a bug where wrong argument types were generated for 32-bit |
| architectures. This temporarily breaks generated bindings for macOS arm64, |
| until the fix is cherry-picked on Dart stable. |
| |
| ## 0.9.1 |
| |
| - Fixed a bug in summarizer where standard output would use the default encoding |
| of the operating system and therefore breaking the UTF-8 decoding for some |
| locales. |
| |
| ## 0.9.0 |
| |
| - **Breaking Change** ([#660](https://github.com/dart-lang/native/issues/660)): |
| Removed C-based bindings. Now all bindings are Dart-only. |
| - Expanded constraint on `package:cli_config` to allow `^0.2.0`. |
| - Ignored `use_super_parameters` lint in generated files. |
| - Fixed a bug in summarizer and improved the display of errors. |
| |
| ## 0.8.0 |
| |
| - **Breaking Change** ([#981](https://github.com/dart-lang/native/issues/981)): |
| - `fromRef` is now `fromReference`, and it gets a `JReference` instead of a |
| `Pointer<Void>`. |
| - Check out the internal changes to `JObject` in |
| [`package:jni`'s changelog](https://github.com/dart-lang/native/blob/main/pkgs/jni/CHANGELOG.md#080-wip). |
| - **Breaking Change**: The generated impl class for interfaces is now an |
| `interface`. |
| - **Breaking Change** ([#792](https://github.com/dart-lang/native/issues/792)]): |
| `static final String` fields get converted to `JString` getters instead of |
| `static const String` fields in Dart. |
| - Fixed a bug where a package would either be searched from sources or classes |
| but not both. |
| - Fixed a bug where `<clinit>` (class initialization method) which is not |
| necessary to be exposed was generated. |
| |
| ## 0.7.0 |
| |
| - **Breaking Change** ([#563](https://github.com/dart-lang/native/issues/563)): |
| Added `JBuffer` and `JByteBuffer` classes as default classes for |
| `java.nio.Buffer` and `java.nio.ByteBuffer` respectively. |
| - **Breaking Change**: Made the type classes `final`. |
| - Added `ignore_for_file: lines_longer_than_80_chars` to the generated file |
| preamble. |
| - Added an explicit cast in generated `<Interface>.implement` code to allow |
| `dart analyze` to pass when `strict-casts` is set. |
| |
| ## 0.6.0 |
| |
| - **Breaking Change** ([#707](https://github.com/dart-lang/native/issues/707)): |
| Renamed `delete*` to `release*`. |
| - **Breaking Change** ([#585](https://github.com/dart-lang/native/issues/585)): |
| Renamed constructors from `ctor1`, `ctor2`, ... to `new1`, `new2`, ... |
| - **Breaking Change**: Specifying a class always pulls in nested classes by |
| default. If a nested class is specified in config, it will be an error. |
| - **Breaking Change**: Removed `suspend_fun_to_async` flag from the config. It's |
| now happening by default since we read the Kotlin's metadata and reliably |
| identify the `suspend fun`s. |
| - Fixed a bug where the nested classes would be generated incorrectly depending |
| on the backend used for generation. |
| - Fixed a bug where ASM backend would produce the incorrect parent for |
| multi-level nested classes. |
| - Fixed a bug where the backends would produce different descriptors for the |
| same method. |
| - Added `enable_experiment` option to config. |
| - Created an experiment called `interface_implementation` which creates a |
| `.implement` method for interfaces, so you can implement them using Dart. |
| - Save all `jnigen` logs to a file in `.dart_tool/jnigen/logs/`. This is useful |
| for debugging. |
| |
| ## 0.5.0 |
| |
| - **Breaking Change** ([#746](https://github.com/dart-lang/native/issues/746)): |
| Removed support for `importMap` in favor of the newly added interop mechanism |
| with importing yaml files. |
| - **Breaking Change** ([#746](https://github.com/dart-lang/native/issues/746)): |
| `java.util.Set`, `java.util.Map`, `java.util.List`, `java.util.Iterator` and |
| the boxed types like `java.lang.Integer`, `java.lang.Double`, ... will be |
| generated as their corresponding classes in `package:jni`. |
| - Strings now use UTF16. |
| |
| ## 0.4.0 |
| |
| - **Breaking Change** ([#705](https://github.com/dart-lang/native/issues/705)): |
| Type arguments are now named instead of positional. |
| - Type parameters can now be inferred when possible. |
| - Fixed a bug where passing a `long` argument truncated it to `int` in pure dart |
| bindings. |
| - Removed array extensions from the generated code. |
| - Added the ability to use source dependencies from Gradle. |
| - Fixed an issue with the field setter. |
| - Fixed an issue where exceptions were not properly thrown in pure Dart |
| bindings. |
| |
| ## 0.3.0 |
| |
| - Added the option to convert Kotlin `suspend fun` to Dart async methods. Add |
| `suspend_fun_to_async: true` to `jnigen.yaml`. |
| |
| ## 0.2.0 |
| |
| - Support generating bindings for generics. |
| |
| ## 0.1.1 |
| |
| - Windows support for running tests and examples on development machines. |
| |
| ## 0.1.0 |
| |
| - Initial version: Basic bindings generation, maven and android utilities |