Lançamento do sistema de compilação Bazel 1.0

Introduzido lançamento de ferramentas de montagem abertas Bazel 1.0, desenvolvido por engenheiros do Google e utilizado para montar grande parte dos projetos internos da empresa. A versão 1.0 marcou a transição para o versionamento de versão semântica e também foi notável por introduzir um grande número de mudanças que quebraram a compatibilidade com versões anteriores. Código do projeto distribuído por licenciado sob Apache 2.0.

Bazel constrói o projeto executando os compiladores e testes necessários. O sistema de compilação foi projetado desde o início para criar projetos do Google de maneira ideal, incluindo projetos muito grandes e projetos que contêm código em diversas linguagens de programação, exigem testes extensivos e são criados para diversas plataformas. Ele suporta a construção e teste de código em Java, C++, Objective-C, Python, Rust, Go e muitas outras linguagens, bem como a construção de aplicativos móveis para Android e iOS. O uso de arquivos assembly únicos para diferentes plataformas e arquiteturas é suportado; por exemplo, um arquivo assembly sem alterações pode ser usado tanto para um sistema de servidor quanto para um dispositivo móvel.

Entre os diferenciais do Bazel estão a alta velocidade, confiabilidade e repetibilidade do processo de montagem. Para atingir alta velocidade de construção, o Bazel usa ativamente técnicas de cache e paralelização para o processo de construção. Os arquivos BUILD devem definir completamente todas as dependências, com base nas quais as decisões são tomadas para reconstruir os componentes após as alterações serem feitas (apenas os arquivos alterados são reconstruídos) e paralelizar o processo de montagem. As ferramentas também garantem uma montagem repetível, ou seja, o resultado da construção de um projeto na máquina do desenvolvedor será completamente idêntico ao da construção em sistemas de terceiros, como servidores de integração contínua.

Ao contrário do Make e do Ninja, o Bazel usa uma abordagem de nível superior para construir regras de montagem, na qual, em vez de definir a ligação de comandos aos arquivos que estão sendo construídos, são usados ​​blocos mais abstratos e prontos, como “construir um arquivo executável em C++”, “construindo uma biblioteca em C++” ou “executando um teste para C++”, bem como identificando plataformas de destino e construção. No arquivo de texto BUILD, os componentes do projeto são descritos como um conjunto de bibliotecas, arquivos executáveis ​​e testes, sem detalhes no nível de arquivos individuais e comandos de chamada do compilador. Funcionalidades adicionais são implementadas através do mecanismo de conexão de extensões.

Fonte: opennet.ru

Adicionar um comentário