Die Version 1.0.0 des Build-Systems Meson wurde veröffentlicht, das fĂŒr die Erstellung von Projekten wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK verwendet wird. Der Code von Meson ist in Python geschrieben und wird unter der Apache 2.0 Lizenz bereitgestellt.
Ein zentrales Entwicklungsziel von Meson ist es, eine hohe Geschwindigkeit des Build-Prozesses zu gewĂ€hrleisten, gepaart mit Benutzerfreundlichkeit und Einfachheit. Anstelle des Tools make wird standardmĂ€Ăig das Ninja-Toolset verwendet, jedoch können auch andere Backends wie xcode und VisualStudio eingesetzt werden. Das System enthĂ€lt einen plattformĂŒbergreifenden AbhĂ€ngigkeitsmanager, der es ermöglicht, Meson zur Erstellung von Paketen fĂŒr Distributionen zu verwenden. Die Build-Regeln werden in einer vereinfachten, domĂ€nenorientierten Sprache festgelegt, die eine gute Lesbarkeit aufweist und fĂŒr den Benutzer verstĂ€ndlich ist (laut den Autoren sollte der Entwickler so wenig Zeit wie möglich mit dem Schreiben von Regeln verbringen).
Cross-Compilation und Builds werden fĂŒr Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS und Windows mit GCC, Clang, Visual Studio und anderen Compilern unterstĂŒtzt. Es ist möglich, Projekte in verschiedenen Programmiersprachen, einschlieĂlich C, C++, Fortran, Java und Rust, zu kompilieren. Der inkrementelle Build-Modus wird unterstĂŒtzt, bei dem nur die Komponenten neu kompiliert werden, die direkt mit den seit dem letzten Build vorgenommenen Ănderungen verbunden sind. Meson kann verwendet werden, um reproduzierbare Builds zu erstellen, bei denen das AusfĂŒhren des Builds in verschiedenen Umgebungen die Erzeugung vollstĂ€ndig identischer ausfĂŒhrbarer Dateien zur Folge hat.
Neuigkeiten in Meson 1.0:
- Ein stabiler Modul fĂŒr die Projekterstellung in Rust wurde angekĂŒndigt. Dieses Modul wird im Mesa-Projekt zur Kompilierung von Komponenten verwendet, die in Rust geschrieben sind.
- Die prefix-Option, die in den meisten Compiler-Check-Funktionen unterstĂŒtzt wird, kann jetzt Arrays neben Strings verarbeiten. Zum Beispiel kann jetzt angegeben werden: cc.check_header(âGL/wglew.hâ, prefix : [â#include â, â#include â])
- Ein neues Argument ââworkdirâ wurde hinzugefĂŒgt, das es ermöglicht, das Arbeitsverzeichnis zu ĂŒberschreiben. Um beispielsweise das aktuelle Verzeichnis anstelle des Arbeitsverzeichnisses zu verwenden, kann Folgendes gestartet werden: meson devenv -C builddir âworkdir .
- Neue Operatoren âinâ und ânot inâ wurden vorgeschlagen, um das Vorkommen einer Teilzeichenfolge in einer Zeichenfolge Ă€hnlich der zuvor verfĂŒgbaren ĂberprĂŒfung des Vorkommens eines Elements in einem Array oder Dictionary zu bestimmen. Zum Beispiel: fs = import(âfsâ) if âsomethingâ in fs.read(âsomefileâ) # True endif
- Eine Option âwarning-level=everythingâ wurde hinzugefĂŒgt, die die Ausgabe aller vorhandenen Compiler-Warnungen aktiviert (in clang und MSVC wird -Weverything und /Wall verwendet, wĂ€hrend in GCC Warnungen getrennt aktiviert werden, die ungefĂ€hr dem Modus -Weverything in clang entsprechen).
- Im Methodensatz rust.bindgen wurde die Möglichkeit zur Verarbeitung des Arguments âdependenciesâ implementiert, um Pfade zu AbhĂ€ngigkeiten zu ĂŒbergeben, die vom Compiler verarbeitet werden mĂŒssen.
- Die Funktion java.generate_native_headers wurde als veraltet erklÀrt und in java.native_headers umbenannt, um dem allgemeinen Stil der Funktionsbenennung zu entsprechen, der in Meson angenommen wurde.
Quelle: opennet.ru
