Roteiro do Bazel

Visão geral

O projeto Bazel está em constante evolução para atender às suas necessidades. Ele desenvolve recursos e oferece suporte, além de manter, refatorar 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 atuais e as previsões para o futuro do desenvolvimento do Bazel, visibilidade às prioridades atuais e aos projetos em andamento.

Este mapa apresenta metas 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 plano, participe da comunidade do Grupo do Google.

T4 — Lançamento do 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 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 as dependências transitivas, permitindo que os projetos sejam escalonados sem perder a velocidade e a eficiência de recursos. Introduzido experimentalmente no Bazel 5.0, o Bzlmod 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 "disponibilidade geral"
  • 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 principais do Bazel BUILD (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) e dependências importantes necessárias para o Bzlmod.

Para mais informações sobre esse desenvolvimento, assista a Atualização da comunidade Bzlmod ou leia o documento de design original.

Criação de apps Android com o Bazel

O Bazel 6.0 vai incluir ferramentas aprimoradas e contribuições de recursos da comunidade incorporadas. Antecipando uma maior adoção e uma base de código crescente, 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 v. 3.3.28 e o define como o dexer padrão.
  • Mesclagens 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 com D8
    • Como mesclar tags "uses-permissions" em manifestos do Android
    • Multiplex workers no processamento de recursos do Android

Conjuntos de ferramentas opcionais

Nossa pesquisa de satisfação dos desenvolvedores mostrou que os criadores de regras querem suporte para mais desenvolvimento de cadeia de ferramentas. O Bazel 6.0 vai permitir que os autores escrevam regras usando uma cadeia de ferramentas opcional de alto desempenho quando disponível, com uma implementação de fallback para outras plataformas.

Suporte do Bazel-JetBrains* ao IntelliJ IDEA

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

  • 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 no blog do Bazel-JetBrains.

Desenvolvimento futuro

Para o futuro, a equipe do Bazel começou a desenvolver ou planeja priorizar os seguintes recursos em 2023 e depois.

Como melhorar as regras de build do Android do Bazel

Continuar 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 a linguagem Starlark
  • Suporte para App Bundle
  • Suporte para versões recentes do NDK
  • Cobertura de código de teste

Ferramentas de compliance com licenças de OSS

Os desenvolvedores pediram 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 reduzir os riscos de compliance e licenciamento associados a um determinado componente de software. Os recursos de segmentação incluem:

  • A capacidade de auditar os pacotes usados por um determinado destino
  • A capacidade de criar verificações de compliance 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

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 para builds herméticos
  • O fornecedor/modo off-line fixa regras de referências versionadas em uma cópia local.
  • O Registro central do Bazel inclui contribuições regulares 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 assinadas

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 os sistemas contra binários maliciosos e não verificados.

API de plataformas padronizadas

A nova API Platforms vai padronizar a configuração de arquitetura para builds multilíngues e multiplataforma. Com esse recurso, os desenvolvedores podem reduzir erros e a complexidade de 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"

O Builds without the Bytes otimiza a performance permitindo que o Bazel faça o download apenas dos artefatos necessários, evitando gargalos de 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 os resultados dependentes forem baixados.
  • Adicionar suporte a links simbólicos
  • Recuperar saídas intermediárias de ações remotas depois que um build for concluído

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