Releases: google/autocxx
v0.29.0
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 givegenerate!("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
- Remove code for unused template param detection. by @adetaylor in #1446
- Cleanups to parsing by @adetaylor in #1451
- Add a test case for #1371 by @adetaylor in #1453
- test: add test case for #1371 by @b0o in #1430
- Remove O(n^2) lookup in parse callback results. by @adetaylor in #1454
- Add a comment to generated code by @adetaylor in #964
- Add test for #1141: wchar_t -> uint32_t by @jjacobson93 in #1142
- Cargo update by @adetaylor in #1455
- Cease to modify bindgen output. by @adetaylor in #1456
- Roll to 0.29.0 by @adetaylor in #1457
New Contributors
- @b0o made their first contribution in #1430
- @jjacobson93 made their first contribution in #1142
Full Changelog: v0.28.0...v0.29.0
v0.28.0
Major changes
- The previous version declared incorrectly that it supported older Rust versions when it didn't. The requirement for newer Rust versions has been removed (thanks to @tanadeau for spotting this in #1444).
- This switches internally to a much-less-forked version of bindgen. This should have no user-visible effects but... it will. Everything about the relationship between autocxx and bindgen has changed, so some user-visible changes are bound to be seen. This is work towards #124.
- There are some changes to the
CppRef
and related types, which most people don't use, so should not really impact anyone.
What's Changed
using std::string
test by @adetaylor in #1424- Add integration tests for 'using declarations' with std::string by @calebfletcher in #1418
- Fix warning about extern with nightly. by @adetaylor in #1427
- Add lifetimes to functions returning
CppRef<'a, T>
by @adetaylor in #1428 - Experiment with ubuntu 22.04 for mdbook by @adetaylor in #1432
- Newtype wrappers for some names. by @adetaylor in #1431
- Initialize env_logger in autocxx-build by @tchebb in #1433
- Update
CppPeerConstructor
documentation by @tchebb in #1434 - Further name tweaks by @adetaylor in #1437
- autocxx-build: Re-export result types used in API by @tchebb in #1438
- Make CppMutRef's T invariant by @cramertj in #1440
- Minisyn to wrap inputs by @adetaylor in #1441
- Switch to using new version of autocxx-bindgen by @adetaylor in #1442
- Remove extra logging. by @adetaylor in #1445
- Clippy fixes. by @adetaylor in #1447
- Revise to 0.28.0 by @adetaylor in #1448
New Contributors
- @calebfletcher made their first contribution in #1418
- @tchebb made their first contribution in #1433
- @cramertj made their first contribution in #1440
Full Changelog: v0.27.1...v0.28.0
0.27.1
The big change here is a roll to a more recent version of bindgen which understands inline namespaces, and thus resolves issues with the latest headers on OS X.
What's Changed
- Convert to arbitrary_self_types_pointers. by @adetaylor in #1390
- Fix double init of EnvLogger by @adetaylor in #1389
- Specify MSRV by @adetaylor in #1388
- Add missing space on doc comment. by @adetaylor in #1397
- Typedef fn param test by @adetaylor in #1398
- Fix URLs while investigating autocxx.rs. by @adetaylor in #1400
- Roll to autocxx-bindgen 0.70.1. by @adetaylor in #1401
- Fix latest clippy lints by @adetaylor in #1410
- Disable LLVM example in CI. by @adetaylor in #1414
- cargo update by @adetaylor in #1415
- book/building: Fix
expect_build()
call by @Turbo87 in #1420 - book/tutorial: Rename
path
variable to self-describinginclude_path
by @Turbo87 in #1419 - Roll bindgen dec 2024 by @adetaylor in #1416
- Fix concrete typedef dep by @adetaylor in #1423
- Test for a failing double-template with default by @stuglaser in #1417
New Contributors
- @Turbo87 made their first contribution in #1420
- @stuglaser made their first contribution in #1417
Full Changelog: v0.27.0...v0.27.1
0.27.0
What's Changed
- Documentation about C++ versions. by @adetaylor in #1305
- Further documentation on C++ versions. by @adetaylor in #1306
- Newtype wrapper for more concise syn debug output. by @adetaylor in #1309
- Remove commented Cargo line by @adetaylor in #1310
- cargo update by @adetaylor in #1315
- Explicitly reject bitfields by @adetaylor in #1313
- Fix badly named alloc function - fixes #1318 by @adetaylor in #1323
- Clippy fixes. by @adetaylor in #1324
- Test behavior when subclassing something that depends on opaque types by @adetaylor in #1330
- Clippy fix. by @adetaylor in #1335
- Missing stdints. by @adetaylor in #1340
- Bump rustix from 0.37.23 to 0.37.25 by @dependabot in #1338
- Add some missing headers. by @adetaylor in #1344
- Fix unused import warnings. by @adetaylor in #1345
- Clippy fix. by @adetaylor in #1352
- Remove redundant fields. by @adetaylor in #1354
- Add integration tests for functions taking array parameters by @EdmundGoodman in #1353
- Bump shlex from 1.1.0 to 1.3.0 by @dependabot in #1359
- Potential fix for nightly problem. by @adetaylor in #1364
- ci: Use GITHUB_OUTPUT envvar instead of set-output command by @arunsathiya in #1357
- Avoid UB on opaque types. by @adetaylor in #1365
- Some clippy fixes. by @adetaylor in #1367
- Clippy fixes by @adetaylor in #1372
- Fix doc indentation by @adetaylor in #1375
- Revise to autocxx-bindgen 0.69.4. by @adetaylor in #1376
- Revise to 0.27.0 by @adetaylor in #1377
New Contributors
- @dependabot made their first contribution in #1338
- @EdmundGoodman made their first contribution in #1353
- @arunsathiya made their first contribution in #1357
Full Changelog: v0.26.0...v0.27.0
v0.26.0
Compatibility breaks
** You may need to replace EmplaceUnpinned
with Emplace
.
Changes
- Test and fix for 1289 ("Support for anonymous enums") by @badicsalex in #1291
- Fix moveit unsoundness by @adetaylor in #1298 (mostly thanks to @silvanshade!)
- Upgrade to bindgen 0.65.1. by @maurer in #1293
- Fix namespaced destructors and reject unions by @adetaylor in #1264
- fix: feature flag for runtime by @gen-xu in #1277
- Fix diagnostics for in-line subclass macro. by @adetaylor in #1283
- cargo update to remove vulnerable version of time. by @adetaylor in #1284
- Clippy fix. by @adetaylor in #1288
- Update issue templates by @adetaylor in #1290
- Update to syn-2 by @maurer in #1286
- Reference wrapper changes by @adetaylor in #1292
- Fix reference wrappers + mutable refs problem. by @adetaylor in #1295 and #1296
- Add test for unsoundness. by @adetaylor in #1274
- Testing and documenting dynamic dispatch for CppRef. by @adetaylor in #1297
- Add va_list test. by @adetaylor in #1263
- Better diagnostics for pointer-to-pointer cases by @adetaylor in #1272
- Add comment explaining RValueParamHandler. by @adetaylor in #1273
- Fix typo. by @adetaylor in #1275
New Contributors
- @gen-xu made their first contribution in #1277
- @badicsalex made their first contribution in #1291
- @maurer made their first contribution in #1286
- @silvanshade made their first contribution in #1285
Full Changelog: v0.25.0...v0.26.0
v0.25.0
What's Changed
Features
- Allow constructing subclass of abstract class by @russelltg in #1206
- Add an option to
autocxx_gen
to createcxx.h
by @nak3 in #1253 - Print the number of files generated in the error of
--generate-exact
by @nak3 in #1247
Bug fixes
- Fix a multiple definition error by @adetaylor in #1240 (add test for issue #1229 by @VirxEC in #1235)
- Reduce the number of dependencies on std by @kitlith in #1224
- Remove no mod found error by @adetaylor in #1242
- Fix problem using copy constructor of Box by @adetaylor in #1241
- Fix codegen of 'missing lifetimes' when functions have
&mut
return but no&mut
params by @adetaylor in #1254 - Automatically create
outdir
if it doesn't exist by @Jake-Shadle in #1225
Documentation and examples
- Add some generic advice about linking. by @adetaylor in #1227
- Make help message of
gen-rs-include
accurate by @nak3 in #1234 - Fix comment about
AUTOCXX_RS_JSON_ARCHIVE
by @nak3 in #1232 - Do not use deprecated macro
is_subclass
in examples by @nak3 in #1245 - Add llvm example for CI by @nak3 in #1248
- fix 404 in examples document by @htynkn in #1257
Miscellaneous
- Revise to 0.25.0. by @adetaylor in #1258
- Fix
remove_dir_all
security alert by @adetaylor in #1259 - Tests forcing wrappers by @adetaylor in #1250
- Tweaks to reduction by @adetaylor in #1249
New Contributors (thanks all!)
- @Jake-Shadle made their first contribution in #1225
- @kitlith made their first contribution in #1224
- @VirxEC made their first contribution in #1235
- @russelltg made their first contribution in #1206
- @htynkn made their first contribution in #1257
Full Changelog: v0.24.0...v0.25.0
v0.24.0
What's Changed: new minor features
- Support
pod
extern_cpp_types
by @adetaylor in #1193 - Relatedly: Add documentation about the limits of
extern_cpp_types
by @adetaylor in #1221
What's Changed: useful bugfixes
- Fix enum
u16
representation. by @adetaylor in #1223 - Avoid unnecessary rebuilds by @adetaylor in #1219
- Make cxxgen.h names predictable in autocxx-build by @adetaylor in #1220
What's changed: other stuff
- Clippy fixes by @adetaylor in #1199
- Add a note about unsafety of reference wrappers. by @adetaylor in #1202
- Bump autocxx version in examples/llvm by @nak3 in #1213
- Fix typo in autocxx::concrete by @nak3 in #1209
- Bump miette to v5.x for examples/cpp_calling_rust by @nak3 in #1208
- Remove unnecessary memory include in subclass examples by @nak3 in #1210
- Update building.md to include flag syntax for msvc by @aaronrsiphone in #1203
- Latest clippy checks by @adetaylor in #1216
- Improve diagnostics for wrong filename by @adetaylor in #1218
- Fix doc build issue by @adetaylor in #1217
- Revise to 0.24.0 by @adetaylor in #1222
- Cargo publish now waits automatically. by @adetaylor in #1226
New Contributors
- @nak3 made their first contribution in #1213 (thanks!)
- @aaronrsiphone made their first contribution in #1203 (thanks!)
- Thanks also to those who raised bug reports
Full Changelog: v0.23.1...v0.24.0
v0.23.1
What's Changed
- Fix problem with field circular dependencies by @adetaylor in #1187
- Revise to 0.23.1 by @adetaylor in #1188
Full Changelog: v0.23.0...v0.23.1
v0.23.0
What's Changed
The major change here is a lot of rework of the safety!(unsafe_references_wrapped)
mode, based on the researches done here. This is a compatibility break, but only if you're using that mode.
- Rewrite reference_wrapper.rs to be structs. by @adetaylor in #1164
There are also significant bug fixes to extern_rust_type!()
as noted below.
Other features
- Support
extern_cpp_type!
with a different name by @bsilver8192 in #1150 (thanks!)
Bug fixes
- Fix problem with functions returning references which took non-reference parameters. by @adetaylor in #1156
- Merge bindgen upstream 0.62 by @adetaylor in #1183 (fixes an incompatibility with the latest clang, #1182)
- Fix 1161 by @adetaylor in #1162 (a problem with
extern_rust_type
) - Extern rust fun type checking by @adetaylor in #1168 (thanks to "Add failing test for extern_rust_function" by @Ravenslofty in #1166)
- Fix movability of structs with enum fields by @adetaylor in #1179
Misc changes
- Remove extra logging by @adetaylor in #1157
- Rust 1.64 clippy lint. by @adetaylor in #1160
- Partial fix for issue 1097. by @adetaylor in #1158
- Revise cxx to 1.0.78. by @adetaylor in #1163
- Slight reduction speedup. by @adetaylor in #1171
- Format tomls by @adetaylor in #1175
- Update deps, format TOML by @vorot93 in #1152
- Adding a test. by @adetaylor in #1173
- Remove dependency on rustc_version. by @adetaylor in #1176
- Reduce includes a call to
rustc
by @adetaylor in #1172 - Nightly clippies by @adetaylor in #1184
- Work towards handling
=default
functions by @adetaylor in #1180
New Contributors
- @Ravenslofty made their first contribution in #1166
- @vorot93 made their first contribution in #1152
Full Changelog: v0.22.4...v0.23.0
v0.22.4
What's Changed
- Pretty print using prettyplease instead of rustfmt by @dtolnay in #1127
- Disable windows GNU by @adetaylor in #1136
- Bump mdbook to fix build on nightly by @bsilver8192 in #1139
- Generate
impl UniquePtr
for abstract types too by @bsilver8192 in #1137 - Fix new clippy and doc warnings in 1.63.0 by @bsilver8192 in #1148
- Support multiple AUTOCXX_RS_JSON_ARCHIVE entries by @bsilver8192 in #1147
- Add failing test case, issue 1143 by @boydjohnson in #1145
- Revise to autocxx-bindgen 0.60.1 by @adetaylor in #1149
- Update autocxx-bindgen and bump version to 0.22.4 by @chbaker0 in #1153
- Revise to 0.22.4. by @adetaylor in #1154
New Contributors
- @boydjohnson made their first contribution in #1145
Full Changelog: v0.22.3...v0.22.4