Roteiro do Bazel

Informações gerais

O projeto do Bazel evolui constantemente para atender às suas necessidades: desenvolvendo recursos e oferecendo suporte, mantendo, refatorando e melhorando 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 e previsões atuais para o futuro do desenvolvimento no Bazel. Assim você tem visibilidade das prioridades e projetos em andamento.

Os resumos do roteiro visam e não devem ser considerados como garantias. 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 do roteiro, participe da comunidade do Grupo do Google.

P4: versão 6.0 do Bazel

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

Bzlmod: sistema de gerenciamento de dependências externas

O Bzlmod resolve automaticamente dependências transitivas, permitindo que os projetos sejam escalonados sem perder rapidez e eficiência em recursos. Introduzido experimentalmente no Bazel 5.0, o Bzlmod vai estar disponível a todos os usuários e oferecer uma solução para o problema de dependência diamante (link em inglês).

  • O Bzlmod passa de "experimental" para "com 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 fornece ferramentas, scripts e documentação para equipes que querem adotar o Bzlmod.
  • O repositório central do Bazel hospeda as regras principais BUILD do Bazel (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) e as dependências de chave necessárias para o Bzlmod.

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

Build de app Android com o Bazel

O Bazel 6.0 vai incluir ferramentas aprimoradas e contribuições de recursos da comunidade mescladas. Com a previsão de uma adoção maior 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 do Android do Bazel.

  • Atualiza o D8 para a v. 3.3.28 e o define como o dexer padrão.
  • Mescla com as principais contribuições de recursos da comunidade adicionadas no 5.X, incluindo suporte para:
    • Workers persistentes com D8
    • Simplificar usando o D8
    • Mesclar 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 adicional da cadeia de ferramentas. O Bazel 6.0 permitirá que os autores gravem regras usando um conjunto de ferramentas opcional de alto desempenho quando disponível com uma implementação de substituição para outras plataformas.

Compatibilidade com IntelliJ IDEA do Bazel-JetBrains*

A JetBrains fez uma parceria com a Bazel para co-manter o plug-in Bazel IntelliJ IDEA (link em inglês), oferecendo suporte ao objetivo de aumentar a gestão da comunidade e liberar a capacidade para solicitações de recursos e desenvolvimento.

  • O plug-in IntelliJ v. 2022.2 oferece suporte à versão mais recente do plug-in JetBrains.
  • Aumenta a compatibilidade com o desenvolvimento remoto
  • Aumenta o desenvolvimento orientado pela comunidade para recursos em trânsito, como o suporte Scala

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

Desenvolvimento futuro

Pensando no futuro, a equipe do Bazel começou o desenvolvimento ou prevê priorizar os seguintes recursos em 2023 e além.

Melhoria das 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 para o R8 e suporte para ele
  • Atualizações nas regras do Android, incluindo tradução para a linguagem Starlark
  • Compatibilidade com o Android App Bundle
  • Suporte para versões recentes do NDK
  • Testar a cobertura do código

Ferramentas de conformidade com licenças OSS

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

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

Veja 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 vai 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
  • Regras de referências com controle de versão do fornecedor/modo off-line a uma cópia local
  • O Bazel Central Registry inclui contribuições regulares da comunidade e adoção das principais regras e projetos do Bazel.
  • Bzlmod se torna a ferramenta padrão para criar projetos do Bazel

Builds assinadas

O Bazel vai fornecer 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 maliciosos não verificados.

API Standardized Platforms

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

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 próprio desempenho de build.

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

Builds sem os bytes: vai otimizar o desempenho, permitindo que o Bazel faça o download dos artefatos necessários, evitando que os builds fiquem gargalos na largura de banda da rede. Os recursos adicionados para builds remotos incluem:

  • Usar o download assíncrono para permitir que 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 após a conclusão de uma versão

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