Visão geral
Feliz ano novo para nossa comunidade do Bazel. No ano novo, vamos trazer detalhes do nosso roteiro de 2023. No ano passado, publicamos nosso mapa de ação de 2022 com os planos do Bazel 6.0. Esperamos que ele tenha informado suas necessidades de ferramentas de build. À medida que o projeto 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, visibilidade às prioridades atuais e aos projetos em andamento.
Lançamento do Bazel 7.0
Planejamos oferecer o suporte de 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 pediram.
Melhor compartilhamento de cache entre plataformas
Permite que artefatos em cache sejam compartilhados em diferentes plataformas de build local (Mac) e remoto (Linux), principalmente para desenvolvimento em Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.
Criação de apps Android com o Bazel
O Manifest & Resource Merger foi atualizado para a v30.1.3 para que os desenvolvedores de apps Android possam usar recursos mais recentes de fusão de manifestos, como tools:node="merge".
Melhorias na execução remota
O Bazel 7.0 oferece suporte à execução assíncrona, acelerando a execução remota com maior paralelismo usando a flag --jobs.
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. O Bazel 7.0 contém várias melhorias na funcionalidade de gerenciamento de dependências externas do Bazel, incluindo:
- O Bzlmod é ativado por padrão para o gerenciamento de dependências externas no Bazel
- Suporte a arquivos de bloqueio: permite builds herméticos com Bzlmod.
- Suporte ao modo off-line/fornecedor: permite que os usuários executem builds com dependências pré-baixadas.
- Suporte completo ao cache do 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 a adoção de regras e projetos importantes do Bazel.
Criar métricas de análise
O Bazel 7.0 oferece métricas de tempo da fase de análise, permitindo que os desenvolvedores otimizem a performance do build.
Criar sem os bytes ativados por padrão
O Builds without the Bytes otimiza o desempenho 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 para 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.
Resolver falhas de recursos no suporte a symlink
Oferecer opções para recuperar saídas intermediárias de ações remotas
Aumentar a produtividade com o Skymeld
O Bazel 7.0 apresenta o Skymeld, um modo de avaliação que reduz o tempo real 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árias metas de nível superior. No entanto, para builds de destino único, não é esperada nenhuma diferença significativa.
Ecossistema e ferramentas do Bazel
Criação de apps Android com o Bazel
- Migrar regras nativas do Android para Starlark: no Bazel 7.0, as regras do Android são migradas para o Starlark para separar o desenvolvimento do próprio Bazel e permitir melhorias da comunidade. Além disso, tornamos essas regras independentes do binário principal do Bazel, o que nos permite lançar atualizações com mais frequência.
- Migração de regras do Android para Starlark
- Suporte ao R8: permite que os desenvolvedores de apps Android usem otimizações atualizadas do R8.
- Instalação móvel: permite que desenvolvedores de apps Android criem, testem e implantem mudanças em apps Android rapidamente com uma versão atualizada da Instalação móvel.
Geração de dados da lista de materiais de software (SBOMs) e ferramentas de compliance de licença do 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 facilmente formatados 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. Confira a implementação rules_license em andamento no GitHub.
Builds assinadas
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 os sistemas contra binários potencialmente maliciosos e não verificados.
Migração de regras Java, C++ e Python para Starlark
Migração completa de conjuntos de regras Java, C++ e Python para Starlark. Isso permite que os usuários do Bazel bifurquem apenas conjuntos de regras e não a base de código binário do Bazel, permitindo que os usuários
- Atualize e personalize as regras conforme necessário
- Atualizar regras independentemente do Bazel
Suporte do Bazel-JetBrains* ao IntelliJ IDEA
Atualizações incrementais do plug-in do IntelliJ para oferecer suporte à versão mais recente do plug-in do JetBrains.
Este mapa de planejamento mostra 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 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.