Lanzamiento del sistema de compilación Bazel 1.0

Presentado por liberación de herramientas de montaje abiertas Bazel 1.0, desarrollado por ingenieros de Google y utilizado para ensamblar la mayoría de los proyectos internos de la empresa. La versión 1.0 marcó la transición al control de versiones semántico y también se destacó por introducir una gran cantidad de cambios que rompieron la compatibilidad con versiones anteriores. Código de proyecto distribuido por licenciado bajo Apache 2.0.

Bazel construye el proyecto ejecutando los compiladores y pruebas necesarios. El sistema de compilación está diseñado desde cero para compilar de manera óptima proyectos de Google, incluidos proyectos muy grandes y proyectos que contienen código en múltiples lenguajes de programación, requieren pruebas exhaustivas y están diseñados para múltiples plataformas. Admite la creación y prueba de código en Java, C++, Objective-C, Python, Rust, Go y muchos otros lenguajes, además de crear aplicaciones móviles para Android e iOS. Se admite el uso de archivos de ensamblaje únicos para diferentes plataformas y arquitecturas; por ejemplo, un archivo de ensamblaje sin cambios se puede usar tanto para un sistema de servidor como para un dispositivo móvil.

Entre las características distintivas de Bazel se encuentran la alta velocidad, confiabilidad y repetibilidad del proceso de ensamblaje. Para lograr una alta velocidad de compilación, Bazel utiliza activamente técnicas de almacenamiento en caché y paralelización para el proceso de compilación. Los archivos BUILD deben definir completamente todas las dependencias, sobre la base de las cuales se toman decisiones para reconstruir los componentes después de realizar los cambios (solo se reconstruyen los archivos modificados) y paralelizar el proceso de ensamblaje. Las herramientas también garantizan un montaje repetible, es decir. El resultado de construir un proyecto en la máquina del desarrollador será completamente idéntico al de construir en sistemas de terceros, como servidores de integración continua.

A diferencia de Make y Ninja, Bazel utiliza un enfoque de nivel superior para crear reglas de ensamblaje, en el que, en lugar de definir la vinculación de comandos a los archivos que se están creando, se utilizan bloques más abstractos ya preparados, como "construir un archivo ejecutable en C++”, “construir una biblioteca en C++” o “ejecutar una prueba para C++”, así como identificar plataformas de destino y de compilación. En el archivo de texto BUILD, los componentes del proyecto se describen como un conjunto de bibliotecas, archivos ejecutables y pruebas, sin detallar a nivel de archivos individuales y comandos de llamada del compilador. La funcionalidad adicional se implementa a través del mecanismo para conectar extensiones.

Fuente: opennet.ru

Añadir un comentario