Roteiro do Bazel

Informar um problema Acessar fonte

Visão geral

Conforme o projeto do Bazel continua evoluindo de acordo com suas necessidades, queremos compartilhar nossa atualização de 2024.

Este roteiro descreve as iniciativas e previsões atuais para o futuro do desenvolvimento do Bazel, oferecendo visibilidade sobre as prioridades e os projetos atuais.

Versão do Bazel 8.0

Planejamos lançar o suporte de longo prazo (LTS) do Bazel 8.0 para você no final de 2024. Os seguintes recursos serão implementados.

Bzlmod: sistema de gerenciamento de dependências externo

O Bzlmod resolve automaticamente dependências transitivas permitindo o escalonamento dos projetos sem perder a rapidez e a eficiência de recursos.

Com o Bazel 8, desativaremos o suporte ao ESPAÇO DE TRABALHO por padrão (ainda será possível ativá-lo usando --enable_workspace). Com o Bazel 9, o suporte ao ESPAÇO DE TRABALHO será removido. A partir do Bazel 7.1, você pode definir --noenable_workspace para ativar o novo comportamento.

O Bazel 8.0 terá várias melhorias na funcionalidade de gerenciamento de dependências externas do Bazel, incluindo:

  • A nova flag --enable_workspace pode ser definida como false para desativar completamente a funcionalidade do espaço de trabalho.
  • Nova API de observação de diretórios (consulte #21435, fornecida no Bazel 7.1).
  • Esquema aprimorado para gerar nomes de repositório canônicos para melhor armazenamento de ações em cache nas atualizações de versão de dependência. (21316, enviado no Bazel 7.1)
  • Um cache de repositório compartilhado aprimorado (consulte #12227).
  • Suporte a modo off-line e de fornecedor: permite que os usuários executem builds com dependências pré-salvas (consulte #19563).
  • Redução dos conflitos de mesclagem em arquivos de bloqueio (20396, link em inglês).
  • MODULE.bazel segmentado (#17880).
  • Permissão da substituição do repositório gerado por extensão de módulo (#19301).
  • Documentação melhorada (por exemplo, #18030, #15821) e guia de migração e ferramentas de migração.

Melhorias na execução remota

  • Adicione suporte à execução assíncrona, acelerando a execução remota pelo aumento do paralelismo com a sinalização --jobs.
  • Facilitar a depuração de ausências no cache por um novo registro de execução compacto, reduzindo o tamanho em 100x e a sobrecarga de tempo de execução significativamente (consulte #18643).
  • Implemente a coleta de lixo para o cache de disco (consulte 5139).
  • Implemente o serviço de saída remota para permitir o download lento de saídas de build arbitrárias (consulte 20933, link em inglês).

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

Conclua a migração dos conjuntos de regras do Android, C++, Java e Python para repositórios dedicados e os desassocie das versões do Bazel. Com isso, os usuários do Bazel e os autores de regras

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

O novo local dos conjuntos de regras será bazelbuild/rules_android, rules_cc, rules_java, rules_python e google/protobuf. O uso de rules_proto será descontinuado.

O Bazel 8 fornecerá uma sinalização de migração temporária que usará automaticamente os conjuntos de regras que anteriormente faziam parte do binário dos repositórios. Espera-se que todos os usuários desses conjuntos de regras dependam dos repositórios e os carreguem de maneira semelhante a outros conjuntos de regras que nunca fizeram parte do Bazel.

O Bazel 8 também melhora as regras de extensão e as APIs de sub-regras existentes e as marca como não experimentais.

Melhorias no Starlark

  • As macros simbólicas são uma nova maneira de escrever macros que são mais simples para usuários do BUILD, autores de macros e ferramentas. Em comparação com as macros legadas, de que o Bazel tem apenas insights limitados, as macros simbólicas ajudam os usuários a evitar armadilhas comuns e aplicar as práticas recomendadas.
  • Os finalizadores de pacote são um recurso proposto para adicionar suporte de primeira classe à lógica de validação de pacotes personalizados. O objetivo deles é ajudar a descontinuar o native.existing_rules().

Configurabilidade

  • O mapeamento do caminho de saída continua a se estabilizar, prometendo melhor desempenho de cache remoto e velocidade de criação para designers de regras que usam transições.
  • Define automaticamente sinalizações de build adequadas para um determinado --platforms.
  • Defina combinações de flags com suporte ao projeto e crie destinos automaticamente com flags padrão, sem precisar definir bazelrcs.
  • Não refaça a análise do build sempre que as flags de build mudarem.

Projeto Skyfocus: minimizar estruturas de dados retidas

O Bazel contém muito estado na RAM para builds incrementais rápidos. No entanto, os desenvolvedores geralmente mudam um pequeno subconjunto dos arquivos de origem (por exemplo, quase nunca uma das dependências externas). Com o Skyfocus, o Bazel oferece uma maneira experimental de eliminar estados incrementais desnecessários e reduz o consumo de memória do Bazel, mantendo a mesma experiência de build incremental rápido.

O escopo inicial visa melhorar apenas a métrica de heap retida. A redução no pico de heap é uma possibilidade, mas não está incluída no escopo inicial.

Diversos

  • Instalação para dispositivos móveis v3: uma abordagem mais simples e mais mantida para implantar aplicativos Android de forma incremental.
  • Coleta de lixo para caches de repositório e install_base do Bazel.
  • Redução da sobrecarga do sandbox.

Suporte a Bazel-JetBrains* IntelliJ IDEA

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

Este roteiro tem como objetivo e não deve ser considerado como garantia. As prioridades estão sujeitas a mudanças em resposta ao feedback de desenvolvedores e clientes ou a novas oportunidades de mercado.

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

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