AccueilActualités informatiqueOutil de construction : Bazel 5.0 modifie la gestion des dépendances externes

Outil de construction : Bazel 5.0 modifie la gestion des dépendances externes

Google a publié la version 5.0 de l’outil de construction Bazel. Cette version apporte un support à long terme (LTS) et quelques nouveautés, dont l’utilisation expérimentale du nouveau sous-système External Dependency Bzlmod. La version de JDK nécessaire pour exécuter Bazel passe à OpenJDK 11, mais la compilation de binaires utilisant JDK 8 ou antérieur reste possible.

L’outil de construction et de test Bazel doit ressembler à Make, Maven et Gradle et s’adapter à Java, C++, Android, iOS, Go et à d’autres plates-formes linguistiques. Grâce à la mise en cache locale et distribuée et à l’exécution parallèle, il doit assurer des constructions rapides et incrémentielles et être modulable et extensible. Il est disponible en open source sous licence Apache 2.0.

Sommaire

Bazel peut dépendre de cibles d’autres projets dont les dépendances sont appelées External Dependencies. Dans la version 5.0, Bazel introduit le nouveau sous-système External Dependency, dont le nom de code est Bzlmod, afin de remédier aux inconvénients du système précédent, qui ne pouvaient apparemment pas être résolus de manière incrémentale.

Bzlmod est désactivé par défaut et peut être activé avec le drapeau expérimental --experimental_enable_bzlmod est activé. Contrairement à l’ancien système, basé sur WORKSPACE et centré sur les référentiels, il s’appuie sur le fichier MODULE.bazel et se concentre sur les modules. Les détails du nouveau système sont disponibles dans la documentation.

Le langage Bazel Starlark, inspiré de Python 3, a gagné quelques nouvelles fonctionnalités, dont l’imbrication de def-(Closures) et les expressions lambda (Anonymous Functions). Le nouveau drapeau --incompatible_existing_rules_immutable_view vise à remplacer les fonctions existantes native.existing_rule et native.existing_rules en produisant des objets View immuables de type Dict au lieu de Dicts modifiables. L’année dernière, Meta, alors Facebook, a pris en charge la gestion de la bibliothèque Starlark Rust en accord avec Google.

Bazel 5.0 présente également des nouveautés pour les règles Java : Elles utilisent désormais Toolchain Resolution. Jusqu’à présent, elles trouvaient la toolchain Java ainsi que le JDK en utilisant les options de la ligne de commande --javabase, --java_toolchain, --host_javabase et --host_java_toolchain. Cette nouveauté devrait favoriser l’uniformité au sein de Bazel ainsi que l’utilisation de plusieurs plates-formes.

Bazel 5.0 est la deuxième version avec support à long terme (LTS) après Bazel 4.0. Chaque branche LTS doit être dotée de corrections de bugs critiques pendant neuf mois, mais pas de nouvelles fonctionnalités. Suivront ensuite deux années de maintenance, au cours desquelles les corrections se limiteront à la sécurité et à la compatibilité avec le système d’exploitation.

Lire aussi

La nouvelle version de l’outil open source est disponible sur GitHub. Officiellement, Bazel peut être installé sous Ubuntu Linux, macOS et Windows. Les membres de la communauté gèrent également d’autres paquetages, par exemple pour Arch Linux ou FreeBSD.

Toutes les informations complémentaires sur Bazel 5.0 sont disponibles sur le blog de Bazel.

Plus d'articles