New features (in development)

Cargo workspace object

Meson now is able to parse the toplevel Cargo.toml file of the project when the workspace() method of the Rust module is called. This guarantees that features are resolved according to what is in the Cargo.toml file, and in fact enables configuration of features for the build.

The returned object also allows retrieving features and dependencies for Cargo subprojects.

While Cargo subprojects remain experimental, the Meson project will try to keep the workspace object reasonably backwards-compatible.

install_man: add support install_tag kwarg

By default install_man uses 'man' tag for its files which not always is desirable, for example if project uses plugin functionality and plugin wants to install its own man files it was not possible using meson install --tags xxx.

-Db_lto and -Db_pgo now supported for MSVC

-Db_lto is now supported for MSVC's /LTCG, as is -Db_lto_mode=thin for /LTCG:INCREMENTAL. -Db_pgo is also supported, and should be used alongside -Db_lto=true.

Python extension modules default to C ABI for Rust

py.extension_module() now defaults rust_abi to 'c', so that Rust extension modules produce a cdylib instead of a dylib. This is the correct crate type for Python extension modules written in Rust, and previously had to be specified manually via rust_crate_type: 'cdylib' or rust_abi: 'c'.

Change to handling of linker arguments for Rust

Since the Rust compiler integrates the compiler and linker phase, previous Meson versions did not obey link_args, add_project_link_arguments or add_global_link_arguments.

Starting in this version, add_project_link_arguments(), add_global_link_arguments(), and the link_args keyword argument are supported for Rust. They wrap the arguments with -Clink-arg= when invoking rustc, and are only included when creating binary or shared library crates.

Likewise, methods such as has_link_argument() now wrap the arguments being tested with -Clink-arg=.

XC32 support now aware of v5.00 features

XC32 features introduced in v5.00 can now be used. This includes support for LTO auto and the C2x and CPP23 standards.

windows.compile_resources now detects header changes with rc.exe

The rc.exe resource compiler neither provides depfile support nor allows showing includes, as is possible with C or C++ compilers. Therefore, changes to files included by the .rc file did not trigger recompilation of the resource file.

A workaround was added to meson by calling the preprocessor on the .rc file to display the included headers and allow ninja to record them as dependencies.

Added implicit_include_directories argument to windows.compile_resources

Windows module compile_resources now have a implicit_include_directories keyword argument to automatically add current build and source directories to the included paths when compiling a resource.

The results of the search are