È stato pubblicato il rilascio del sistema di build Meson 0.58, utilizzato per la costruzione di progetti come X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME e GTK. Il codice di Meson è scritto in Python e distribuito sotto la licenza Apache 2.0.
L'obiettivo principale dello sviluppo di Meson è garantire un elevato livello di velocità del processo di build insieme a facilità d'uso e semplicità. Invece dell'utilità make, per impostazione predefinita viene utilizzato lo strumento Ninja, ma è possibile anche utilizzare altri backend come xcode e VisualStudio. Il sistema integra un gestore delle dipendenze multipiattaforma, consentendo di utilizzare Meson per la costruzione di pacchetti per le distribuzioni. Le regole di build sono definite in un linguaggio semplificato e specifico del dominio, caratterizzate da una buona leggibilità e comprensibili per l'utente (secondo le intenzioni degli autori, il programmatore dovrebbe spendere il minimo tempo possibile nella scrittura delle regole).
Support for cross-compilation and building on Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS, and Windows using GCC, Clang, Visual Studio, and other compilers. Projects can be built in various programming languages, including C, C++, Fortran, Java, and Rust. An incremental build mode is supported, where only the components directly related to the changes made since the last build are rebuilt. Meson can be used to create reproducible builds, ensuring that running the build in different environments generates completely identical executables.
Novità principali di Meson 0.58:
- Il linguaggio Meson introduce operazioni di formattazione delle stringhe integrate. Invece di chiamare il metodo format, è ora possibile inserire i valori direttamente, ad esempio, invece di ‘A string @0@ to be formatted @1@’.format(n, m) si può scrivere direttamente ‘f’A string @n@ to be formatted @m@'.
- Aggiunto il metodo ‘replace’ agli oggetti stringa per eseguire operazioni di sostituzione di una sottostringa con un'altra, ad esempio ‘s = s.replace(‘aaa’, ‘bbb’)’.
- Aggiunta la funzione ‘range(start, stop[, step])’ per restituire un oggetto utilizzabile nel ciclo ‘foreach’, ad esempio ‘foreach i : range(15)’.
- Implementato il metodo meson.add_devenv(), che consente di aggiungere l'oggetto environment() per impostare le variabili d'ambiente durante l'uso del comando ‘meson devenv’, ad esempio, per impostare una variabile d'ambiente con il percorso alla cartella dei plugin.
- Per gli ambienti di sviluppo, è stata introdotta un nuovo comando "meson devenv -C builddir [<comando>]" che consente di eseguire un comando in un ambiente configurato per l'esecuzione di progetti dalla directory di build (senza installazione).
- Per impostazione predefinita, è stata interrotta la trasmissione del parametro "-pipe" all'avvio di tutti i compilatori supportati.
- È consentito chiamare meson.add_dist_script() dai sotto-progetti.
- È stata fornita la possibilità di eseguire più volte i metodi append() e prepend() per lo stesso oggetto environment().
- Nella funzione error() è consentito specificare più di un argomento separato da spazi (analogamente a warning() e message()).
- Aggiunto il parametro "—skip-subprojects" per saltare selettivamente l'installazione dei sotto-progetti.
Si segnala separatamente il progetto Boson, mirato alla creazione di un'implementazione portabile e semplice del linguaggio di script di build Meson, scritto in C invece che in Python. Il progetto è ancora nelle fasi iniziali di sviluppo e non è pronto per la costruzione completa di progetti di lavoro. Il codice è distribuito con licenza GPLv3 (il Meson originale in Python è fornito con licenza Apache 2.0).
Fonte: opennet.ru
