[06/04/2023] Meta, empresa matriz de Facebook, ha publicado su sistema de compilación Buck2 bajo la licencia de código abierto MIT. Escrito en Rust y diseñado para hacer la experiencia de compilación más rápida y eficiente, Buck2 está siendo utilizado por miles de desarrolladores en Meta y realiza millones de compilaciones al día, señaló la compañía.
Buck2, cuyo código abierto se publicó el 6 de abril como sucesor más rápido del sistema de compilación Buck1, es accesible desde GitHub o desde el sitio web de Buck2. El sistema es capaz de compilar software escrito en cualquier lenguaje, y puede compilar software escrito en varios lenguajes simultáneamente. Por ejemplo, si los desarrolladores tienen un binario Python que importa una biblioteca Rust que depende de una biblioteca OCaml que depende de un archivo C, Buck2 puede ayudar, anotó Meta.
Para cada lenguaje, hay que escribir una regla genérica que describa lo que significa compilar con ese lenguaje concreto y cómo proporciona funciones estándar, como probar, ejecutar y enlazar con C. Buck2 viene de fábrica con reglas para Assembly, C/C++, Erlang, Go, Haskell, Java, JavaScript, Julia, OCaml, Python y Rust. Para añadir o reimplementar reglas de lenguaje a Buck2, los desarrolladores pueden utilizar el lenguaje de scripting Starlark, un dialecto de Python.
Buck2, una reescritura desde cero de Buck, presenta una separación entre el núcleo y las reglas específicas del lenguaje, con mayor paralelismo, integración con ejecución remota y sistemas de archivos virtuales, y una salida de consola rediseñada. El núcleo de Buck2 se escribió en Rust, mientras que las reglas del lenguaje, como la forma de construir C++, se escribieron en una implementación Rust de Starlark. Según Meta, separar las reglas del lenguaje del núcleo facilita su modificación y comprensión. Un único grafo de dependencias alimenta el sistema de compilación, eliminando muchos tipos de errores y mejorando el paralelismo, mientras que la API de reglas está diseñada para ofrecer funciones avanzadas de rendimiento.
Escribir Buck2 en Rust ofrece ventajas como la ausencia de pausas de recolección de basura, mientras que Java, que Meta utilizó para escribir Buck1, ofrece ventajas como mejores herramientas de creación de perfiles, dijo Meta. El binario de Buck2 es independiente del lenguaje.
Basado en el artículo de Paul Krill (InfoWorld) y editado por CIO Perú