Roteiro do Bazel

Reportar um problema Ver código-fonte Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Visão geral

O projeto Bazel evolui constantemente de acordo com suas necessidades, desenvolvendo recursos e oferecendo suporte, além de manter, refazer e melhorar 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 do Bazel, visibilidade às prioridades atuais e aos projetos em andamento.

Este cronograma mostra os objetivos 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 cronograma, participe da comunidade Grupo do Google.

Q4 — Lançamento do Bazel 6.0

O Q4 traz o Bazel 6.0, a nova versão com suporte de longo prazo (LTS). 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

O Bzlmod resolve automaticamente dependências transitivas, permitindo que os projetos sejam dimensionados sem perder a velocidade e a eficiência de recursos. O Bzlmod, introduzido experimentalmente no Bazel 5.0, vai estar disponível de forma geral e oferecer uma solução para o problema de dependência de diamante.

  • O Bzlmod passa de "experimental" para "disponível para todos os usuários"
  • Inclui suporte a 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 as regras principais do BUILD do Bazel (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) e as principais dependências necessárias para o Bzlmod.

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

Criação de apps Android com o Bazel

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

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

Conjuntos de ferramentas opcionais

Nossa pesquisa de satisfação com os desenvolvedores mostrou que os autores de regras querem suporte para mais desenvolvimento de cadeias de ferramentas. O Bazel 6.0 permite que os autores escrevam regras usando um toolchain opcional de alto desempenho 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 co-manter o plug-in do Bazel IntelliJ IDEA, apoiando a meta de aumentar a gestão da comunidade e abrir 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
  • Desenvolvimento orientado pela comunidade para recursos em voo, como suporte ao Scala

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

Desenvolvimento futuro

No futuro, a equipe do Bazel vai começar o desenvolvimento ou vai priorizar os seguintes recursos em 2023 e além.

Como 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 criação, teste e implantação.

  • Migração para o R8 e suporte a ele
  • Atualizações nas regras do Android, incluindo a tradução para o idioma Starlark
  • Suporte para pacote de apps
  • Suporte para versões recentes do NDK
  • Testar a cobertura de código

Ferramentas de compliance com a licença OSS

Os desenvolvedores solicitaram um verificador robusto de conformidade com a 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 reduzir os riscos de compliance 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.

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

Bzlmod: sistema de gerenciamento de dependências externas

Na versão inicial, o Bzlmod melhora a escalabilidade e a confiabilidade das dependências transitivas. Nos próximos três anos, o objetivo do Bzlmod é substituir o WORKSPACE como o subsistema de gerenciamento de dependências padrão do espaço de trabalho do Bazel. Os recursos direcionados incluem:

  • Suporte para builds herméticos
  • O fornecedor/modo off-line fixa regras de referências com versões em uma cópia local
  • O Registro Central do Bazel inclui a contribuição regular da comunidade e a 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 vai fornecer binários confiáveis para Windows e Mac assinados com chaves do Google. Esse recurso permite que desenvolvedores/dev-ops multiplataforma 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 em vários idiomas e plataformas. Com esse recurso, os desenvolvedores podem reduzir a complexidade e os erros caros no tempo de desenvolvimento 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 a própria performance do build.

Execução remota com "Builds without the Bytes"

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

  • Use o download assíncrono para iniciar ações locais e remotas assim que elas fizerem o download das saídas dependentes.
  • Adicionar suporte a links simbólicos
  • Extrair saídas intermediárias de ações remotas após a conclusão de um build

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