Meson 1.3.0 has been released by the assembly system provider, Meson. The Meson assembly system is widely used in projects such as X.org Server, Mesa, Lighttpd, Systemd, Gstreamer, Wayland, Gnome, and GTK. The code of Meson is written in Python and is distributed under the Apache 2.0 license.
The main goal of Meson’s development is to achieve a high assembly speed along with convenience and ease of use. Instead of the MAKE utility, the default Ninja tools are used, but other backends such as Xcode and Visual Studio can also be utilized. The system incorporates a versatile dependency processor, allowing Meson to assemble packages for distributions. The assembly rules are specified in a simplified domain-specific language with good readability, intended to minimize the time spent by developers writing the rules.
Meson, in its latest version 1.3, supports cross-compilation and assembly in various operating systems including Linux, Illumos/Solaris, FreeBSD, NetBSD, Dragonfly BSD, Haiku, MacOS, and Windows. It works with compilers like GCC, Clang, and Visual Studio. Projects can be assembled in multiple programming languages such as C, C++, Fortran, Java, and Rust. It also offers an incremental assembly mode where only components related to the changes made since the last assembly are reconfigured. This allows for the generation of identical executable files across different environments.
Here are the key new features of Meson 1.3:
- The option “Werror: True” has been added to the methods of checking the compiler. This treats compiler warnings as errors, which can be useful to ensure the code is assembled without any warnings.
- A new method, Has_define, has been added to check the definition of symbols by the preprocessor.
- In the configure_file method, a parameter called Macro_name has been added. This parameter adds macro protection to the output, preventing double inclusion through “#INCLUDE Guards” in the style of macros in SI. This simplifies the creation of configure files with dynamic macro names.
- The configure_file method now supports a new output format, json.
- The parameters C_STD and CPP_STD now support the use of lists of values. For example, “Default_options: ‘c_std = gnu11, c11′”.
- In modules that use Custom