blob: 1a577daca0de6e740eab25f7892924707f41c38d [file] [log] [blame] [view]
# 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.