published the release of the assembly system meson 1.0.0 , which is used to assemble such projects as X.org Server, Mesa, Lighttpd, Systemd, Gstreamer, Wayland, Gnome and GTK. The Meson code is written in Python and supplies under the license Apache 2.0.
The key goal of the development of Meson is to ensure a high speed of the assembly process in combination With convenience and ease of use. Instead of the MAKE utility, the Ninja tools are used by default, but it is possible to use other backens, such as Xcode and VisualStudio. The system has built a multi -platform dependency processor that allows the use of Meson to assemble packages for distributions. The assembly rules are specified in a simplified subject-oriented language, are distinguished by good readability and understandable to the user (according to the author’s idea, the developer should spend a minimum of time writing the rules).
supported Cross-compilation and assembly in Linux, Illumos/Solaris, FreeBSD, NETBSD, NETBSD, NETBSD, NETBSD Dragonfly BSD, Haiku, MacOS and Windows using GCC, Clang, Visual Studio and other compilers. It is possible to assemble projects in various programming languages, including C, C ++, Fortran, Java and Rust. The incidental assembly mode is maintained, in which only components are re -registered directly related to the changes made from the moment of last assembly. Meson can be used to form repeated assemblies in which the assembly launch in different environment leads to the generation of fully identical executable files.
The main innovations meson 1.0:
- declared a stable module for assembling projects in Rust. This module is used in the MESA project to assemble components written on Rust.
- In the Prefix parameter, which is supported in most functions of checking the compiler, the possibility of processing arrays in addition to lines is implemented. For example, now you can indicate: cc.check_header (‘gl/wlw.h’, prefix: [‘#include’, ‘#include’])
- Added a new argument “–workdir”, which allows to reduce the working catalog. For example, for the use of the current catalog, instead of a worker, you can start: Meson Devenv -c Builddir –workdir.
- The new operators “in” and “not in” are proposed to determine the entry into the line of tuning by analogy with the previously accessible verification of the entry of the element into an array or dictionary. For example: fs = import (‘fs’) if’ some “in fs.read (‘somefile’) # true endif
- Added option “Warning -Level = EVERYTHING”, which includes the withdrawal of all available compiler warnings (in Clang and MSVC uses -weVrything and /Wall, and warning is separately included in the GCC, approximately corresponding to the -weaverything vclang).
- In the Rust.bindgen method, the possibility of processing the “Dependencies” argument is implemented to transmit ways to dependencies that should be processed by the compiler.
- The function of Java.generate_native_headers, which is renamed Java.native_headers, has been announced to comply with the general style of the name of the functions adopted in Meson.
)