QEMU 11.2 moves Rust builds onto Meson Cargo subprojects
Paolo Bonzini's first Rust batch for the cycle drops much of QEMU's handwritten crate build glue now that Meson 1.12 can drive Cargo natively.
QEMU is dropping large pieces of custom Rust build machinery in favor of Meson's built-in Cargo subproject support, a change Paolo Bonzini posted as the first Rust-focused batch aimed at the 11.2 cycle.
Until now QEMU invoked rustc itself and kept a thicket of handwritten rules and helper scripts so Meson could build external crates and QEMU's own Rust code. That approach existed because earlier Meson releases could not resolve a shared lockfile, handle Cargo workspaces, parse feature sets from Cargo.toml, or cleanly manage build-machine crates for cross compilation. Meson 1.12 closes those gaps, which is why QEMU is raising its Rust-related Meson requirement and switching crate builds to Cargo subprojects with autogenerated rules.
The practical effect is less duplicated metadata: dependencies and editions no longer need to be listed in both Cargo manifests and Meson files, lint handling moves into Meson, and dead helper logic can go. Developers who prefer Cargo for clippy, rustfmt, and rustdoc keep that path; the default make or ninja build still links static Rust libraries into the C binary without calling Cargo as the top-level driver.
Bonzini frames the work as finishing a plan sketched in 2024: use Cargo subprojects for dependent crates rather than shelling out to Cargo the way projects such as libblkio do. The same foundation could later let QEMU build components such as libigvm in-tree, helped by Meson 1.12's simpler cbindgen handling. Accompanying the structural switch is a routine refresh of Cargo-only dependencies, several of which have now reached 1.x and should be less churny going forward.