Udgivelsen af Meson 1.0.0 byggesystemet er blevet offentliggjort, som bruges til at bygge projekter som X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME og GTK. Meson-koden er skrevet i Python og er licenseret under Apache 2.0-licensen.
Det vigtigste udviklingsmål for Meson er at levere en højhastigheds monteringsproces kombineret med bekvemmelighed og brugervenlighed. I stedet for at lave bruger buildet Ninja-værktøjssættet som standard, men andre backends såsom xcode og VisualStudio kan også bruges. Systemet har en indbygget multi-platform afhængighedshandler, der giver dig mulighed for at bruge Meson til at bygge pakker til distributioner. Samlingsregler er sat i et forenklet domænespecifikt sprog, de er letlæselige og forståelige for brugeren (ifølge forfatternes idé skal udvikleren bruge minimum tid på at skrive regler).
Krydskompilering og bygning på Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS og Windows ved hjælp af GCC, Clang, Visual Studio og andre compilere understøttes. Det er muligt at bygge projekter i forskellige programmeringssprog, herunder C, C++, Fortran, Java og Rust. En inkrementel build-tilstand er understøttet, hvor kun komponenter, der er direkte relateret til ændringer foretaget siden den sidste build, genopbygges. Meson kan bruges til at generere gentagelige builds, hvor kørsel af build i forskellige miljøer resulterer i fuldstændig identiske eksekverbare filer.
Vigtigste innovationer i Meson 1.0:
- Modulet til byggeprojekter i Rust-sproget er erklæret stabilt. Dette modul bruges i Mesa-projektet til at bygge komponenter skrevet i Rust.
- Understøttet af de fleste compilerkontrolfunktioner implementerer præfiksindstillingen muligheden for at håndtere andre arrays end strenge. For eksempel kan du nu angive: cc.check_header('GL/wglew.h', præfiks: ['#include ', '#inkluder '])
- Et nyt "--workdir"-argument er blevet tilføjet for at tillade dig at tilsidesætte arbejdsmappen. For at bruge den aktuelle mappe i stedet for arbejdsmappen, kan du for eksempel køre: meson devenv -C builddir --workdir .
- Nye operatorer "in" og "not in" foreslås til at bestemme forekomsten af en understreng i en streng, svarende til den tidligere tilgængelige kontrol for forekomsten af et element i en matrix eller ordbog. For eksempel: fs = import('fs') if 'noget' i fs.read('somefile') # True endif
- Tilføjet "warning-level=everything" mulighed for at aktivere output af alle tilgængelige compiler advarsler (i clang og MSVC bruger -Weverything og /Wall, og i GCC er separate advarsler inkluderet, hvilket nogenlunde svarer til -Weverything tilstanden i clang).
- Rust.bindgen-metoden implementerer evnen til at behandle "afhængigheder"-argumentet for at videregive stier til afhængigheder, der skal behandles af compileren.
- Funktionen java.generate_native_headers er blevet forældet og omdøbt til java.native_headers for at matche Mesons generelle funktions navngivningsstil.
Kilde: opennet.ru