Visão geral
Feliz ano novo para nossa comunidade do Bazel. Com o novo ano, planejamos trazer detalhes do nosso roteiro de 2023. No ano passado, publicamos nosso roteiro de 2022 com nossos planos do Bazel 6.0. Esperamos que o roteiro tenha informado suas necessidades de ferramentas de build. Como o projeto do Bazel continua evoluindo em resposta às suas necessidades, queremos compartilhar nossa atualização de 2023.
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, oferecendo visibilidade das prioridades atuais e dos projetos em andamento.
Versão 7.0 do Bazel
Planejamos lançar o suporte a longo prazo (LTS) do Bazel 7.0 no final de 2023. Com o Bazel 7.0, pretendemos entregar muitos dos itens em andamento e continuar trabalhando nas melhorias de recursos que nossos usuários têm solicitado.
Melhor compartilhamento de cache multiplataforma
Permite que artefatos armazenados em cache sejam compartilhados em diferentes plataformas de build local (Mac) e remota (Linux), principalmente para desenvolvimento Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.
Build de apps Android com o Bazel
Atualizações do mesclador de manifesto e recursos para a versão 30.1.3 para que os desenvolvedores de apps Android possam usar recursos mais recentes de mesclagem de manifesto, como tools:node="merge".
Melhorias na execução remota
O Bazel 7.0 oferece suporte à execução assíncrona, acelerando a execução remota por meio do aumento do paralelismo com a flag --jobs.
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. O Bazel 7.0 contém várias melhorias na funcionalidade de gerenciamento de dependências externas do Bazel, incluindo:
- Bzlmod ativado por padrão para gerenciamento de dependências externas no Bazel
- Suporte a arquivos de bloqueio: permite a criação hermética com o Bzlmod
- Suporte ao modo de fornecedor/off-line: permite que os usuários executem builds com dependências pré-baixadas
- Suporte completo ao cache de repositório (armazenamento em cache não apenas de artefatos de downloads, mas também do conteúdo final do repositório)
- O Registro Central do Bazel inclui contribuições regulares da comunidade e adoção de regras e projetos importantes do Bazel
Métricas de análise de build
O Bazel 7.0 fornece métricas de tempo da fase de análise, permitindo que os desenvolvedores otimizem a própria performance de build.
Build sem os bytes ativados por padrão
Os builds sem os bytes otimizam a performance evitando o download de artefatos intermediários e impedindo que os builds fiquem presos na largura de banda da rede. Os recursos adicionados incluem:
Suporte à remoção de cache remoto com um serviço de concessão, para que os usuários não encontrem erros quando os artefatos forem removidos prematuramente
Preencher lacunas de recursos no suporte a links simbólicos
Oferecer opções para recuperar saídas intermediárias de ações remotas
Aumentar a produtividade do build com o Skymeld
O Bazel 7.0 apresenta o Skymeld, um modo de avaliação que reduz o tempo decorrido dos builds de vários destinos. O Skymeld elimina a barreira entre as fases de análise e execução para melhorar as velocidades de build, especialmente para builds com vários destinos de nível superior. No entanto, para builds de destino único, não é esperada nenhuma diferença significativa.
Ecossistema e ferramentas do Bazel
Build de apps Android com o Bazel
- Migrar regras nativas do Android para o Starlark: para o Bazel 7.0, as regras do Android migram para o Starlark para separar o desenvolvimento do Bazel e permitir melhor as contribuições da comunidade. Além disso, tornamos essas regras independentes do binário principal do Bazel, permitindo que sejam lançadas com mais frequência.
- Migração de regras do Android para o Starlark
- Suporte ao R8: permite que os desenvolvedores de apps Android usem otimizações atualizadas do R8.
- Instalação para dispositivos móveis: permite que os desenvolvedores de apps Android desenvolvam, testem e implantem mudanças de apps Android rapidamente usando uma versão atualizada de Instalação para dispositivos móveis.
Geração de dados da lista de materiais de software (SBOMs) e ferramentas de conformidade de licenças de OSS
Com o Bazel, os desenvolvedores podem gerar dados para ajudar a produzir SBOMs. Esses dados são gerados em formato de texto ou JSON e podem ser formatados facilmente para atender às especificações SPDX ou CycloneDX. Além disso, o processo fornece regras para declarar as licenças em que os módulos do Bazel são disponibilizados e ferramentas para criar processos em torno dessas declarações. Consulte a implementação rules_license em andamento no GitHub.
Builds assinados
O Bazel fornece 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 potencialmente maliciosos e não verificados.
Migração de regras Java, C++ e Python para o Starlark
Migração completa dos conjuntos de regras Java, C++ e Python para o Starlark. Esse esforço permite que os usuários do Bazel bifurquem apenas conjuntos de regras e não a base de código binária do Bazel, permitindo que os usuários
- Atualizem e personalizem as regras conforme necessário
- Atualizem as regras de forma independente do Bazel
Suporte ao IntelliJ IDEA do Bazel-JetBrains*
Atualizações incrementais do plug-in do IntelliJ para oferecer suporte à versão mais recente do plug-in do JetBrains.
Este roteiro mostra os destinos 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 roteiro, participe da comunidade do Grupo do Google.
*Copyright © 2022 JetBrains s.r.o. JetBrains e IntelliJ são marcas registradas da JetBrains s.r.o.