È stato pubblicato il rilascio del sistema di build Meson 1.4.0, 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 con 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 1.4:
- Nella funzione fs.name, fs.parent, fs.replace_suffix e fs.stem del modulo FS è stata aggiunta la supporto per gli oggetti build_tgt e custom_tgt, oltre all'indice degli obiettivi di build (custom_idx).
- È stata aggiunta la possibilità di leggere la versione del progetto da sottoprogetti basati su CMake.
- È stata fornita la possibilità di controllare le assert nel C++ stdlib attraverso la configurazione ndebug (GLIBCXX_ASSERTIONS).
- Nel stldebug è stato aggiunto il supporto per Clang (attivando debugstl ora si impostano «-D_GLIBCXX_DEBUG=1» e «-D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG»).
- Nell'oggetto env è stato aggiunto il metodo unset().
- Nell'oggetto File è stato aggiunto il metodo full_path() per ottenere il percorso completo del file.
- È stata aggiunta la supporto per specificare dipendenze personalizzate per numpy (dependency(‘numpy’)).
- Nel metodo compiler.preprocess() è stato aggiunto il parametro «depends», che consente di definire un obiettivo di build dipendente per compiler.preprocess().
- Nelle funzioni compile_ui, compile_moc e preprocess dei moduli qt4, qt5 e qt6 è stato aggiunto l'argomento preserve_paths per scegliere il modo in cui deve essere strutturato il percorso per i file scritti (se il valore è true – «{target private directory}/subdir/one.out», altrimenti se false – «{target private directory}/one.out»).
- Nel generatore di binding bindgen è stata implementata l'heuristica Meson per identificare i file header C++.
- È stata aggiunta la possibilità di sovrascrivere le impostazioni della lingua per bindgen (ad esempio, trattando i file con estensione .h come file header per C++).
- L'esecuzione dei test ora termina per impostazione predefinita dopo errori emersi durante l'esecuzione dei sanitizzatori, come MemorySanitizer.
- È stato aggiunto il supporto per il compilatore C/C++ Texas Instruments per la famiglia di CPU C6000.
Fonte: opennet.ru
