BT

Disseminando conhecimento e inovação em desenvolvimento de software corporativo.

Contribuir

Tópicos

Escolha a região

Início Notícias Ferramenta de build e teste open source Bazel, chega a versão 1.0

Ferramenta de build e teste open source Bazel, chega a versão 1.0

Derivado do Blaze, ferramenta interna de build do Google, o Bazel é uma ferramenta de build e teste que oferece uma linguagem de definição legível por humanos e é particularmente voltada para projetos grandes, com vários repositórios. Open source desde 2015, o Bazel chegou à versão 1.0.

Uma das principais implicações ao lançar o Bazel 1.0 é a promessa de maior estabilidade e garantias de compatibilidade com versões anteriores. Esse tem sido um problema histórico para os usuários do Bazel, que frequentemente reescrevem parte das regras do build devido a alterações frequentes no Bazel ou no seu ecossistema. Dessa forma, a equipe do Bazel se comprometeu a seguir o controle de versão semântico para futuras versões do Bazel, o que significa que apenas as principais versões poderão incluir quebras de versões. Além disso, a equipe se comprometeu a manter uma janela de estabilidade mínima de três meses entre as principais versões.

O Bazel empenha-se para ser eficiente na determinação de artefatos desatualizados usando resumos de conteúdo em vez de registros de data e hora ao criar os gráficos de dependência. Com isso é possível evitar a reconstrução desnecessária de targets, além de ter construções previsíveis, mesmo quando distribuídas por vários hosts cujos relógios não estão perfeitamente sincronizados. Builds distribuídos são um recurso essencial do Bazel, criado para construir sistemas muito grandes em uma infraestrutura cloud. Graças ao uso de resumos de conteúdo, o Bazel pode armazenar em cache as saídas intermediárias da etapa de construção e reutilizá-las quando necessário. Artefatos de construção intermediários também podem ser compartilhados entre equipes.

Outra característica peculiar do Bazel é a hermeticidade, em outras palavras, as compilações do Bazel estão em área restrita e, se uma regra do build não for declarada como dependente de um determinado arquivo, não poderá abrí-lo, o que exclui a possibilidade de dependências ocultas do exterior. Isso abre as portas para muitas possibilidades de otimização e permite construções reproduzíveis.

Desde o início, ao contrário da maioria dos sistemas de build disponíveis, que geralmente estão vinculados a uma linguagem específica, o Bazel é um sistema de builda em várias linguagens. Isso é obtido através da definição de várias regras específicas de linguagem para o tipo de target que podem criar, por exemplo, as regras cc_library e cc_binary para targets C/C++, o java_binary e java_import para targets Java e muito mais. Todas as principais linguagens são suportadas por padrão, mas novas regras podem ser facilmente adicionadas, se necessário.

A linguagem usada pelo Bazel para definir novas regras é chamada Starlark e é inspirada na sintaxe do Python 3, embora não inclua todos os recursos do Python. Em particular, a mutação de coleção ou I/O de arquivos não são suportados, principalmente para impedir que os programadores usem esses recursos para criar artefatos que não são conhecidos anteriormente pelo sistema de construção e que interromperiam a análise do gráfico de dependência do Bazel.

O anúncio do Bazel 1.0 foi recebido com uma reação positiva de vários desenvolvedores, que elogiaram o desempenho e a eficiência da aplicação em comparação com outras ferramentas de build, como Maven e Gradle. Particularmente, a promessa de compatibilidade com versões anteriores foi considerada pela maioria dos desenvolvedores como um importante passo rumo a inovação, permitindo que o ecossistema de regras de terceiros do Bazel amadureça em uma base mais estável.

Avalie esse artigo

Relevância
Estilo/Redação

Conteúdo educacional

BT