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 em diamante (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) oferece 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
- Mesclar "usas-permissões" Tags 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 uma cópia local
- O Bazel Central Registry inclui contribuição regular para a comunidade e adoção de regras importantes do Bazel e projetos
- 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 origem dos binários do Bazel e protejam os sistemas contra binários maliciosos 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 dispendiosos 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 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.