Visão geral
Feliz ano novo para nossa comunidade do Bazel. No novo ano, planejamos trazer detalhes do nosso cronograma 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. Como o projeto Bazel continua evoluindo de acordo com 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 e previsões atuais para o futuro do desenvolvimento do Bazel, visibilidade às prioridades atuais e aos projetos em andamento.
Versão 7.0 do Bazel
Planejamos oferecer o suporte de longo prazo (LTS) do Bazel 7.0 no final de 2023. Com o Bazel 7.0, nosso objetivo é entregar muitos dos itens em andamento e continuar trabalhando nas melhorias de recursos que nossos usuários estão pedindo.
Melhor compartilhamento de cache entre plataformas
Permite que os artefatos em cache sejam compartilhados em diferentes plataformas de build locais (Mac) e remotas (Linux), principalmente para desenvolvimento Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.
Criação de apps Android com o Bazel
O recurso de mesclagem de manifestos e recursos foi atualizado para a versão 30.1.3. Assim, os desenvolvedores de apps Android podem usar os recursos mais recentes de mesclagem 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 o aumento do paralelismo com a flag --jobs.
Bzlmod: sistema de gerenciamento de dependências externas
O Bzlmod resolve automaticamente dependências transitivas, permitindo que os projetos sejam dimensionados sem perder a velocidade e a eficiência de recursos. O Bazel 7.0 contém vários aprimoramentos na funcionalidade de gerenciamento de dependências externas do Bazel, incluindo:
- O Bzlmod foi ativado por padrão para o gerenciamento de dependências externas no Bazel.
- Suporte a arquivos de bloqueio: permite a criação hermética com o Bzlmod.
- Suporte ao modo do fornecedor/off-line: permite que os usuários executem builds com dependências pré-transferidas.
- Suporte completo ao cache do repositório (o cache não armazena em cache apenas os artefatos de download, mas também o conteúdo final do repositório)
- O Registro Central do Bazel 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 oferece métricas de tempo da fase de análise, permitindo que os desenvolvedores otimizem a própria performance do build.
Build sem os Bytes ativados por padrão
Builds sem os Bytes otimizam o desempenho evitando o download de artefatos intermediários e impedindo que os builds causem gargalos na largura de banda da rede. Os recursos adicionados incluem:
Suporte para a exclusão remota de cache com um serviço de cessão, para que os usuários não encontrem erros quando os artefatos forem excluídos prematuramente
Solução de lacunas de recursos no suporte a links simbólicos
Oferecer 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 de parede dos builds com vários destinos. O Skymeld elimina a barreira entre as fases de análise e execução para melhorar a velocidade de builds, especialmente para builds com várias metas de nível superior. No entanto, para builds de destino único, não há diferença significativa.
Ferramentas e ecossistema do Bazel
Criação de apps Android com o Bazel
- Migração de regras nativas do Android para o Starlark: no Bazel 7.0, as regras do Android migram para o Starlark para desvincular o desenvolvimento do próprio Bazel e permitir melhor as contribuições da comunidade. Além disso, essas regras são independentes do binário principal do Bazel, o que nos permite lançar 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 em apps Android rapidamente usando uma versão atualizada do Instalação para dispositivos móveis.
Geração de dados de listas de materiais de software (SBOMs) e ferramentas de compliance 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 formatados facilmente para atender às especificações do SPDX ou do 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/dev-ops multiplataforma 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 Java, C++ e Python para Starlark
Migração completa de conjuntos de regras Java, C++ e Python para o Starlark. Isso permite que os usuários do Bazel criem bifurcações apenas de conjuntos de regras, e não da base de código binário do Bazel, permitindo que os usuários
- Atualize e personalize as regras conforme necessário
- Atualizar regras de forma independente do Bazel
Suporte do Bazel-JetBrains* para o IntelliJ IDEA
Atualizações incrementais do plug-in do IntelliJ para oferecer suporte à versão mais recente do plug-in do JetBrains.
Este cronograma 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 a novas oportunidades de mercado.
Para receber notificações sobre novos recursos, incluindo atualizações deste cronograma, participe da comunidade Grupo do Google.
*Copyright © 2022 JetBrains s.r.o. JetBrains e IntelliJ são marcas registradas da JetBrains s.r.o.