Roteiro do Bazel

Visão geral

O projeto do Bazel está em constante evolução para atender às suas necessidades, desenvolvendo recursos e oferecendo suporte, além de manter, refatorar e melhorar a performance do produto principal.

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

Este roadmap mostra os destinos 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 a novas oportunidades de mercado.

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

Quarto trimestre: lançamento do Bazel 6.0

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

Bzlmod: sistema de gerenciamento de dependências externas

Bzlmod resolve automaticamente as dependências transitivas, permitindo que os projetos sejam escalonados, mantendo a velocidade e a eficiência de recursos. Introduzido experimentalmente no Bazel 5.0, o Bzlmod estará disponível para todos e oferecerá uma solução para o problema de dependência de diamante.

  • O Bzlmod passa de "experimental" para "disponível para todos"
  • Inclui suporte para rules\_jvm\_external, permitindo que os usuários façam o download de dependências do Maven para projetos Java
  • O Guia de migração do Bzlmod oferece ferramentas, scripts e documentação para equipes que querem adotar o Bzlmod
  • O repositório central do Bazel hospeda regras BUILD principais do Bazel (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) e dependências importantes necessárias para o Bzlmod

Para saber mais sobre esse desenvolvimento, assista à atualização da comunidade do Bzlmod ou leia o documento de design original.

Build de apps Android com o Bazel

O Bazel 6.0 vai incluir ferramentas aprimoradas e contribuições de recursos da comunidade mescladas. Antecipando mais adoção e uma base de código crescente, a equipe do Bazel vai priorizar a integração de ferramentas de build do Android com as regras do Bazel Android.

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

Toolchains opcionais

Nossa pesquisa de satisfação do desenvolvedor mostrou que os autores de regras querem suporte para mais desenvolvimento de toolchains. O Bazel 6.0 vai permitir que os autores escrevam regras usando uma toolchain opcional de alta performance quando disponível com uma implementação de fallback para outras plataformas.

Suporte do Bazel-JetBrains* para o IntelliJ IDEA

A JetBrains fez uma parceria com o Bazel para manter em conjunto o plug-in do Bazel IntelliJ IDEA, apoiando o objetivo de aumentar a administração da comunidade e abrir capacidade para solicitações e desenvolvimento de recursos.

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

Para saber mais sobre esse desenvolvimento, leia o anúncio do blog do Bazel-JetBrains.

Desenvolvimento futuro

No futuro, a equipe do Bazel começou o desenvolvimento ou prevê priorizar os seguintes recursos em 2023 e depois.

Melhorar as regras de build do Android do Bazel

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

  • Migração e suporte para o R8
  • Atualizações das regras do Android, incluindo a tradução para a linguagem Starlark
  • Suporte para o Android App Bundle
  • Suporte para versões recentes do NDK
  • Cobertura de código de teste

Ferramentas de conformidade de licença do 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 ajudar a identificar e mitigar riscos de conformidade e licença associados a um determinado componente de software. Os recursos de destino 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.

Consulte a implementação rules_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 o WORKSPACE como o subsistema de gerenciamento de dependências do espaço de trabalho padrão do Bazel. Os recursos segmentados incluem:

  • Suporte para builds herméticos
  • O modo de fornecedor/off-line fixa regras de referências versionadas a uma cópia local
  • O Registro Central do Bazel inclui contribuição e adoção regulares da comunidade de regras e projetos principais do Bazel
  • O Bzlmod se torna a ferramenta padrão para criar projetos do Bazel

Builds assinados

O Bazel vai fornecer binários confiáveis para Windows e Mac assinados com chaves do Google. Esse recurso permite que desenvolvedores/DevOps multiplataforma identifiquem a origem dos binários do Bazel e protejam seus sistemas contra binários maliciosos e não verificados.

API de plataformas padronizadas

A nova API de plataformas vai padronizar a configuração de arquitetura para builds multiplataforma e multilíngue. Com esse recurso, os desenvolvedores podem reduzir erros e complexidade dispendiosos de tempo de desenvolvimento em builds grandes.

Métricas de análise de build

A telemetria do Bazel vai fornecer métricas de tempo da fase de análise, permitindo que os desenvolvedores otimizem a própria performance de build.

Execução remota com "Builds sem os bytes"

Os builds sem os bytes vão otimizar a performance, permitindo que o Bazel faça o download apenas dos artefatos necessários, evitando que os builds sejam gargalos na largura de banda da rede. Os recursos adicionados para builds remotos incluem:

  • Use o download assíncrono para permitir que ações locais e remotas sejam iniciadas assim que fizerem o download das saídas dependentes
  • Adicionar suporte a links simbólicos
  • Recupere saídas intermediárias de ações remotas quando um build for concluído

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