Versione del sistema di compilazione Meson 1.0

È stato rilasciato il sistema di build Meson 1.0.0, che viene utilizzato per creare progetti come X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. Il codice di Meson è scritto in Python ed è concesso in licenza con la licenza Apache 2.0.

L'obiettivo principale dello sviluppo di Meson è fornire un'elevata velocità del processo di assemblaggio unita a praticità e facilità d'uso. Al posto dell'utilità make, durante la creazione viene utilizzato per impostazione predefinita il toolkit Ninja, ma è possibile utilizzare anche altri backend come xcode e VisualStudio. Il sistema dispone di un gestore di dipendenze multipiattaforma integrato che consente di utilizzare Meson per creare pacchetti per le distribuzioni. Le regole di assemblaggio sono specificate in un linguaggio semplificato specifico del dominio, sono altamente leggibili e comprensibili per l'utente (come previsto dagli autori, lo sviluppatore dovrebbe dedicare un minimo di tempo alla scrittura delle regole).

Supporta la compilazione incrociata e la creazione su Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS e Windows utilizzando GCC, Clang, Visual Studio e altri compilatori. È possibile realizzare progetti in vari linguaggi di programmazione, tra cui C, C++, Fortran, Java e Rust. È supportata la modalità di compilazione incrementale, in cui vengono ricostruiti solo i componenti direttamente correlati alle modifiche apportate dall'ultima compilazione. Meson può essere utilizzato per generare build ripetibili, in cui l'esecuzione della build in ambienti diversi determina la generazione di file eseguibili completamente identici.

Principali innovazioni di Meson 1.0:

  • Un modulo per costruire progetti in linguaggio Rust è stato dichiarato stabile. Questo modulo viene utilizzato nel progetto Mesa per creare componenti scritti in Rust.
  • L'opzione del prefisso, supportata nella maggior parte delle funzioni di controllo del compilatore, offre la possibilità di gestire matrici oltre alle stringhe. Ad esempio, ora puoi specificare: cc.check_header('GL/wglew.h', prefix : ['#include ', '#includere '])
  • Aggiunto nuovo argomento "--workdir" per consentire l'override della directory di lavoro. Ad esempio, per utilizzare la directory corrente invece della directory di lavoro, è possibile eseguire: meson devenv -C builddir --workdir .
  • Sono stati proposti nuovi operatori “in” e “not in” per determinare la presenza di una sottostringa in una stringa, simili al controllo precedentemente disponibile per la presenza di un elemento in un array o dizionario. Ad esempio: fs = import('fs') if 'qualcosa' in fs.read('qualchefile') # True endif
  • Aggiunta l'opzione “warning-level=everything”, che attiva l'output di tutti gli avvisi disponibili del compilatore (in clang e MSVC utilizza -Weverything e /Wall, e in GCC gli avvisi sono inclusi separatamente, corrispondenti approssimativamente a -Weverything modalità in clangore).
  • Il metodo ruggine.bindgen implementa la capacità di gestire l'argomento "dipendenze" per passare percorsi alle dipendenze che dovrebbero essere elaborate dal compilatore.
  • La funzione java.generate_native_headers è stata deprecata e rinominata java.native_headers per conformarsi allo stile di denominazione delle funzioni comuni di Meson.

Fonte: opennet.ru

Aggiungi un commento