Releases: google/autocxx
Releases · google/autocxx
v0.13.0
- 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
- Revised minimum Rust version to 1.54
- Bumped
env_logger
and removed dependency onindoc
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 thegenerate
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
- 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
v0.11.0
v0.10.0
v0.9.0: Merge pull request #539 from google/rev-0.9.0
- 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
(usingRUST_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
- 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
- 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
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 asuse 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 mostblock!
directives - Allows use of forward-declared types in pointers and references, just like in C++. (But not in
UniquePtr
s). - Rejects unknown
std
andrust
namespace types.