blob: 0751f59efeb90b40a7048f4838736452ee82e033 [file] [log] [blame]
## 0.24.5
* Don't enforce tempfile version.
## 0.24.4
* Move expand infinite recursion fix (#799)
* Add with_cpp_compat to the builder (#796)
* Handle never type in return position consistently (#780)
* Fix warnings (#816, #819)
* Updated documentation (#788, #791, #792, #810, #823)
## 0.24.3
* Make struct expressions correctly generated through typedefs (#768).
## 0.24.2
* Make bitfield operators use explicit constructors.
## 0.24.1
* Add support for unary negation (#765).
* Make more bitfield operators constexpr (#765).
## 0.24.0
* Basic const generic support (#759, #760 #762).
* Suffixes on integer literals are now honored to avoid narrowing (#764).
## 0.23.0
* Better support for constexpr. (#756)
* constexpr is now enabled by default in C++ mode. You can use const.allow_constexpr=false to revert to previous behavior. (#756)
* Minimum syn version no longer parses old rust code. (#754)
## 0.22.0
* Support rename rule for union body members (#751).
* constant: Add support for associated constant expressions (#752).
* Fix regression in CamelCase rename rule (should be lowerCamelCase) (#750).
* enumeration: simplify standard types in variants (#749).
* Avoid generating and writing bindings when called recursively (#747).
* Cython: Omit per-variant tags in unions generated for Rust enums (#748).
* Update various dependencies.
## 0.21.0
* Update MSRV to 1.54.0
* Update clap to 3.1.
* Update heck to 0.4.0
* unraw identifiers
* Honor documentation_length in Cython.
* Add documentation_style to with short and full options
* Map RawFd to Int
* Respect remove_underscores config when prefixing name to enum
## 0.20.0
* Add Builder::with_using_namespaces. (#688)
* Ignore PhantomPinned. (#695)
* Simplify Pin<T> to T. (#697)
* Update --pretty=expanded to -Zunpretty=expanded. (#706)
## 0.19.0
* Simplify types in generics (#663)
* Use --profile=check for macro expansion (#671)
* Use exported name to prefix enum variants (#672)
* Fix path attribute handling in inline submodules (#679)
* Fix a stack overflow with some recursive typedefs (#680)
## 0.18.0
* Simplify types in nested types such as pointed-to types and function signatures (#661)
## 0.17.0
* Add with_parse_extra_bindings to builder. (#645)
* Support NonZero and fix incorrect simplification of Option<ptr> into ptr. (#647)
* Deal with name conflicts correctly in declaration type resolution. (#651)
* Support pointers to ZSTs. (#656)
## 0.16.0
* Remove artificial restriction on lifetime parameters on enums (#604)
* Add an option for converting usize/isize into size_t/ptrdiff_t. (#606)
* Allow controlling the cargo profile used for expansion. (#607)
* Support wider range of expressions in enum discriminants (#614)
* Support generation of Cython bindings (#590)
* Fixed some issues with style=tag and recursive structs (#615)
* Default C style to Both (as specified in docs) (#615)
* Fix resolution of path dependencies from certain modules. (#629)
* Support inlined definitions for tuple variants with a single field in C (#631)
Thanks to all the awesome contributors that contributed to this release.
## 0.15.0
* Allow customizing mangling of generic parameters in C (#575)
* Box<T> simplifies to T* in C (4ce324c)
* ManuallyDrop<T> and MaybeUninit<T> simplify to T in C, and are opaque in C++ (0076a17)
* C++ supports a derive-ostream annotation to derive serialization of structs, unions and enums (#582)
* Large character constants have been fixed on Windows (#586)
* Constants are now generated for typedefs, etc (#589)
* The `sort_by` configuration option has been made to work for constants (#587)
* Default sort order is source order now (sort_by = "None"), and can be changed by the above option (#587)
## 0.14.6
* Fixed the builds with older versions of rustc.
## 0.14.5
* Add support to specify line ending style (#568)
* Add cbindgen:ptrs-as-arrays annotation to allow making function
arguments C/C++ arrays.
## 0.14.4
* Allow to override the mangling separator (#502)
* cbindgen now handles better having ZSTs in template parameters, and
default template parameters (#563).
* Support for annotating nonnull pointers (#558)
* Fixed bitflags that overflow a signed integer (#556)
* Support for wildcard argument names (#550)
* Support for the never return type, with configurable annotation (#549)
* Properly reject arrays as function arguments (#540)
## 0.14.3
* Introduce cbindgen:ignore comment annotation, to allow ignoring items or modules. (#519)
* Support for casts in constant expressions. (#526)
* Make a non-fatal error a warning message. (#535)
* Add a --metadata option to the CLI, to allow passing pre-computed cargo metadata. (#538)
## 0.14.2
* Fixed minimal dependency versions. (#507)
* Add an option to write pragma once. (#511)
* Fix submodule scanning for implicit Rust 2018 modules. (#512)
* Fix dependency parsing / scanning to handle target-specific versions. (#513)
* Use heck for case conversion. (#514)
* Add support for verbatim content after includes. (#416)
* Allow to add attributes to most generated functions. (#515)
## 0.14.1
* Handle mangling pointers. (#508)
* Unconditionally generate a return statement in partialeq implementations. (#509)
## 0.14.0
* Minor tweak at how [export.exclude] is handled to allow excluding
generic instantiations in C mode. (#501)
* Documented cpp_compat option. (#496)
* Fixed a panic when parsing associated constants for a built-in type. (#494)
## 0.13.2
* Constants now have suitable documentation. (#471)
* Fixed some C warnings by emitting void when there are no arguments. (#470)
* Avoids reading cargo.toml when not needed, which can cause panics in workspace situations.
* Only write `default` cases if the switch is not exhaustive. (#475)
* Some warnings have been refined. (#477)
* Code generation for static arrays has been fixed. (#479)
* Opt-in support for constexpr in constants. (#481)
* Fix C code generation and some warnings when extremely large constants are used. (#490)
* Proper escaping of enum variants and fields. (#483)
* Added support for RefCell (as an opaque type) and Cell. (#489)
## 0.13.1
* Support `#[cfg]` on individual enum variants. (#469)
## 0.13.0
* Support 'swift_name' attributes on generated functions (#449)
* Add [export.pre_body] to config (#452)
* Handle new line in doc attribute (#454)
* Add support for `Self` in tagged enums, structs and unions (#455, #455, #456)
* Make sentinel variant respect regular config (#459)
* Fix layout of tagged enums with size under some configurations (#463)
* Add an option to allow configuring the order of function names in generated headers (#466)
## 0.12.2
* Fixed version detection with lockfile v2. https://github.com/eqrion/cbindgen/pull/446
* Added support for export_name on functions. https://github.com/eqrion/cbindgen/pull/447
## 0.12.1
* Added support for #[repr*64)] on enums. https://github.com/eqrion/cbindgen/pull/441
* Added support to generate plain enums instead of enum classes for C++. https://github.com/eqrion/cbindgen/pull/443
* Fixed dependency resolution with lockfile v2. https://github.com/eqrion/cbindgen/pull/438
## 0.12.0
* Added support for #[repr(align)] and #[repr(packed)] on structs and unions. https://github.com/eqrion/cbindgen/pull/431
* Added support to generate copy-assignment operators for enums. https://github.com/eqrion/cbindgen/pull/434
## 0.11.1
* More binary operators and expressions are supported. https://github.com/eqrion/cbindgen/pull/425
* More built-in bitflags operators. https://github.com/eqrion/cbindgen/pull/426
## 0.11.0
* Made rust char map to uint32_t. https://github.com/eqrion/cbindgen/pull/424
## 0.10.1
* Improved error message for missing config file. https://github.com/eqrion/cbindgen/pull/422
* Add missing header for char32_t. https://github.com/eqrion/cbindgen/pull/414
## 0.10.0
* Initialize struct literal with list-initializer for C++11 standard. https://github.com/eqrion/cbindgen/pull/401
* Surround namespace with __cplusplus ifdef in cpp_compat mode. https://github.com/eqrion/cbindgen/pull/407
* Add support for --quiet flag. https://github.com/eqrion/cbindgen/pull/400
* Map char to char32_t. https://github.com/eqrion/cbindgen/pull/396
* Improve binding_crate_ref() error message. https://github.com/eqrion/cbindgen/pull/395
* avoid prematurely returning during expansion. https://github.com/eqrion/cbindgen/pull/389
* Add support for adding "using namespace" statements. https://github.com/eqrion/cbindgen/pull/387
## 0.9.1
* Various improvements to comment output. https://github.com/eqrion/cbindgen/pull/370 / https://github.com/eqrion/cbindgen/pull/375.
* Fixed expand when ran from build.rs. https://github.com/eqrion/cbindgen/pull/371
* More debugging output for expansion. https://github.com/eqrion/cbindgen/pull/383
* New option to add a default private constructor in C++ tagged enums. https://github.com/eqrion/cbindgen/pull/377
* Syn and related dependencies updated to 1.0. https://github.com/eqrion/cbindgen/pull/379
## 0.9.0
* Support to generate C headers with C++ compatibility. https://github.com/eqrion/cbindgen/pull/349
* Fix include guard generation when no_includes is set. https://github.com/eqrion/cbindgen/pull/352
* Fix crate parsing order so that types from the binding crate are preferred in presence of conflicting names. https://github.com/eqrion/cbindgen/pull/355
* Add extra_bindings option to generate bindings for dependencies. https://github.com/eqrion/cbindgen/pull/362
* Clap dependency is optional now so it's feasible to avoid building it if cbindgen is used as a library. https://github.com/eqrion/cbindgen/pull/363
## 0.8.7
* Require C++11 to run the test-suite (#341, test-only)
* Improve mangling error message (#340)
* Add the ability to automatically derive copy-constructors for tagged enums (#339)
* Use placement new for constructing in tagged unions' helper methods (#333)
## 0.8.6
* Fixed a panic when missing a lock file
## 0.8.5
* Improved support for Rust 2018 modules
* Add possibility to autogenerate tagged union destructors
## 0.8.4
* Support for package renaming in Cargo.toml
* Improved error messages for |cargo metadata| failures
* Replaced 'test.py' harness with |cargo test|
* Char constants will now be escaped properly
* Visibility of constants will now be respected
* Added a C99 doc comment style
## 0.8.2
* Improvements to bitflags parsing
## 0.8.1
* Support for manual parsing and expanding of bitflags macros
* Support for optional tagged enum casts with asserts
## 0.8.0
* support for 'includes' without default includes
* removed dependency on ancient serde_derive!
## 0.7.1
* Fix for crash when unwrapping unsupported type with associated constants
## 0.7.0
* support for libc::ssize_t
* fixed some warnings on nightly
* fix for transparent associated constants
* switched more API's to use AsRef<Path>
* impl std::error::Error for cbindgen::Error
* now support putting user-defined content in item bodies
## 0.6.8
* ptrdiff_t is now a recognized primitive type
* named function type arguments are now propagated
* fixes for struct literals in constants
* reserved C/C++ keywords are now escaped automatically
* negative enum discriminants are now supported
* fix for prefixing and formatting variant names
* fix for snake_case formatter
* syn update
* doxygen style comments are now output by default
* VaList is now a recognized primitive type
* fix for comment processing
* constant is propagated into array types
* references are now supported in IR, and used for some helper method generation
* assignment helper functions will generate array copies if necessary