Visão geral
Feliz ano-novo para nossa comunidade do Bazel. Com o novo ano, planejamos trazer mais detalhes sobre nosso roteiro para 2023. No ano passado, publicamos o roteiro para 2022 com os planos do Bazel 6.0. Esperamos que o roteiro tenha informado suas ferramentas de criação. O projeto Bazel continua evoluindo para atender às suas necessidades. Por isso, 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 no Bazel, visibilidade a prioridades e projetos atuais.
Versão 7.0 do Bazel
Planejamos disponibilizar o suporte de longo prazo (LTS) do Bazel 7.0 no final de 2023. Com o Bazel 7.0, temos como objetivo fornecer muitos dos itens em andamento e continuar a trabalhar pelas melhorias de recursos que nossos usuários pedem.
Melhor compartilhamento de cache entre plataformas
Permite que artefatos em cache sejam compartilhados entre diferentes plataformas de compilação locais (Mac) e remotas (Linux) principalmente para desenvolvimento Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.
Criar o app Android com o Bazel
O Manifest & Resource Merger é atualizado para a v30.1.3 para que os desenvolvedores de apps Android possam usar recursos de mesclagem de manifesto mais recentes, como tools:node="merge".
Melhorias na execução remota
O Bazel 7.0 oferece suporte para execução assíncrona, acelerando a execução remota por meio do aumento do paralelismo com a sinalização --jobs.
Bzlmod: sistema de gerenciamento de dependências externas
O Bzlmod resolve automaticamente as dependências transitivas, permitindo que os projetos sejam escalonados de maneira rápida e econômica. 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
- Compatibilidade com arquivos bloqueados: permite o build hermético com o Bzlmod.
- Suporte ao modo off-line/fornecedor: permite que os usuários executem builds com dependências pré-transferidas por download.
- Suporte completo a cache de repositório (o armazenamento em cache não só faz o download de artefatos, mas também o conteúdo final do repositório)
- O Bazel Central Registry inclui a contribuição regular da comunidade e a adoção de regras e projetos importantes do Bazel.
Criar métricas de análise
O Bazel 7.0 fornece métricas de tempo da fase de análise, permitindo que os desenvolvedores otimizem o próprio desempenho de compilação.
Criar sem os bytes ativados por padrão
Compilações sem os bytes otimiza o desempenho, evitando o download de artefatos intermediários e impedindo que os builds façam gargalos na largura de banda da rede. Os recursos adicionados incluem:
Suporte à remoção remota de cache com um serviço de lease para que os usuários não tenham erros quando os artefatos forem removidos prematuramente.
Resolver problemas de recursos em links simbólicos
Fornecer opções para recuperar saídas intermediárias de ações remotas
Aumente a produtividade com a Skymeld
O Bazel 7.0 apresenta o Skymeld, um modo de avaliação que reduz o tempo decorrido das compilações de vários destinos. A Skymeld elimina a barreira entre as fases de análise e execução para melhorar a velocidade do build, especialmente para builds com vários destinos de nível superior. No entanto, para builds de destino único, nenhuma diferença significativa é esperada.
Ecossistema e ferramentas do Bazel
Criar o app Android com o Bazel
- Migrar regras nativas do Android para o Starlark: no Bazel 7.0, as regras do Android migram para o Starlark para separar o desenvolvimento do próprio Bazel e permitir melhor as contribuições da comunidade. Além disso, tornamos essas regras independentes do binário principal do Bazel, permitindo a liberação com mais frequência.
- Migração das regras do Android para o Starlark
- Compatibilidade com R8: permite que 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 alterações no app Android rapidamente com uma versão atualizada do Mobile Install.
Ferramentas de geração de dados (SBOMs, na sigla em inglês) da Lista de Materiais de Software e de ferramentas de conformidade com a licença 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 disponíveis nos módulos do Bazel e ferramentas para criar processos em torno dessas declarações. Veja a implementação de Rules_licenses em andamento no GitHub.
Builds assinados
O Bazel oferece binários confiáveis para o Windows e Mac assinados com chaves do Google. Esse recurso permite que desenvolvedores/desenvolvedores de várias plataformas identifiquem a origem dos binários do Bazel e protejam os sistemas deles contra binários potencialmente mal-intencionados 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
- Atualize e personalize as regras conforme necessário
- Atualizar regras de maneira independente do Bazel
Compatibilidade com Bazel-JetBrains* IntelliJ IDEA
Atualizações incrementais do plug-in do IntelliJ para oferecer suporte à versão mais recente do plug-in JetBrains.
Este roteiro traça snapshots e não deve ser considerado uma garantia. As prioridades estão sujeitas a mudanças em resposta ao feedback dos desenvolvedores e clientes ou de novas oportunidades de mercado.
Para receber notificações sobre novos recursos, incluindo atualizações neste roteiro, entre na comunidade do Grupo do Google.
*Copyright © 2022 JetBrains s.r.o. JetBrains e IntelliJ são marcas registradas da JetBrains s.r.o