Sortie du système d'assemblage Meson 0.58. Projet de création d'une implémentation de Meson en langage C

La version du système de construction Meson 0.58 a été publiée, qui est utilisée pour construire des projets tels que X.Org Server, Mesa, Lighttpd, systemd, GStreamer, Wayland, GNOME et GTK. Le code Meson est écrit en Python et est sous licence Apache 2.0.

L'objectif de développement clé de Meson est de fournir un processus d'assemblage à grande vitesse combiné à la commodité et à la facilité d'utilisation. Au lieu de make, la construction utilise la boîte à outils Ninja par défaut, mais d'autres backends tels que xcode et VisualStudio peuvent également être utilisés. Le système dispose d'un gestionnaire de dépendances multiplateforme intégré qui vous permet d'utiliser Meson pour créer des packages pour les distributions. Les règles d'assemblage sont définies dans un langage simplifié spécifique au domaine, elles sont bien lisibles et compréhensibles pour l'utilisateur (selon l'idée des auteurs, le développeur devrait passer un minimum de temps à écrire des règles).

La compilation croisée et la construction sur Linux, Illumos/Solaris, FreeBSD, NetBSD, DragonFly BSD, Haiku, macOS et Windows à l'aide de GCC, Clang, Visual Studio et d'autres compilateurs sont prises en charge. Il est possible de créer des projets dans divers langages de programmation, notamment C, C++, Fortran, Java et Rust. Un mode de génération incrémentielle est pris en charge, dans lequel seuls les composants directement liés aux modifications apportées depuis la dernière génération sont reconstruits. Meson peut être utilisé pour générer des versions reproductibles, où l'exécution de la version dans différents environnements donne des exécutables complètement identiques.

Principales innovations de Meson 0.58 :

  • Meson a des opérations de formatage de chaîne intégrées. Au lieu d'appeler la méthode format, vous pouvez désormais remplacer directement les valeurs, par exemple, au lieu de « 'Une chaîne @0@ à formater @1@'.format(n, m) », vous pouvez immédiatement spécifier « f' Une chaîne @n@ à formater @ m@'".
  • Une méthode "replace" a été ajoutée aux objets chaîne pour effectuer l'opération de remplacement d'une sous-chaîne par une autre, par exemple, "s = s.replace('aaa', 'bbb')".
  • Ajout de la fonction "range(start, stop[, step])" pour renvoyer un objet pouvant être utilisé dans une boucle foreach, tel que "foreach i : range(15)".
  • La méthode meson.add_devenv() a été implémentée, vous permettant d'ajouter un objet environnement() pour définir des variables d'environnement lors de l'utilisation de la commande "meson devenv", par exemple, pour définir une variable d'environnement avec le chemin d'accès au répertoire des plugins.
  • Pour les environnements de développement, une nouvelle commande a été proposée : « meson devenv -C builddir [<command>], qui permet d'exécuter la commande dans un environnement configuré pour lancer des projets depuis le répertoire build (sans installation).
  • Par défaut, l'option "-pipe" n'est plus transmise lors de l'exécution de tous les compilateurs pris en charge.
  • L'appel de meson.add_dist_script() à partir de sous-projets est autorisé.
  • Fourni la possibilité d'exécuter les méthodes append() et prepend() plusieurs fois sur le même objet Environment().
  • La fonction error() autorise plus d'un argument, séparé par un espace (similaire à warn() et message()).
  • Ajout de l'option "--skip-subprojects" pour ignorer sélectivement l'installation des sous-projets.

Par ailleurs, on peut noter le projet Boson, visant à créer une implémentation portable et simple du langage de script d'assemblage Meson, écrit en C au lieu de Python. Le projet en est encore au stade initial de développement et n'est pas encore prêt pour l'assemblage complet des projets de travail. Le code est sous licence GPLv3 (le Python Meson original est sous licence Apache 2.0).

Source: opennet.ru

Ajouter un commentaire