Visão geral
Feliz ano novo para nossa comunidade Bazel. No ano novo, planejamos trazer mais detalhes sobre o roteiro de 2023. No ano passado, publicamos o roteiro de 2022 com os planos do Bazel 6.0. Esperamos que o roteiro fornecido tenha fundamentado suas necessidades de ferramentas de criação. Queremos compartilhar nossa atualização de 2023 à medida que o projeto Bazel continua evoluindo de acordo com suas necessidades.
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.
Versão do Bazel 7.0
Planejamos disponibilizar o suporte de longo prazo (LTS) do Bazel 7.0 para você no final de 2023. Com o Bazel 7.0, nosso objetivo é entregar muitos dos itens em andamento e continuarmos trabalhando para melhorar os recursos que nossos usuários pediram.
Melhor compartilhamento de cache entre plataformas
Permite que artefatos armazenados em cache sejam compartilhados em diferentes plataformas de build de build local (Mac) e remota (Linux), principalmente para desenvolvimento em Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.
Build de apps Android com o Bazel
Manifesto e A fusão de recursos foi atualizada para a v30.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 é compatível com a 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
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. 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: ativa o build hermético com Bzlmod
- Suporte ao modo off-line/fornecedor: os usuários podem executar builds com dependências pré-baixadas.
- Suporte completo ao cache do repositório (o armazenamento em cache não apenas faz o download de artefatos, mas também do conteúdo final do repositório)
- O Bazel Central Registry inclui contribuição regular para a comunidade e adoção de regras importantes do Bazel. projetos
Criar métricas de análise
O Bazel 7.0 fornece métricas de tempo de fase de análise, permitindo que os desenvolvedores otimizem o desempenho do build.
Build sem os bytes ativados por padrão
Os builds sem bytes otimizam o desempenho, evitando o download de artefatos intermediários e evitando o gargalo dos builds na largura de banda da rede. Os recursos adicionados incluem:
Suporte à remoção remota de cache com um serviço de locação, para que os usuários não se deparem com erros quando artefatos forem removidos prematuramente.
Resolver lacunas de recursos na compatibilidade com links simbólicos
Fornecer opções para recuperar saídas intermediárias de ações remotas
Aumente a produtividade com o Skymeld
O Bazel 7.0 apresenta o Skymeld, um modo de avaliação que reduz o tempo decorrido dos builds com vários destinos. O Skymeld elimina a barreira entre as fases de análise e execução para aumentar as velocidades de compilação, especialmente para versões com vários alvos de nível superior. No entanto, para builds de destino único, nenhuma diferença significativa é esperada.
Ecossistema do Bazel e Ferramentas
Build de apps Android com o Bazel
- Migração das 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 melhorar as contribuições da comunidade. Além disso, tornamos essas regras independentes do binário principal do Bazel, o que nos permite fazer lançamentos com mais frequência.
- Migração das regras do Android para o Starlark (link em inglês)
- Suporte ao R8: permite que os desenvolvedores de apps Android usem as otimizações atualizadas do R8.
- Instalação em dispositivos móveis: permite que os desenvolvedores de apps Android desenvolvam, testem e implantem qualquer alteração em apps Android rapidamente por meio de uma versão atualizada do Mobile Install.
Geração de dados da Lista de materiais de software (SBOMs, na sigla em inglês) e Ferramentas de conformidade da licença OSS
Com ele, os desenvolvedores podem gerar dados para produzir SBOMs (link em inglês). Esses dados geram saídas em formato de texto ou JSON e podem ser facilmente formatados para atender às especificações SPDX ou CycloneDX. Além disso, o processo inclui regras para declarar as licenças em que os módulos do Bazel estão disponíveis e ferramentas para criar processos com base nessas declarações. Confira a implementação de regras_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/dev-ops de várias plataformas identifiquem a origem dos binários do Bazel e protejam os sistemas contra binários não verificados e potencialmente maliciosos.
Migração de regras de Java, C++ e Python para 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 os conjuntos de regras, e não a base de código binária do Bazel.
- Atualize e personalize as regras conforme necessário
- Atualizar regras independentemente 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 mostra os objetivos e não deve ser considerado uma garantia. As prioridades estão sujeitas a mudanças em resposta ao feedback 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.
*Copyright © 2022 JetBrains s.r.o. JetBrains e IntelliJ são marcas registradas da JetBrains s.r.o