The latest version of the assembly system Meson, version 1.6.0, has been published on GitHub. Meson is a widely used assembly system for projects such as X.org Server, Mesa, Lighttpd, Systemd, Gstreamer, Wayland, Gnome, and GTK. Written in Python, Meson is distributed under the Apache 2.0 license.
The primary objective of Meson’s development is to provide a fast assembly process while ensuring convenience and ease of use. Unlike the MAKE utility, Meson defaults to using Ninja tools, but it also supports other backends such as Xcode and Visual Studio. The system includes a versatile dependency processor, allowing users to assemble packages for distributions using Meson. The assembly rules are written in a simplified domain-specific language that aims for readability and user-friendliness, with the goal of minimizing the time developers spend writing these rules.
Meson supports cross-compilation and assembly on various operating systems including Linux, Illumos/Solaris, FreeBSD, NetBSD, Dragonfly BSD, Haiku, MacOS, and Windows using compilers like GCC, Clang, and Visual Studio. Projects can be assembled in different programming languages such as C, C++, Fortran, Java, and Rust. The system also maintains an incremental assembly mode, where only components directly related to changes made since the last assembly are reconfigured. This allows for the generation of identical executable files when the project is assembled in different environments.
The key innovations in Meson 1.6.0 include the addition of the “Meson Reprotest” command for testing repeated assemblies, support for the flang compiler developed by the LLVM project, and support for the SDK DIA platform which enables reading debug information in the PDB format used on Windows. Additionally, the update introduces the ability to choose SI and SI++ standards in compilers NVC and NVC++ from NVIDIA, support for specific QT utilities through Has_Tools() functions, compatibility with the OpenXL compiler on AIX platform, default warnings for outdated features, and support for using variables in system dependencies.