Veröffentlichung des Meson 0.58-Montagesystems. Projekt zur Erstellung einer Implementierung von Meson in der Sprache C

Die Veröffentlichung des Build-Systems Meson 0.58 wurde veröffentlicht, mit dem Projekte wie X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME und GTK erstellt werden. Der Meson-Code ist in Python geschrieben und steht unter der Apache 2.0-Lizenz.

Das wichtigste Entwicklungsziel von Meson ist die Bereitstellung eines Hochgeschwindigkeitsmontageprozesses in Kombination mit Komfort und Benutzerfreundlichkeit. Anstelle von make verwendet der Build standardmäßig das Ninja-Toolkit, es können aber auch andere Backends wie xcode und VisualStudio verwendet werden. Das System verfügt über einen integrierten Multiplattform-Abhängigkeitshandler, der es Ihnen ermöglicht, Meson zum Erstellen von Paketen für Distributionen zu verwenden. Assemblerregeln werden in einer vereinfachten domänenspezifischen Sprache festgelegt, sie sind für den Benutzer gut lesbar und verständlich (nach der Idee der Autoren sollte der Entwickler möglichst wenig Zeit mit dem Schreiben von Regeln verbringen).

Cross-Kompilierung und Erstellung auf Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS und Windows mit GCC, Clang, Visual Studio und anderen Compilern wird unterstützt. Es ist möglich, Projekte in verschiedenen Programmiersprachen zu erstellen, darunter C, C++, Fortran, Java und Rust. Es wird ein inkrementeller Build-Modus unterstützt, bei dem nur Komponenten neu erstellt werden, die in direktem Zusammenhang mit Änderungen stehen, die seit dem letzten Build vorgenommen wurden. Meson kann zum Generieren wiederholbarer Builds verwendet werden, wobei die Ausführung des Builds in verschiedenen Umgebungen dazu führt, dass völlig identische ausführbare Dateien generiert werden.

Wichtigste Neuerungen von Meson 0.58:

  • Meson verfügt über integrierte String-Formatierungsoperationen. Anstatt die Formatierungsmethode aufzurufen, können Sie jetzt Werte direkt ersetzen. Beispielsweise können Sie anstelle von „'A string @0@ to be formatted @1@'.format(n, m)“ sofort „f“ angeben. Eine Zeichenfolge @n@, die mit @ m@' formatiert werden soll.
  • String-Objekten wurde eine „replace“-Methode hinzugefügt, um den Vorgang des Ersetzens eines Teilstrings durch einen anderen durchzuführen, zum Beispiel „s = s.replace(‚aaa‘, ‚bbb‘)“.
  • Funktion „range(start, stop[, step])“ hinzugefügt, um ein Objekt zurückzugeben, das in einer foreach-Schleife verwendet werden kann, z. B. „foreach i : range(15)“.
  • Die Methode meson.add_devenv() wurde implementiert, sodass Sie ein Environment()-Objekt hinzufügen können, um Umgebungsvariablen festzulegen, wenn Sie den Befehl „meson devenv“ verwenden, um beispielsweise eine Umgebungsvariable mit dem Pfad zum Plugins-Verzeichnis festzulegen.
  • Für Entwicklungsumgebungen wurde ein neuer Befehl vorgeschlagen: „meson devenv -C builddir []“, der es ermöglicht, den Befehl in einer Umgebung auszuführen, die so konfiguriert ist, dass Projekte aus dem Build-Verzeichnis gestartet werden (ohne Installation).
  • Standardmäßig wird die Übergabe der Option „-pipe“ bei der Ausführung aller unterstützten Compiler gestoppt.
  • Der Aufruf von meson.add_dist_script() aus Teilprojekten ist zulässig.
  • Bietet die Möglichkeit, die Methoden append() und prepend() mehrmals auf demselben Environment()-Objekt auszuführen.
  • Die Funktion error() lässt mehr als ein Argument zu, getrennt durch ein Leerzeichen (ähnlich wie warning() und message()).
  • Option „--skip-subprojects“ hinzugefügt, um die Installation von Teilprojekten selektiv zu überspringen.

Unabhängig davon können wir das Boson-Projekt erwähnen, das darauf abzielt, eine portable und einfache Implementierung der Assembler-Skriptsprache Meson zu erstellen, die in C statt in Python geschrieben ist. Das Projekt befindet sich noch im Anfangsstadium der Entwicklung und ist noch nicht bereit für die vollständige Montage funktionsfähiger Projekte. Der Code ist unter GPLv3 lizenziert (das ursprüngliche Python Meson ist unter der Apache 2.0-Lizenz lizenziert).

Source: opennet.ru

Kommentar hinzufügen