Après une première version prometteuse, Meta, maison-mère de Facebook, récidive avec une seconde itération de son système de build baptisé Buck2. Ce dernier a pour vocation de développer beaucoup plus rapidement les applications et il est utilisé par des milliers de développeurs chez Meta. Ces derniers réalisent des millions d’actions de build par jour, explique la société.
Le code a été publié le 6 avril sur GitHub ou sur le site Web de Buck2. Le système, écrit en Rust, est capable de concevoir des applications écrites dans n’importe quel langage et de manière simultanée. Par exemple, si les développeurs ont un binaire en Python qui importe un bibliothèque Rust qui dépend d’une bibliothèque OCaml, relié à un fichier C, Buck2 peut les aider, souligne Meta.
Plusieurs avantages à basculer sur Rust
Pour chaque langage, il faut écrire une règle générique qui décrit ce que signifie compiler dans ce langage spécifique et comment il fournit des fonctionnalités standard, telles que le test, l'exécution et l'édition de liens avec C. Buck2 est livré avec des règles pour Assembly, C/C++, Erlang, Go, Haskell, Java, JavaScript, Julia, OCaml, Python et Rust. Pour ajouter ou réimplémenter des règles de langage à Buck2, les développeurs peuvent utiliser le langage de script Starlark, un dialecte de Python.
Buck2 se caractérise aussi par une séparation entre le noyau et les règles spécifiques au langage, un parallélisme accru, l'intégration de l'exécution à distance et des systèmes de fichiers virtuels, ainsi qu'une console de sortie remaniée. Le noyau de Buck2 a été écrit en Rust, tandis que les règles de langage, telles que la façon de construire C++, ont été écrites dans une implémentation Rust de Starlark. Le fait de séparer les règles de langage du noyau rend les règles plus faciles à modifier et à comprendre, a déclaré Meta. Un seul graphe de dépendance alimente le système de construction, éliminant de nombreux types de bogues et améliorant le parallélisme, tandis que l'API des règles est conçue pour offrir des fonctionnalités avancées pour la performance. L'écriture de Buck2 en Rust offre des avantages tels que l'absence de pauses dans le ramasse-miette, tandis que Java, que Meta a utilisé pour écrire Buck1, apporte des avantages dont de meilleurs outils de profilage, a déclaré Meta.