0.4.0-beta1 (2023-05-10)
Please test and provide feedback for issues you encounter. We are especially interested in receiving feedback for the things in the experimental section of the release notes, especially the cbindgen and cxxbridge integration.
Changes compared to v0.3.5:
Breaking Changes
- The Visual Studio Generators now require at least CMake 3.20.
This was previously announced in the 0.3.0 release notes and is the same
requirement as for the other Multi-Config Generators. - The previously deprecated function
corrosion_set_linker_language()
will now raise an error when called and may be removed without further
notice in future stable releases. Usecorrosion_set_linker()instead. - Improved the FindRust target triple detection, which may cause different behavior in some cases.
The detection does not require an enabled language anymore and will always fall back
to the default host target triple. A warning is issued if target triple detection failed.
Potentially Breaking Changes
- Corrosion now sets the
IMPORTED_NO_SONAMEproperty for shared rust libraries, since by
default they won't have ansonamefield.
If you add a rustflag like-Clink-arg=-Wl,-soname,libmycrate.soin your project,
you should set this property to false on the shared rust library. - Corrosion now uses a mechanism to determine which native libraries need to be linked with
Ruststaticlibtargets into C/C++ targets. The previous mechanism contained a hardcoded list.
The new mechanism asksrustcwhich libraries are needed at minimum for a given
target triple (withstdsupport). This should not be a breaking change, but if you
do encounter a new linking issue when upgrading withstaticlibtargets, please open an
issue.
New features
corrosion_import_crate()has two new optionsLOCKEDandFROZENwhich pass the
--lockedand--frozenflags to all invocations of cargo.FindRustnow provides cache variables containing information on the default host
target triple:Rust_CARGO_HOST_ARCHRust_CARGO_HOST_VENDORRust_CARGO_HOST_OSRust_CARGO_HOST_ENV
Other changes
- When installing Corrosion with CMake >= 3.19, the legacy Generator tool is
no longer built and installed by default. - Corrosion now issues a warning when setting the linker or setting linker
options for a Rust static library. - Corrosion no longer enables the
Clanguage when CMake is in crosscompiling mode and
no languages where previously enabled. This is not considered a breaking change. corrosion_import_crate()now warns about unexpected arguments.
Fixes
- Fix building when the
devprofile is explicitly set by the user.
Experimental status (may be changed or removed before a stable release)
- Experimental cxxbridge and cbindgen integration.
- Add a helper function to parse the package version from a Cargo.toml file
- Expose rustup toolchains discovered by
FindRustin the following cache variables
which contain a list.Rust_RUSTUP_TOOLCHAINS: List of toolchains namesRust_RUSTUP_TOOLCHAINS_VERSION: List ofrustcversion of the toolchainsRust_RUSTUP_TOOLCHAINS_RUSTC_PATH: List of the path torustcRust_RUSTUP_TOOLCHAINS_CARGO_PATH: List of the path tocargo. Entries may beNOTFOUNDif cargo
is not available for that toolchain.
- Add target properties
INTERFACE_CORROSION_RUSTCandINTERFACE_CORROSION_CARGO, which may
be set to paths torustcandcargorespectively to override the toolchain for a specific
target.