Roteiro do Bazel

Informar um problema Ver código-fonte

Visão geral

Feliz ano-novo para nossa comunidade do Bazel. Com o novo ano, planejamos trazer mais detalhes sobre nosso roteiro para 2023. No ano passado, publicamos o roteiro para 2022 com os planos do Bazel 6.0. Esperamos que o roteiro tenha informado suas ferramentas de criação. O projeto Bazel continua evoluindo para atender às suas necessidades. Por isso, queremos compartilhar nossa atualização de 2023.

Com essas mudanças, queremos manter nossa comunidade de código aberto informada e incluída. Este roteiro descreve as iniciativas atuais e as previsões para o futuro do desenvolvimento no Bazel, visibilidade a prioridades e projetos atuais.

Versão 7.0 do Bazel

Planejamos disponibilizar o suporte de longo prazo (LTS) do Bazel 7.0 no final de 2023. Com o Bazel 7.0, temos como objetivo fornecer muitos dos itens em andamento e continuar a trabalhar pelas melhorias de recursos que nossos usuários pedem.

Melhor compartilhamento de cache entre plataformas

Permite que artefatos em cache sejam compartilhados entre diferentes plataformas de compilação locais (Mac) e remotas (Linux) principalmente para desenvolvimento Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.

Criar o app Android com o Bazel

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

Melhorias na execução remota

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

Bzlmod: sistema de gerenciamento de dependências externas

O Bzlmod resolve automaticamente as dependências transitivas, permitindo que os projetos sejam escalonados de maneira rápida e econômica. 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
  • Compatibilidade com arquivos bloqueados: permite o build hermético com o Bzlmod.
  • Suporte ao modo off-line/fornecedor: permite que os usuários executem builds com dependências pré-transferidas por download.
  • Suporte completo a cache de repositório (o armazenamento em cache não só faz o download de artefatos, mas também o conteúdo final do repositório)
  • O Bazel Central Registry inclui a contribuição regular da comunidade e a adoção de regras e projetos importantes do Bazel.

Criar métricas de análise

O Bazel 7.0 fornece métricas de tempo da fase de análise, permitindo que os desenvolvedores otimizem o próprio desempenho de compilação.

Criar sem os bytes ativados por padrão

Compilações sem os bytes otimiza o desempenho, evitando o download de artefatos intermediários e impedindo que os builds façam gargalos na largura de banda da rede. Os recursos adicionados incluem:

Aumente a produtividade com a Skymeld

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

Ecossistema e ferramentas do Bazel

Criar o app Android com o Bazel

  • Migrar 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 permitir melhor as contribuições da comunidade. Além disso, tornamos essas regras independentes do binário principal do Bazel, permitindo a liberação com mais frequência.
  • Migração das regras do Android para o Starlark
  • Compatibilidade com R8: permite que desenvolvedores de apps Android usem otimizações atualizadas do R8.
  • Instalação para dispositivos móveis: permite que os desenvolvedores de apps Android desenvolvam, testem e implantem alterações no app Android rapidamente com uma versão atualizada do Mobile Install.

Ferramentas de geração de dados (SBOMs, na sigla em inglês) da Lista de Materiais de Software e de ferramentas de conformidade com a licença OSS

Com o Bazel, os desenvolvedores podem gerar dados para ajudar a produzir SBOMs. Esses dados são gerados em formato de texto ou JSON e podem ser facilmente formatados para atender às especificações SPDX ou CycloneDX. Além disso, o processo fornece regras para declarar as licenças disponíveis nos módulos do Bazel e ferramentas para criar processos em torno dessas declarações. Veja a implementação de Rules_licenses em andamento no GitHub.

Builds assinados

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

Migração de regras Java, C++ e Python para o 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 conjuntos de regras, e não a base de código binária do Bazel, permitindo que os usuários

  • Atualize e personalize as regras conforme necessário
  • Atualizar regras de maneira independente 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 traça snapshots e não deve ser considerado uma garantia. As prioridades estão sujeitas a mudanças em resposta ao feedback dos desenvolvedores e clientes ou de novas oportunidades de mercado.

Para receber notificações sobre novos recursos, incluindo atualizações neste roteiro, entre na comunidade do Grupo do Google.

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