Roteiro do Bazel

Informar um problema Acessar código-fonte

Visão geral

Feliz ano novo para nossa comunidade Bazel. No ano novo, planejamos trazer mais detalhes sobre o roteiro de 2023. No ano passado, publicamos nosso roteiro de 2022 com os planos do Bazel 6.0 e esperamos que ele tenha sido útil para suas necessidades de ferramentas de build. Queremos compartilhar nossa atualização de 2023 à medida que o projeto Bazel continua evoluindo de acordo com suas necessidades.

Com essas mudanças, queremos manter nossa comunidade de código aberto informada e incluída. Este roteiro descreve as iniciativas atuais e previsões para o futuro do desenvolvimento do Bazel. Assim, você tem visibilidade das prioridades atuais e dos projetos em andamento.

Versão do Bazel 7.0

Planejamos disponibilizar o suporte de longo prazo (LTS) do Bazel 7.0 para você no final de 2023. Com o Bazel 7.0, nosso objetivo é entregar muitos dos itens em andamento e continuarmos trabalhando nas melhorias de recursos que os usuários pediram.

Melhor compartilhamento de cache entre plataformas

Permite que artefatos armazenados em cache sejam compartilhados em diferentes plataformas de build de build local (Mac) e remota (Linux), principalmente para desenvolvimento em Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.

Build de apps Android com o Bazel

O Manifest & Resource Merger foi atualizado para a v30.1.3 para que os desenvolvedores de apps Android possam usar recursos mais recentes de mesclagem de manifesto, como tools:node="merge".

Melhorias na execução remota

O Bazel 7.0 oferece suporte à execução assíncrona, acelerando a execução remota por meio do aumento do paralelismo com a flag --jobs.

Bzlmod: sistema de gerenciamento de dependências externas

O Bzlmod (link em inglês) resolve automaticamente dependências transitivas, permitindo que os projetos sejam escalonados de forma rápida e eficiente em termos de recursos. O Bazel 7.0 contém várias melhorias na funcionalidade de gerenciamento de dependências externas do Bazel, incluindo:

  • Bzlmod ativado por padrão para gerenciamento de dependências externas no Bazel
  • Suporte a arquivos de bloqueio: ativa o build hermético com Bzlmod
  • Suporte ao modo off-line/fornecedor: os usuários podem executar builds com dependências pré-baixadas.
  • Suporte completo ao cache do repositório (o armazenamento em cache não apenas faz o download de artefatos, mas também do conteúdo final do repositório)
  • O Bazel Central Registry inclui contribuições regulares da comunidade e adoção de regras e projetos importantes do Bazel.

Criar métricas de análise

O Bazel 7.0 fornece métricas de tempo de fase de análise, permitindo que os desenvolvedores otimizem o desempenho do build.

Build sem os bytes ativados por padrão

Os builds sem bytes otimizam o desempenho, evitando o download de artefatos intermediários e evitando o gargalo dos builds na largura de banda da rede. Os recursos adicionados incluem:

Aumente a produtividade com o Skymeld

O Bazel 7.0 apresenta o Skymeld, um modo de avaliação que reduz o tempo decorrido dos builds com vários destinos. O Skymeld elimina a barreira entre as fases de análise e execução para aumentar as velocidades de compilação, especialmente para versões com vários alvos de nível superior. No entanto, para builds de destino único, nenhuma diferença significativa é esperada.

Ecossistema e ferramentas do Bazel

Build de apps Android com o Bazel

  • Migração das regras nativas do Android para o Starlark: no Bazel 7.0, as regras do Android migram para o Starlark para separar o desenvolvimento do próprio Bazel e melhorar as contribuições da comunidade. Além disso, tornamos essas regras independentes do binário principal do Bazel, o que nos permite fazer lançamentos com mais frequência.
  • Migração das regras do Android para o Starlark (link em inglês)
  • Suporte ao R8: permite que os desenvolvedores de apps Android usem as otimizações atualizadas do R8.
  • Instalação em dispositivos móveis: permite que os desenvolvedores de apps Android desenvolvam, testem e implantem qualquer alteração no app Android rapidamente por meio de uma versão atualizada do Mobile Install.

Geração de dados da Lista de materiais de software (SBOMs, na sigla em inglês) e ferramentas de conformidade da licença OSS

Com ele, os desenvolvedores podem gerar dados para produzir SBOMs (link em inglês). Esses dados geram saídas em formato de texto ou JSON e podem ser facilmente formatados para atender às especificações SPDX ou CycloneDX. Além disso, o processo inclui regras para declarar as licenças em que os módulos do Bazel estão disponíveis e ferramentas para criar processos com base nessas declarações. Confira a implementação derules_license em andamento no GitHub.

Builds assinados

O Bazel fornece binários confiáveis para Windows e Mac assinados com chaves do Google. Esse recurso permite que desenvolvedores/dev-ops de várias plataformas identifiquem a origem dos binários do Bazel e protejam os sistemas contra binários não verificados e potencialmente maliciosos.

Migração de regras de Java, C++ e Python para Starlark

Migração completa dos conjuntos de regras Java, C++ e Python para o Starlark. Esse esforço permite que os usuários do Bazel bifurquem apenas os conjuntos de regras, e não a base de código binária do Bazel.

  • Atualize e personalize as regras conforme necessário
  • Atualizar regras independentemente do Bazel

Compatibilidade com Bazel-JetBrains* IntelliJ IDEA

Atualizações incrementais do plug-in do IntelliJ para oferecer suporte à versão mais recente do plug-in JetBrains.

Este roteiro mostra os objetivos e não deve ser considerado uma garantia. As prioridades estão sujeitas a mudanças em resposta ao feedback de desenvolvedores e clientes ou de novas oportunidades no mercado.

Para receber notificações sobre novos recursos, incluindo atualizações deste roteiro, participe da comunidade do Grupo do Google.

*Copyright © 2022 JetBrains s.r.o. JetBrains e IntelliJ são marcas registradas da JetBrains s.r.o