Rilascio del sistema di assemblaggio Meson 0.58. Progetto per creare un'implementazione di Meson in linguaggio C

È stato rilasciato il sistema di build Meson 0.58, 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 0.58:

  • Meson ha operazioni di formattazione delle stringhe integrate. Invece di chiamare il metodo format, ora puoi sostituire direttamente i valori, ad esempio, invece di "'Una stringa @0@ da formattare @1@'.format(n, m)" puoi specificare immediatamente "f' Una stringa @n@ da formattare @ m@'".
  • È stato aggiunto un metodo "sostituisci" agli oggetti stringa per eseguire l'operazione 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 che può essere utilizzato in un ciclo foreach, come "foreach i : range(15)".
  • È stato implementato il metodo meson.add_devenv(), che consente di aggiungere un oggetto Environment() per impostare variabili di ambiente quando si utilizza il comando "meson devenv", ad esempio, per impostare una variabile di ambiente con il percorso della directory dei plugin.
  • Per gli ambienti di sviluppo è stato proposto un nuovo comando: “meson devenv -C builddir [<comando>], che permette di eseguire il comando in un ambiente configurato per lanciare progetti dalla directory build (senza installazione).
  • Per impostazione predefinita, l'opzione "-pipe" non viene più passata durante l'esecuzione di tutti i compilatori supportati.
  • È consentita la chiamata a meson.add_dist_script() dai sottoprogetti.
  • Fornita la possibilità di eseguire i metodi append() e prepend() più volte sullo stesso oggetto Environment().
  • La funzione error() consente più di un argomento, separati da uno spazio (simile a warning() e message()).
  • Aggiunta l'opzione "--skip-subprojects" per saltare selettivamente l'installazione dei sottoprogetti.

Separatamente, possiamo segnalare il progetto Boson, volto a creare un'implementazione portabile e semplice del linguaggio di script assembly Meson, scritto in C anziché in Python. Il progetto è ancora nella fase iniziale di sviluppo e non è ancora pronto per l'assemblaggio completo dei progetti funzionanti. Il codice è concesso in licenza con GPLv3 (il Python Meson originale è concesso in licenza con la licenza Apache 2.0).

Fonte: opennet.ru

Aggiungi un commento