New features (in development)

Target introspection reports all direct target dependencies

The depends entry in intro-targets.json now reports direct target dependencies from target inputs, generated sources, extracted objects, internal linking, and explicit depends arguments. Previously it only reported the dependencies attribute used by alias and run targets, so most build target and custom target dependencies were omitted.

Allow using generator with any build_tgt object

Passing any build target to generator.process() is now allowed.

Jar files are now installed reproducibly

Installing a jar target used to invoke the jar tool to strip the Class-Path attribute from its manifest, even when there was none. This replaced the manifest's timestamp inside the jar with the time of installation, so two builds of the same sources produced different installed jars.

Manifests are now edited with Python's zipfile module instead. Jars without a Class-Path attribute are installed unmodified, and when the attribute has to be stripped, all entry metadata such as timestamps is preserved. As a side effect, the jar binary is no longer needed at install time.

meson.can_run_host_binaries() now accounts for Rosetta 2 on Apple Silicon

Previously, when cross-compiling for x86_64 on an aarch64 Mac, meson.can_run_host_binaries() (and the underlying needs_exe_wrapper logic) always returned false, even though Rosetta 2 lets these Macs execute x86_64 binaries directly. Meson now detects whether Rosetta 2 is installed and, if so, reports that x86_64 host binaries can run natively without requiring an exe_wrapper.

c_std=clatest support for MSVC

The option enables all currently implemented compiler and standard library features proposed in the next draft C standard, as well as some in-progress and experimental features.

Per-subproject language arguments are now applied

Compiler and linker arguments set for a specific subproject, for example -Dsub:c_args=-DFOO on the command line or c_args in the default_options of a subproject() call, are now added to the compile and link commands of that subproject's targets. Previously such values were accepted and stored but silently ignored.

Similarly, <lang>_args and <lang>_link_args entries in a target's override_options now take effect.

In all cases the per-subproject or per-target value replaces the global value (including flags coming from environment variables such as CFLAGS), it is not appended to it. This matches what get_option('c_args') already returned inside a subproject.

Use werror for gnome.generate_gir(fatal_warnings:)

If fatal_warnings is not passed to gnome.generate_gir(), the value of the werror option is now read to determine whether to turn it on. Explicitly passing fatal_warnings: true or fatal_warnings: false still takes precedence over werror.

Wild linker is now supported on Linux

When CC_LD environment variables is set to wild, Meson will configure GCC 16+ or Clang to use Wild as the linker on Linux. You should expect to see line like this in the output: C linker for the host machine: cc ld.wild 0.10.0 confirming that Wild was picked up.

The results of the search are