github google/autocxx v0.29.0

16 hours ago

Major changes

This is a major change to the internal functionality of autocxx. Previously, we significantly edited the bindgen output. Instead, now, we just augment stuff alongside it (along with lots of use statements to get the right bits out). (This was #1456).

Philosophically, this means autocxx is now a tool to augment bindgen's output. We will get the benefit of bindgen improvements, and benefit from its ever-better understanding of C++ templates. We don't try to be smarter than bindgen in editing its output - we just pass it on as-is, and wherever we can, try to build more ergonomic cxx bindings alongside that bindgen output. (This journey will be completed if we manage to move to a completely standard upstream bindgen as described in #124).

Compatibility implications:

  • The major compatibility implication is that we're now reliant on bindgen doing the right thing in more circumstances. In rare circumstances, it doesn't. For instance, these four bindgen bugs previously did not affect autocxx users, because we would coincidentally have edited out bindgen's erroneous output. We would no longer do so, and now they would prevent use of autocxx: rust-lang/rust-bindgen#3159, rust-lang/rust-bindgen#3161, rust-lang/rust-bindgen#3158, rust-lang/rust-bindgen#3160. This will be a regression in autocxx functionality for some people - let's all work together to make bindgen as good as possible.
  • If you previously wished to generate a function called the same as a Rust keyword (e.g. move, async) you previously needed to give generate!("async_") (note the underscore). As far as I know this wasn't documented anywhere. This quirk has been removed.

Beyond these implications, this major internal change has no intentional changes in how autocxx behaves for users.

What's Changed

New Contributors

Full Changelog: v0.28.0...v0.29.0

Don't miss a new autocxx release

NewReleases is sending notifications on new releases.