Skip to content

Releases: google/autocxx

v0.13.0

07 Oct 05:37
Compare
Choose a tag to compare
v0.13.0 Pre-release
Pre-release
  • Subclass improvements:
    • Allow subclassing of C++ classes in namespaces.
    • Support arbitrary constructors for superclasses.
    • Simplify subclass default traits.
    • Some rejigging of the directives/macro names. Breaking change but only if you already used the subclass support.
    • Allow unit structs to be subclasses.
  • Improve specificity of error messages around missing dependencies.
  • Provide the option to suppress system headers.
  • Provide an autodiscovery mode which attempts to spot use of ffi:: to avoid any allowlist at all.
  • Provide #[extern_rust_fun] and #[extern_rust_type] attribute macros to allow exporting of arbitrary Rust code to C++.
  • Bump bindgen version.
  • Make compatible with resolver = 2.
  • Breaking change Deprecated some of the builder methods and replaced them with, err, a Builder builder.

v0.12.0

24 Sep 16:44
3efc711
Compare
Choose a tag to compare
v0.12.0 Pre-release
Pre-release
  • Revised minimum Rust version to 1.54
  • Bumped env_logger and removed dependency on indoc to make the transitive dependency tree smaller
  • New APIs in autocxx_build; old ones still exist but are deprecated - move to the new ones
  • Synthesize make_unique for types with default constructors (fixes #122)
  • Add an experimental "dynamic discovery" mode (see autocxx_build::Builder::auto_allowlist) which enables you to remove the generate directives
  • Subclasses:
    • Simplified example by adding prelude and some derive macros
    • Removed the need to explicitly call a C++ peer constructor; the subclass codegen now does this automatically unless there are multiple or complex constructors in which case you'll need to implement a trait to choose
    • Improved panics on re-entrancy and similar error states
    • Filed issues for all known limitations and mentioned in documentation
  • Much documentation
  • Filenames of generated .rs files on disk have changed - they're no longer based on a hash of the directives. This should reduce filesystem pollution through leaking old versions.

v0.11.2

18 Sep 05:10
9388e20
Compare
Choose a tag to compare
v0.11.2 Pre-release
Pre-release
  • Minimum Rust version now 1.55
  • Added rust_type! to allow passing references to Rust types within C++ APIs
  • Added support for rust::Box to allow passing opaque Rust types into and out of C++ APIs
  • Added very early support for creating Rust subclasses of C++ superclasses, subject to a bunch of constraints. See examples/subclass/src/main.rs.
  • Upgrade to cxx 1.0.54

v0.11.1

13 Aug 23:18
d129d6c
Compare
Choose a tag to compare
v0.11.1 Pre-release
Pre-release
  • Latest bindgen code, fixing a panic with 'unable to get type information'
  • Derive Copy for the C integer wrappers
  • Another example
  • Add an official way to make strings

v0.11.0

09 Jun 13:36
Compare
Choose a tag to compare
v0.11.0 Pre-release
Pre-release
  • Spot inner types whose outer type contains __ and ignore them
  • Ignore APIs where bindgen wants &u8 used as a receiver
  • Support std::shared_ptr and std::weak_ptr
  • Documentation update.

v0.10.0

09 Jun 13:32
8737c6b
Compare
Choose a tag to compare
v0.10.0 Pre-release
Pre-release
  • Reject APIs involving type names that will conflict in the flat namespace of the cxx::bridge mod (e.g. if two different C++ namespaces both have a type called A)

v0.9.0: Merge pull request #539 from google/rev-0.9.0

28 May 17:32
01761e7
Compare
Choose a tag to compare
  • Handle deleted functions
  • Support multiple FFI mods in one file
  • Support manual #[cxx::bridge] mods without the need for an extra codegen tool
  • Better handle some std types for which we have no explicit support
  • Ignore types with discarded template params
  • Add logging to autocxx_gen (using RUST_LOG=autocxx_engine=info like everywhere else)
  • Many improvements to reduction pipeline
  • Correctly detect abstract subclasses
  • Reject (or, where possible, rename) APIs named using Rust keywords which are valid identifiers in C++ (e.g. move)

0.8.0

03 May 23:13
193fd29
Compare
Choose a tag to compare
0.8.0 Pre-release
Pre-release
  • Handles nested types (thanks @martinboehme)
  • Doesn't import the move constructor (thanks @martinboehme)
  • Adds experimental generate_all! directive
  • Does not attempt to codegen APIs which depend on types not known to autocxx (e.g. u128)

v0.7.1: Merge pull request #450 from google/0.7.1-bump

29 Apr 02:46
888c72e
Compare
Choose a tag to compare
  • Fixing typedefs to ptrs where some part of the chain of typedefs contains __. These items are now ignored (i.e. give a nice message in the output mod about why we can't generate bindings)

v0.7.0: Merge pull request #444 from google/0.7.0-revision

28 Apr 01:28
ec7bc77
Compare
Choose a tag to compare

Fixes:

  • No longer tries to generate code for functions/types with double underscores.
  • Puts constants in the right namespace (thanks @ssbr). Compatibility break.
  • Inlines all our generated C++, to avoid an unnecessary compilation unit.
  • Fixes conflicts between overridden ignored methods/functions.
  • Does not try to create constructors for abstract types.
  • Can now cope with autocxx::include_cpp! as well as use autocxx::include_cpp; include_cpp!
  • Ignores types for which bindgen drops "unused" template parameters. This is a Big Deal as it removes the need for most block! directives
  • Allows use of forward-declared types in pointers and references, just like in C++. (But not in UniquePtrs).
  • Rejects unknown std and rust namespace types.