Lanzamento do sistema de montaxe Bazel 1.0

Presentado liberación de ferramentas de montaxe abertas Bazel 1.0, desenvolvido por enxeñeiros de Google e usado para montar a maioría dos proxectos internos da empresa. A versión 1.0 marcou a transición á versión semántica e tamén se destacou por introducir un gran número de cambios que romperon a compatibilidade con versións anteriores. Código do proxecto distribuído por licenciado baixo Apache 2.0.

Bazel constrúe o proxecto executando os compiladores e probas necesarios. O sistema de compilación está deseñado desde cero para construír de forma óptima proxectos de Google, incluídos proxectos moi grandes e proxectos que conteñen código en varias linguaxes de programación, requiren probas exhaustivas e están creados para varias plataformas. Admite a creación e proba de código en Java, C++, Objective-C, Python, Rust, Go e moitos outros idiomas, así como a creación de aplicacións móbiles para Android e iOS. Admítese o uso de ficheiros de montaxe únicos para diferentes plataformas e arquitecturas; por exemplo, pódese utilizar un ficheiro de montaxe sen cambios tanto para un sistema de servidor como para un dispositivo móbil.

Entre as características distintivas de Bazel están a alta velocidade, fiabilidade e repetibilidade do proceso de montaxe. Para acadar unha alta velocidade de compilación, Bazel usa activamente técnicas de caché e paralelización para o proceso de compilación. Os ficheiros BUILD deben definir completamente todas as dependencias, en función das cales se toman decisións para reconstruír os compoñentes despois de que se fagan os cambios (só se reconstruíron os ficheiros modificados) e paralelizar o proceso de montaxe. A ferramenta tamén garante a montaxe repetible, é dicir. o resultado de construír un proxecto na máquina do programador será completamente idéntico ao construído en sistemas de terceiros, como servidores de integración continua.

A diferenza de Make e Ninja, Bazel usa un enfoque de nivel superior para construír regras de montaxe, no que, en lugar de definir a vinculación de comandos aos ficheiros que se están a construír, utilízanse bloques máis abstractos preparados, como "construír un ficheiro executable en C++", "construír unha biblioteca en C++" ou "executar unha proba para C++", así como identificar plataformas de destino e de compilación. No ficheiro de texto BUILD, os compoñentes do proxecto descríbense como unha morea de bibliotecas, ficheiros executables e probas, sen detallar a nivel de ficheiros individuais e comandos de chamada do compilador. A funcionalidade adicional está implementada a través do mecanismo para conectar extensións.

Fonte: opennet.ru

Engadir un comentario