| ## 20.0.0-wip |
| |
| - __Breaking change__: Refactor the Dart API a bit, to merge the `FfiGen` and |
| `Config` classes. Rename `FfiGen.run` to `.generate`, and make it an extension |
| method on the `Config` class. So `FfiGen().run(config)` becomes |
| `config.generate(logger)`. |
| - __Breaking change__: Minor breaking change in the way that ObjC interface |
| methods are generated. Interface methods are now generated as extension |
| methods instead of being part of the class. This shouldn't require any code |
| changes unless you are using `show` or `hide` when importing the interface. |
| - If you are using `show`/`hide` to show or hide a particular interface, eg |
| `Foo`, you'll now also need to show or hide `FooMethods`. |
| - Fix [a bug](https://github.com/dart-lang/native/issues/2419) where methods |
| copied from super types might not be renamed correctly. |
| |
| ## 19.1.0 |
| |
| - Bump minimum Dart version to 3.8.0. |
| - Format using `dart format` so that the formatter uses the target package's |
| Dart version and formatting options. |
| - Add `_` to the list of Dart keywords, since it has special meaning in newer |
| Dart versions. |
| - Update to the latest lints. |
| |
| ## 19.0.0 |
| |
| - Use package:objective_c 8.0.0. |
| - __Breaking change__: Major change to the way ObjC methods are code-genned. |
| Methods now use named parameters, making them more readable and closer to how |
| they're written in ObjC. For example, the `NSData` method |
| `dataWithBytes:length:` used to be generated as |
| `dataWithBytes_length_(Pointer<Void> bytes, int length)`, but is now generated |
| as `dataWithBytes(Pointer<Void> bytes, {required int length})`. Protocol |
| methods are not affected. |
| - Migration tip: A quick way to find affected methods is to search for `_(`. |
| - Make it easier for a downstream clone to change behavior of certain utils. |
| - Fix [a bug](https://github.com/dart-lang/native/issues/1268) where types could |
| occasionally show up as a generic ObjCObjectBase, when they were supposed to |
| be codegenned as a more specific interface types. |
| |
| ## 18.1.0 |
| |
| - Fix a clang warning in ObjC protocol generated bindings. |
| |
| ## 18.0.0 |
| |
| - Use package:objective_c 7.0.0. |
| - Add variable substitutions that can be used in the `headers.entry-points` to |
| locate Apple APIs: `$XCODE`, `$IOS_SDK`, and `$MACOS_SDK`. |
| - Add an empty constructor to all ObjC interfaces that have a `new` method, |
| which just calls that method. |
| - __Breaking change__: Change the `usrTypeMappings` field of `Config`'s factory |
| constructor from a `List<ImportedType>` to a `Map<String, ImportedType>`. |
| - Add a `keepIsolateAlive` parameter to the block and protocol constructors that |
| allows a block or protocol to keep its owner isolate alive. |
| - __Breaking change__: `keepIsolateAlive` defaults to true, so all existing ObjC |
| blocks and protocols now keep their isolates alive by default. |
| - Change how protocols are implemented to fix |
| [a bug](https://github.com/dart-lang/http/issues/1702), by removing all uses |
| of `NSProxy`. |
| - __Breaking change__: Change how duplicate identifiers are renamed to match |
| jnigen. The main change is that `$` is used as a delimiter now, to avoid |
| renamed identifiers from colliding with other identifiers. For example, `foo` |
| is renamed to `foo$1` if there's already a `foo` in the namespace. |
| - Fix [a bug](https://github.com/dart-lang/native/issues/1967) where blocking |
| blocks could deadlock if invoked from the Flutter UI thread. Note that this |
| relies on changes in Flutter that are currently only available in the main |
| channel. These changes will likely be released in Flutter 3.31.0. |
| |
| ## 17.0.0 |
| |
| - Use package:objective_c 6.0.0 |
| - Support transitive categories of built-in types: |
| https://github.com/dart-lang/native/issues/1820 |
| - __Breaking change__: Maintain protocol conformance when translating from ObjC |
| to Dart. For example, ObjC's `id<FooProtocol>` is now translated to Dart's |
| `FooProtocol`. Generally this shouldn't be a breaking change for code that is |
| using protocols correctly, with a few caveats: |
| - For more advanced use cases that use `ObjCProtocolBuilder` directly, after |
| calling `build()` you will need to cast the generated object to the target |
| protocol: `FooProtocol.castFrom(protocolBuilder.build())`. |
| - Due to limitations in the Dart type system, only the first protocol of an |
| `id` is used: `id<FooProtocol, BarProtocol>` becomes `FooProtocol`. The |
| `FooProtocol.castFrom` method can help work around issues this may cause. |
| - Fix the handling of global arrays to remove the extra pointer reference. |
| - Add a `max` field to the `external-versions` config, and use it to determine |
| which APIs are generated. |
| - Add a runtime OS version check to ObjC APIs, which throws an error if the |
| current OS version is earlier than the version that the API was introduced. |
| |
| ## 16.1.0 |
| |
| - Ensure that required symbols are available to FFI even when the final binary |
| is linked with `-dead_strip`. |
| - Handle dart typedefs in import/export of symbol files. |
| - Add support for blocking ObjC blocks that can be invoked from any thread. |
| - Add support for blocking ObjC protocol methods. |
| - Remove explicit `objc_retain` calls from the generated bindings. |
| |
| ## 16.0.0 |
| |
| - Ensure all protocols referenced in bindings are available at runtime. |
| - Use `package:dart_style` directly to format generated Dart code, rather than |
| subprocessing to `dart format`. |
| - Use package:objective_c 4.0.0 |
| - Fix various small bugs todo with config filters: |
| - https://github.com/dart-lang/native/issues/1582 |
| - https://github.com/dart-lang/native/issues/1594 |
| - https://github.com/dart-lang/native/issues/1595 |
| - Fix [a bug](https://github.com/dart-lang/native/issues/1701) where nullable |
| typealiases were treated as non-null. |
| - Allow static and instance methods to have the same name: |
| https://github.com/dart-lang/native/issues/1136 |
| - __Breaking change__: Change the way ObjC categories are generated. Instead of |
| inserting their methods into the interface, generate Dart extension methods. |
| For instance methods this makes no difference to user code (as long as the |
| extension methods are imported correctly). But for static methods it means |
| `MyInterface.staticMethod` must change to `MyCategory.staticMethod`. |
| Categories are included/excluded by the `objc-categories` config entry. |
| - Add `include-transitive-objc-interfaces`, `include-transitive-objc-protocols`, |
| and `include-transitive-objc-categories` config flags, which control whether |
| transitively included ObjC interfaces, protocols, and categories are |
| generated. |
| - __Breaking change__: `include-transitive-objc-interfaces` defaults to false, |
| which changes the default behavior from pulling in all transitive deps, to |
| generating them as stubs. `include-transitive-objc-protocols` defaults to |
| false, and `include-transitive-objc-categories` defaults to true, but these |
| both replicate the existing behavior. |
| - Fix [bugs](https://github.com/dart-lang/native/issues/1220) caused by |
| mismatches between ObjC and Dart's inheritance rules. |
| |
| ## 15.0.0 |
| |
| - Bump minimum Dart version to 3.4. |
| - Dedupe `ObjCBlock` trampolines to reduce generated ObjC code. |
| - Update to latest `package:objective_c`. |
| - ObjC objects now include the methods from the protocols they implement. Both |
| required and optional methods are included. Optional methods will throw an |
| exception if the method isn't implemented. |
| - __Breaking change__: Only generate ObjC protocol implementation bindings for |
| protocols that are included by the config filters. This is breaking because |
| previously super protocols would automatically get implementation bindings, |
| rather than just being incorporated into the child protocol. If you want those |
| implementation bindings, you may need to add the super protocol to your |
| `objc-protocols` filters. |
| - Fix a bug where ObjC listener blocks could be deleted after being invoked by |
| ObjC but before the invocation was received by Dart: |
| https://github.com/dart-lang/native/issues/1571 |
| - `sort:` config option now affects ObjC interface/protocol methods. |
| - Fix a bug where `NSRange` was not being imported from package:objective_c: |
| https://github.com/dart-lang/native/issues/1180 |
| - __Breaking change__: Return structs from ObjC methods by value instead of |
| taking a struct return pointer. |
| |
| ## 14.0.1 |
| |
| - Fix bug with nullable types in `ObjCBlock`'s type arguments: |
| https://github.com/dart-lang/native/issues/1537 |
| - Fix a path normalization bug: https://github.com/dart-lang/native/issues/1543 |
| |
| ## 14.0.0 |
| |
| - Create a public facing API for ffigen that can be invoked as a library: |
| `void generate(Config config)`. Make `Config` an implementatble interface, |
| rather than needing to be parsed from yaml. |
| - Add a `external-versions` config option. Setting the minimum target |
| version will omit APIs from the generated bindings if they were deprecated |
| before this version. |
| - Global variables using ObjC types (interfaces or blocks) will now use the |
| correct Dart wrapper types, instead of the raw C-style pointers. |
| - Rename `assetId` under *ffi-native* to `asset-id` to follow dash-case. |
| - __Breaking change__: ObjC blocks are now passed through all ObjC APIs as |
| `ObjCBlock<Ret Function(Args...)>`, instead of the codegenned |
| `ObjCBlock_...` wrapper. The wrapper is now a non-constructible set of util |
| methods for constructing `ObjCBlock`. |
| - __Breaking change__: Generated ObjC code has been migrated to ARC (Automatic |
| Reference Counting), and must now be compiled with ARC enabled. For example, |
| if you had a line like `s.requires_arc = []` in your podspec, this should |
| either be removed, or you should add the ffigen generated ObjC code to the |
| list. If you're compiling directly with clang, add the `-fobjc-arc` flag. |
| - __Breaking change__: Structs with enum members now generate their members |
| as Dart enum values as well. For example, with an enum `MyEnum` and a struct |
| with a member `MyEnum enumMember`, two members are generated: `enumMemberAsInt` |
| which contains the original integer value, and `enumMember`, which is of type |
| `MyEnum`. If you configure the enum to be generated as Dart integers, this |
| new behavior will not apply, and the struct member will be an integer as well. |
| - __Breaking change__: Enums generated as integers will now generate `sealed` |
| classes as opposed to `abstract` classes. |
| - Fix some bugs in the way ObjC method families and ownership annotations were |
| being handled: https://github.com/dart-lang/native/issues/1446 |
| - Apply the existing `member-rename` option to ObjC interface and protocol |
| methods and properties. |
| - Add a `member-filter` option that filters ObjC interface and protocol methods |
| and properties. |
| |
| ## 13.0.0 |
| |
| - __Breaking change__: Code-gen the ObjC `id` type to `ObjCObjectBase` rather |
| than `NSObject`, since not all ObjC classes inherit from `NSObject`. Eg |
| `NSProxy`. |
| - __Breaking change__: Generate a native trampoline for each listener block, to |
| fix a ref counting bug: https://github.com/dart-lang/native/issues/835. |
| - If you have listener blocks affected by this ref count bug, a .m file will |
| be generated containing the trampoline. You must compile this .m file into |
| your package. If you already have a flutter plugin or build.dart, you can |
| simply add this generated file to that build. |
| - If you don't use listener blocks, you can ignore the .m file. |
| - You can choose where the generated .m file is placed with the |
| `output.objc-bindings` config option. |
| - __Breaking change__: Native enums are now generated as real Dart enums, instead |
| of abstract classes with integer constants. Native enum members with the same |
| integer values are handled properly on the Dart side, and native functions |
| that use enums in their signatures now accept the generated enums on the Dart |
| side, instead of integer values. To opt out of this, use the `enums->as-int` |
| option as specified in the README. |
| - __Breaking change__: Enum integer types are implementation-defined and not |
| part of the ABI. Therefore FFIgen does a best-effort approach trying to mimic |
| the most common compilers for the various OS and architecture combinations. |
| To silence the warning set config `silence-enum-warning` to `true`. |
| - Rename ObjC interface methods that clash with type names. Fixes |
| https://github.com/dart-lang/native/issues/1007. |
| - Added support for implementing ObjC protocols from Dart. Use the |
| `objc-protocols` config option to generate bindings for a protocol. |
| - Fix some bugs where ObjC interface/protocol methods could collide with Dart |
| built-in methods, or with types declared elsewhere in the generated bindings. |
| - Add `include-unused-typedefs` to allow generating typedefs that are not |
| referred to anywhere, the default option is `false`. |
| - Use `package:dart_flutter_team_lints`. |
| |
| ## 12.0.0 |
| |
| - Global variables are now compatible with the `ffi-native` option. |
| - Exposing symbol addresses of functions and globals is now compatible with the |
| `ffi-native` option. |
| - Add `retainAndReturnPointer` method to ObjC objects and blocks, and add |
| `castFromPointer` method to blocks. |
| - Add `-Wno-nullability-completeness` as default compiler option for MacOS. |
| - __Breaking change__: Use `package:objective_c` in ObjC bindings. |
| - ObjC packages will have a flutter dependency (until |
| https://github.com/dart-lang/native/issues/1068 is fixed). |
| - Core classes such as `NSString` have been moved into `package:objective_c`. |
| - ObjC class methods don't need the ubiquitous `lib` argument anymore. In |
| fact, ffigen won't even generate the native library class (unless it needs |
| to bind top level functions without using `@Native`). It is still necessary |
| to `DynamicLibrary.open` the dylib though, to load the classes and methods. |
| - Adapting to this change: |
| - Update ffigen and re-run the code generation. If the generated code no |
| longer contains the native library class, it means it isn't needed |
| anymore. So `final lib = FooNativeLib(DynamicLibrary.open('foo.dylib'));` |
| must be changed to `DynamicLibrary.open('foo.dylib');`. |
| - Regardless of whether the native library class still exists, delete the |
| `lib` parameter from all ObjC object constructors and static method calls |
| and block constructors. |
| - If core ObjC classes such as `NSString` are being used, |
| `package:objective_c` must be imported, as they won't be exported by the |
| generated bindings. |
| - Add --[no-]format option to ffigen command line, which controls whether the |
| formatting step happens. Defaults to true. |
| - Delete Dart functions associated with ObjC closure blocks when the block is |
| destroyed. Fixes https://github.com/dart-lang/native/issues/204 |
| - Reduce cursor definition not found logs when `structs/unions` -> |
| `dependency-only` is set to `opaque`. |
| |
| ## 11.0.0 |
| |
| - Any compiler errors/warnings in source header files will now result in |
| bindings to **not** be generated by default, since it may result in invalid |
| bindings if the compiler makes a wrong guess. A flag `--ignore-source-errors` (or yaml config `ignore-source-errors: true`) |
| must be passed to change this behaviour. |
| - __Breaking change__: Stop generating setters for global variables marked `const` in C. |
| - Fix objc_msgSend being used on arm64 platforms where it's not available. |
| - Fix missing comma with `ffi-native` functions marked `leaf`. |
| - Add support for finding libclang in Conda environment. |
| |
| ## 10.0.0 |
| |
| - Stable release targeting Dart 3.2 using new `dart:ffi` features available |
| in Dart 3.2 and later. |
| - Add support for ObjC Blocks that can be invoked from any thread, using |
| NativeCallable.listener. |
| - Fix invalid exceptional return value ObjCBlocks that return floats. |
| - Fix return_of_invalid_type analysis error for ObjCBlocks. |
| - Fix crash in ObjC methods and blocks that return structs by value. |
| - Fix ObjC methods returning instancetype having the wrong type in sublasses. |
| - When generating typedefs for `Pointer<NativeFunction<Function>>`, also |
| generate a typedef for the `Function`. |
| - Use Dart wrapper types in args and returns of ObjCBlocks. |
| - Use Dart wrapper types in args and returns of static functions. |
| - Renamed `asset` to `assetId` for `ffi-native`. |
| |
| ## 9.0.1 |
| |
| - Fix doc comment missing on struct/union array fields. |
| - Allow extern inline functions to be generated. |
| |
| ## 9.0.0 |
| |
| - Added a JSON schema for FFIgen config files. |
| |
| ## 8.0.2 |
| |
| - Fixed invalid code generated due to zero-length arrays in structs/union. |
| |
| ## 8.0.1 |
| |
| - Fixed invalid code generated due to anonymous structs/unions with unsupported types. |
| |
| ## 8.0.0 |
| |
| - Stable release for Dart 3.0 with support for class modifers, variadic arguments, and `@Native`s. |
| |
| ## 8.0.0-dev.3 |
| |
| - Added support for variadic functions using config `functions -> variadic-arguments`. |
| |
| ## 8.0.0-dev.2 |
| |
| - Use `@Native` syntax instead of deprecated `@FfiNative` syntax. |
| |
| |
| ## 8.0.0-dev.1 |
| |
| - Fix invalid struct/enum member references due to multiple anonymous struct/enum in a declaration. |
| |
| ## 8.0.0-dev.0 |
| |
| - Adds `final` class modifier to generated sub types `Struct`, `Union` and |
| `Opaque`. A class modifier is required in Dart 3.0 because the classes |
| `dart:ffi` as marked `base`. |
| When migrating a package that uses FFIgen, _and_ exposes the generated code in |
| the public API of the package, to Dart 3.0, that package does not |
| need a major version bump. Sub typing `Struct`, `Union` and |
| `Opaque` sub types is already disallowed by `dart:ffi` pre 3.0, so adding the |
| `final` keyword is not a breaking change. |
| - Bumps SDK lowerbound to 3.0. |
| ## 7.2.11 |
| |
| - Fix invalid struct/enum member references due to multiple anonymous struct/enum in a declaration. |
| |
| ## 7.2.10 |
| |
| - Generate parameter names in function pointer fields and typedefs. |
| |
| ## 7.2.9 |
| |
| - Detect LLVM installed using Scoop on Windows machines. |
| |
| ## 7.2.8 |
| |
| - Automatically generate `ignore_for_file: type=lint` if not specified in preamble. |
| |
| ## 7.2.7 |
| |
| - Fix some macros not being generated in some cases due to relative header paths. |
| |
| ## 7.2.6 |
| |
| - Fix path normalization behaviour for absolute paths and globs starting with `**`. |
| |
| ## 7.2.5 |
| |
| - Add support nested anonymous union/struct |
| |
| ## 7.2.4 |
| |
| - Add new supported typedef - `uintptr_t` (mapped to `ffi.UintPtr`). |
| |
| ## 7.2.3 |
| |
| - Change compiler option order so that user options can override built-in |
| options. |
| |
| ## 7.2.2 |
| |
| - Added newer versions of LLVM, to default `linuxDylibLocations`. |
| |
| ## 7.2.1 |
| |
| - Fix helper methods sometimes missing from NSString. |
| |
| ## 7.2.0 |
| |
| - Added support for sharing bindings using `symbol-file` config. (See `README.md` |
| and examples/shared_bindings). |
| |
| ## 7.1.0 |
| |
| - Handle declarations with definition accessible from a different entry-point. |
| |
| ## 7.0.0 |
| |
| - Fix typedef include/exclude config. |
| - Return `ObjCBlock` wrapper instead of raw pointer in more cases. |
| |
| ## 7.0.0-dev |
| |
| - Relative paths in ffigen config files are now assumed to be relative to the |
| config file, rather than the working directory of the tool invocation. |
| |
| ## 6.1.2 |
| |
| - Fix bug where function bindings were not deduped correctly. |
| |
| ## 6.1.1 |
| |
| - _EXPERIMENTAL_ support for `FfiNative`. The API and output |
| might change at any point. |
| |
| ## 6.1.0 |
| |
| - Added `exclude-all-by-default` config flag, which changes the default behavior |
| of declaration filters to exclude everything, rather than include everything. |
| |
| ## 6.0.2 |
| |
| - Bump `package:ffi` to 2.0.1. |
| |
| ## 6.0.1 |
| |
| - Replace path separators in `include-directives` before matching file names. |
| - Add more ways to find `libclang`. |
| |
| ## 6.0.0 |
| - Removed config `dart-bool`. Booleans are now always generated with `bool` |
| and `ffi.Bool` as it's Dart and C Type respectively. |
| |
| ## 5.0.1 |
| |
| - Add a the xcode tools llvm as default path on MacOS. |
| |
| ## 5.0.0 |
| |
| - Stable release targeting Dart 2.17, supporting ABI-specific integer types. |
| - _EXPERIMENTAL_ support for ObjectiveC on MacOS hosts. The API and output |
| might change at any point. Feel free to report bugs if encountered. |
| |
| ## 5.0.0-dev.1 |
| - Fixed invalid default dart types being generated for `size_t` and `wchar_t`. |
| |
| ## 5.0.0-dev.0 |
| - Added support for generating ABI Specific integers. |
| - Breaking: removed config keys - `size-map` and `typedef-map`. |
| - Added config keys - `library-imports` and `type-map`. |
| |
| ## 4.1.3 |
| - Analyzer fixes. |
| |
| ## 4.1.2 |
| - Added fix for empty include list to exclude all |
| |
| ## 4.1.1 |
| - Added fix for errors due to name collision between member name |
| and type name used internally in structs/unions. |
| |
| ## 4.1.0 |
| - Add config key `functions -> leaf` for specifying `isLeaf:true` for functions. |
| |
| ## 4.0.0 |
| - Release for Dart SDK `>=2.14`. |
| |
| ## 4.0.0-dev.2 |
| - Added config key `functions -> expose-typedefs` to expose the typedef |
| to Native and Dart type. |
| - Config key `function`->`symbol-address` no longer exposes the typedef |
| to Native type. Use `expose-typedefs` to get the native type. |
| |
| ## 4.0.0-dev.1 |
| - This package now targets package:lints for the generated code. The generated |
| code uses C symbol names as is. Use either `// ignore_for_file: lintRule1, lintRule2` |
| in the `preamble`, or rename the symbols to make package:lints happy. |
| - Name collisions are now resolved by suffixing `<int>` instead of `_<int>`. |
| |
| ## 4.0.0-dev.0 |
| - Added support for generating typedefs (_referred_ typedefs only). |
| <table> |
| <tr> |
| <td>Example C Code</td> |
| <td>Generated Dart typedef</td> |
| </tr> |
| <tr> |
| <td> |
| |
| ```C++ |
| typedef struct A{ |
| ... |
| } TA, *PA; |
| |
| TA func(PA ptr); |
| ``` |
| </td> |
| <td> |
| |
| ```dart |
| class A extends ffi.Struct {...} |
| typedef TA = A; |
| typedef PA = ffi.Pointer<A>; |
| TA func(PA ptr){...} |
| ``` |
| </td> |
| </tr> |
| </table> |
| |
| - All declarations that are excluded by the user are now only included if being |
| used somewhere. |
| - Improved struct/union include/exclude. These declarations can now be targetted |
| by their actual name, or if they are unnamed then by the name of the first |
| typedef that refers to them. |
| |
| ## 3.1.0-dev.1 |
| - Users can now specify exact path to dynamic library in `llvm-path`. |
| |
| ## 3.1.0-dev.0 |
| - Added support for generating unions. |
| |
| ## 3.0.0 |
| - Release for dart sdk `>=2.13` (Support for packed structs and inline arrays). |
| |
| ## 3.0.0-beta.0 |
| - Added support for inline arrays in `Struct`s. |
| - Remove config key `array-workaround`. |
| - Remove deprecated key `llvm-lib` from config, Use `llvm-path` instead. |
| |
| ## 2.5.0-beta.1 |
| - Added support for `Packed` structs. Packed annotations are generated |
| automatically but can be overriden using `structs -> pack` config. |
| - Updated sdk constraints to `>=2.13.0-211.6.beta`. |
| |
| ## 2.4.2 |
| - Fix issues due to declarations having duplicate names. |
| - Fix name conflict of declaration with ffi library prefix. |
| - Fix `char` not being recognized on platforms where it's unsigned by default. |
| |
| ## 2.4.1 |
| - Added `/usr/lib` to default dynamic library location for linux. |
| |
| ## 2.4.0 |
| - Added new config key `llvm-path` that accepts a list of `path/to/llvm`. |
| - Deprecated config key `llvm-lib`. |
| |
| ## 2.3.0 |
| - Added config key `compiler-opts-automatic -> macos -> include-c-standard-library` |
| (default: true) to automatically find and add C standard library on macOS. |
| - Allow passing list of string to config key `compiler-opts`. |
| |
| ## 2.2.5 |
| - Added new command line flag `--compiler-opts` to the command line tool. |
| |
| ## 2.2.4 |
| - Fix `sort: true` not working. |
| - Fix extra `//` or `///` in comments when using `comments -> style`: `full`. |
| |
| ## 2.2.3 |
| - Added new subkey `dependency-only` (options - `full (default) | opaque`) under `structs`. |
| When set to `opaque`, ffigen will generate empty `Opaque` structs if structs |
| were excluded in config (i.e added because they were a dependency) and |
| only passed by reference(pointer). |
| |
| ## 2.2.2 |
| - Fixed generation of empty opaque structs due to forward declarations in header files. |
| |
| ## 2.2.1 |
| - Fixed generation of duplicate constants suffixed with `_<int>` when using multiple entry points. |
| |
| ## 2.2.0 |
| - Added subkey `symbol-address` to expose native symbol pointers for `functions` and `globals`. |
| |
| ## 2.1.0 |
| - Added a new named constructor `NativeLibrary.fromLookup()` to support dynamic linking. |
| - Updated dart SDK constraints to latest stable version `2.12.0`. |
| |
| ## 2.0.3 |
| - Ignore typedef to struct pointer when possible. |
| - Recursively create directories for output file. |
| |
| ## 2.0.2 |
| - Fixed illegal use of `const` in name, crash due to unnamed inline structs and |
| structs having `Opaque` members. |
| |
| ## 2.0.1 |
| - Switch to preview release of `package:quiver`. |
| |
| ## 2.0.0 |
| - Upgraded all dependencies. `package:ffigen` now runs with sound null safety. |
| |
| ## 2.0.0-dev.6 |
| - Functions marked `inline` are now skipped. |
| |
| ## 2.0.0-dev.5 |
| - Use `Opaque` for representing empty `Struct`s. |
| |
| ## 2.0.0-dev.4 |
| - Add support for parsing and generating globals. |
| |
| ## 2.0.0-dev.3 |
| - Removed the usage of `--no-sound-null-safety` flag. |
| |
| ## 2.0.0-dev.2 |
| - Removed setup phase for ffigen. Added new optional config key `llvm-lib` |
| to specify path to `llvm/lib` folder. |
| |
| ## 2.0.0-dev.1 |
| - Added support for passing and returning struct by value in functions. |
| |
| ## 2.0.0-dev.0 |
| - Added support for Nested structs. |
| |
| ## 2.0.0-nullsafety.1 |
| - Removed the need for `--no-sound-null-safety` flag. |
| |
| ## 2.0.0-nullsafety.0 |
| - Migrated to (unsound) null safety. |
| |
| ## 1.2.0 |
| - Added support for `Dart_Handle` from `dart_api.h`. |
| |
| ## 1.1.0 |
| - `typedef-map` can now be used to map a typedef name to a native type directly. |
| |
| ## 1.0.6 |
| - Fixed missing typedefs nested in another typedef's return types. |
| |
| ## 1.0.5 |
| - Fixed issues with generating macros of type `double.Infinity` and `double.NaN`. |
| |
| ## 1.0.4 |
| - Updated code to use `dart format` instead of `dartfmt` for sdk version `>= 2.10.0`. |
| |
| ## 1.0.3 |
| - Fixed errors due to extended ASCII and control characters in macro strings. |
| |
| ## 1.0.2 |
| - Fix indentation for pub's readme. |
| |
| ## 1.0.1 |
| - Fixed generation of `NativeFunction` parameters instead of `Pointer<NativeFunction>` in type signatures. |
| |
| ## 1.0.0 |
| - Bump version to 1.0.0. |
| - Handle unimplememnted function pointers causing errors. |
| - Log lexical/semantic issues in headers as SEVERE. |
| |
| ## 0.3.0 |
| - Added support for including/excluding/renaming _un-named enums_ using key `unnamed_enums`. |
| |
| ## 0.2.4+1 |
| - Minor changes to dylib creation error log. |
| |
| ## 0.2.4 |
| - Added support for C booleans as Uint8. |
| - Added config `dart-bool` (default: true) to use dart bool instead of int in function parameters and return type. |
| |
| ## 0.2.3+3 |
| - Wrapper dynamic library version now uses ffigen version from its pubspec.yaml file. |
| |
| ## 0.2.3+2 |
| - Handle code formatting using dartfmt by finding dart-sdk. |
| |
| ## 0.2.3+1 |
| - Fixed missing typedefs of nested function pointers. |
| |
| ## 0.2.3 |
| - Fixed parsing structs with bitfields, all members of structs with bit field members will now be removed. See [#84](https://github.com/dart-lang/ffigen/issues/84) |
| |
| ## 0.2.2+1 |
| - Updated `package:meta` version to `^1.1.8` for compatibility with flutter sdk. |
| |
| ## 0.2.2 |
| - Fixed multiple generation/skipping of typedef enclosed declarations. |
| - Typedef names are now given higher preference over inner names, See [#83](https://github.com/dart-lang/ffigen/pull/83). |
| |
| ## 0.2.1+1 |
| - Added FAQ to readme. |
| |
| ## 0.2.1 |
| - Fixed missing/duplicate typedef generation. |
| |
| ## 0.2.0 |
| - Updated header config. Header `entry-points` and `include-directives` are now specified under `headers` key. Glob syntax is allowed. |
| - Updated declaration `include`/`exclude` config. These are now specified as a list. |
| - Added Regexp based declaration renaming using `rename` subkey. |
| - Added Regexp based member renaming for structs, enums and functions using `member-rename` subkey. `prefix` and `prefix-replacement` subkeys have been removed. |
| |
| ## 0.1.5 |
| - Added support for parsing macros and anonymous unnamed enums. These are generated as top level constants. |
| |
| ## 0.1.4 |
| - Comments config now has a style and length sub keys - `style: doxygen(default) | any`, `length: brief | full(default)`, and can be disabled by passing `comments: false`. |
| |
| ## 0.1.3 |
| - Handled function arguments - dart keyword name collision |
| - Fix travis tests: the dynamic library is created using `pub run ffigen:setup` before running the tests. |
| |
| ## 0.1.2 |
| - Fixed wrapper not found error when running `pub run ffigen`. |
| |
| ## 0.1.1 |
| - Address pub score: follow dart File conventions, provide documentation, and pass static analysis. |
| |
| ## 0.1.0 |
| - Support for Functions, Structs and Enums. |
| - Glob support for specifying headers. |
| - HeaderFilter - Include/Exclude declarations from specific header files using name matching. |
| - Filters - Include/Exclude function, structs and enum declarations using Regexp or Name matching. |
| - Prefixing - function, structs and enums can have a global prefix. Individual prefix Replacement support using Regexp. |
| - Comment extraction: full/brief/none |
| - Support for fixed size arrays in struct. `array-workaround` (if enabled) will generate helpers for accessing fixed size arrays in structs. |
| - Size for ints can be specified using `size-map` in config. |
| - Options to disable using supported typedefs (e.g `uint8_t => Uint8`), sort bindings. |
| - Option to add a raw `preamble` which is included as is in the generated file. |