Version 1.0 du système de construction Meson

La version du système de construction Meson 1.0.0 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 1.0 :

  • Un module de construction de projets en langage Rust a été déclaré stable. Ce module est utilisé dans le projet Mesa pour créer des composants écrits en Rust.
  • L'option préfixe, prise en charge dans la plupart des fonctions de vérification du compilateur, offre la possibilité de gérer des tableaux en plus des chaînes. Par exemple, vous pouvez désormais spécifier : cc.check_header('GL/wglew.h', prefix : ['#include ', '#inclure '])
  • Ajout d'un nouvel argument "--workdir" pour permettre de remplacer le répertoire de travail. Par exemple, pour utiliser le répertoire actuel au lieu du répertoire de travail, vous pouvez exécuter : meson devenv -C builddir --workdir .
  • De nouveaux opérateurs « dans » et « pas dans » ont été proposés pour déterminer l'occurrence d'une sous-chaîne dans une chaîne, similaire à la vérification précédemment disponible de l'occurrence d'un élément dans un tableau ou un dictionnaire. Par exemple : fs = import('fs') if 'quelque chose' dans fs.read('somefile') # True endif
  • Ajout de l'option « warning-level=everything », qui active la sortie de tous les avertissements du compilateur disponibles (dans clang et MSVC, il utilise -Weverything et /Wall, et dans GCC, les avertissements sont inclus séparément, correspondant approximativement à -Weverything mode en clang).
  • La méthode rust.bindgen implémente la possibilité de gérer l'argument « dépendances » pour transmettre les chemins vers les dépendances qui doivent être traitées par le compilateur.
  • La fonction java.generate_native_headers a été obsolète et renommée en java.native_headers pour se conformer au style de dénomination des fonctions commun de Meson.

Source: opennet.ru

Ajouter un commentaire