Roteiro do Bazel

Visão geral

O projeto do Bazel evolui constantemente de acordo com suas necessidades, desenvolvendo recursos e fornecendo suporte enquanto mantém, refatora e melhora o desempenho do produto principal.

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.

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

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

P4: versão Bazel 6.0

O quarto trimestre traz o Bazel 6.0, a nova versão de suporte de longo prazo (LTS). O Bazel 6.0 planeja incluir novos recursos avançados e solicitados pela comunidade para gerenciar dependências, desenvolver com Android e muito mais.

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. Introduzido experimentalmente no Bazel 5.0, o Bzlmod terá disponibilidade geral e oferecerá uma solução para o problema de dependência de diamantes (link em inglês).

  • O Bzlmod vai de "experimental" para "disponibilidade geral"
  • Inclui suporte a rules\_jvm\_external, permitindo que os usuários façam o download de dependências Maven para projetos Java
  • O Guia de migração do Bzlmod (em inglês) fornece ferramentas, scripts e documentação para equipes que querem adotar o Bzlmod
  • O repositório central do Bazel hospeda as principais regras BUILD do Bazel (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) e as principais dependências necessárias para o Bzlmod.

Para mais informações sobre esse desenvolvimento, assista à atualização da comunidade Bzlmod (em inglês) ou leia o documento de design original (links em inglês).

Build de apps Android com o Bazel

O Bazel 6.0 vai incluir ferramentas aprimoradas e contribuições de recursos da comunidade integradas. Antecipando uma maior adoção e uma base de código cada vez maior, a equipe do Bazel vai priorizar a integração das ferramentas de build do Android com as regras dele para Android.

  • Atualiza o D8 para a v. 3.3.28 e o define como o dexer padrão.
  • Mescla as principais contribuições de recursos da comunidade adicionadas no 5.X, incluindo suporte para:
    • Workers persistentes com D8
    • Simplificação usando D8
    • Combinar tags "uses-permissions" em manifestos do Android
    • Workers multiplex no processamento de recursos do Android

Conjuntos de ferramentas opcionais

Nossa pesquisa de satisfação do desenvolvedor mostrou que os autores de regras querem suporte para o desenvolvimento de mais conjuntos de ferramentas. O Bazel 6.0 permite que os autores gravem regras usando um conjunto de ferramentas opcional de alto desempenho (quando disponível com uma implementação substituta para outras plataformas).

Compatibilidade com Bazel-JetBrains* IntelliJ IDEA

A JetBrains fez uma parceria com a Bazel para comanter o plug-in do Bazel IntelliJ IDEA (link em inglês), o que dá suporte ao objetivo de aumentar a gestão da comunidade e possibilitar o desenvolvimento de solicitações e recursos.

  • O plug-in do IntelliJ v. 2022.2 é compatível com a versão mais recente do plug-in JetBrains.
  • Aumenta a compatibilidade com desenvolvimento remoto
  • Aumenta o desenvolvimento orientado pela comunidade para recursos em funcionamento, como o suporte ao Scala

Para mais informações sobre esse desenvolvimento, leia o anúncio do blog (em inglês) da Bazel-JetBrains.

Desenvolvimento futuro

Olhando para o futuro, a equipe do Bazel começou o desenvolvimento ou prevê priorizar os seguintes recursos a partir de 2023.

Como melhorar as regras de build do Bazel no Android

Continue investindo na experiência de desenvolvimento de apps Android, com foco no fluxo de trabalho de criação, teste e implantação.

  • Migração e suporte para o R8
  • Atualizações nas regras do Android, incluindo a tradução para o idioma Starlark
  • Suporte para pacote de app
  • Compatibilidade com versões recentes do NDK
  • Cobertura de código de teste

Ferramentas de conformidade da licença OSS

Os desenvolvedores solicitaram um verificador de conformidade de licença robusto para garantir a disponibilidade e a segurança dos pacotes incluídos. Esse projeto oferece um conjunto de regras e ferramentas para identificar e mitigar os riscos de conformidade e licença associados a um determinado componente de software. Os recursos-alvo incluem:

  • A capacidade de auditar os pacotes usados por um determinado destino
  • A capacidade de criar verificações de conformidade de licença específicas da organização.

Confira a implementação derules_license em andamento no GitHub.

Bzlmod: sistema de gerenciamento de dependências externas

No lançamento, o Bzlmod melhora a escalonabilidade e a confiabilidade das dependências transitivas. Nos próximos três anos, o Bzlmod pretende substituir WORKSPACE como o subsistema padrão de gerenciamento de dependências do espaço de trabalho do Bazel. Os recursos segmentados incluem:

  • Suporte a builds herméticos
  • O fornecedor/modo off-line fixa as regras de referência em versões para uma cópia local
  • O Bazel Central Registry inclui contribuições regulares da comunidade e adoção de regras e projetos importantes do Bazel.
  • O Bzlmod se torna a ferramenta padrão para criar projetos do Bazel

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 fonte de binários do Bazel e protejam os sistemas contra binários mal-intencionados e não verificados.

API Standardized Platforms

A nova Platforms API padronizará a configuração da arquitetura para builds multiplataforma e com várias linguagens. Com esse recurso, os desenvolvedores podem reduzir a complexidade e os erros no tempo de desenvolvimento em grandes builds.

Criar métricas de análise

A telemetria do Bazel vai fornecer métricas de tempo da fase de análise, permitindo que os desenvolvedores otimizem o desempenho do build.

Execução remota com “Builds without the Bytes”

Builds sem os bytes otimizam o desempenho, permitindo apenas que o Bazel faça o download dos artefatos necessários, evitando que as compilações fiquem em gargalos na largura de banda da rede. Os recursos adicionados às compilações remotas incluem:

  • Use o download assíncrono para permitir que as ações locais e remotas sejam iniciadas assim que o download das saídas dependentes for feito
  • Adicionar suporte a links simbólicos
  • Recuperar saídas intermediárias de ações remotas depois que uma compilação é concluída

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