Informações gerais
Feliz ano novo para nossa comunidade do Bazel. Com o ano novo, planejamos divulgar detalhes dos nossos planos para 2023. No ano passado, publicamos nosso planejamento para 2022 com os planos do Bazel 6.0 para o Bazel 6.0. Esperamos que eles atendam às suas necessidades de ferramentas de build. Queremos compartilhar nossa atualização de 2023 à medida que o projeto do Bazel continua a evoluir em resposta às suas necessidades.
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 no Bazel. Assim você tem visibilidade das prioridades e projetos em andamento.
Versão 7.0 do Bazel
Planejamos trazer 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 continuar trabalhando nas melhorias de recursos que os usuários pediram.
Melhor compartilhamento de cache multiplataforma
Permite que artefatos armazenados em cache sejam compartilhados entre diferentes plataformas de build locais (Mac) e remotas (Linux) de build, principalmente para desenvolvimento em Java/Kotlin e Android, resultando em melhor desempenho e uso eficiente do cache.
Build de app Android com o Bazel
O Manifest & Resource Merger foi atualizado para a versão 30.1.3 para que os desenvolvedores de apps Android possam usar recursos de combinação de manifesto mais recentes, 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 sinalização "--jobs".
Bzlmod: sistema de gerenciamento de dependências externas
O Bzlmod resolve automaticamente dependências transitivas, permitindo que os projetos sejam escalonados sem perder rapidez e eficiência em recursos. O Bazel 7.0 contém várias melhorias para a funcionalidade de gerenciamento de dependências externas do Bazel, incluindo:
- Bzlmod ativado por padrão para gerenciamento de dependências externas no Bazel
- Bloquear o suporte a arquivos: ativa a compilação hermética com Bzlmod.
- Suporte ao modo off-line/fornecedor: permite que os usuários executem builds com dependências já transferidas por download.
- Suporte completo ao cache do repositório. O armazenamento em cache não só faz o download dos artefatos, mas também do conteúdo final do repositório
- O Bazel Central Registry inclui contribuições regulares da comunidade e 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 build.
Criar sem a ativação do Bytes por padrão
Builds without the Bytes otimiza o desempenho, evitando o download de artefatos intermediários e impedindo que os builds criem gargalos na largura de banda da rede. Os recursos adicionados incluem:
Suporte para remoção de cache remoto com um serviço de locação, para que os usuários não tenham erros quando os artefatos forem removidos prematuramente.
Resolver lacunas de recursos no suporte a 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 introduz 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 a velocidade de criação, 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 app 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 a fim de 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, o que permite lançar com mais frequência.
- Migração das regras do Android para o Starlark
- Suporte ao R8: permite que os desenvolvedores de apps Android usem as otimizações atualizadas do R8.
- Instalação para dispositivos móveis: permite que os desenvolvedores de apps Android desenvolvam, testem e implantem rapidamente alterações de apps Android com uma versão atualizada da Instalação para dispositivos móveis.
Ferramentas de geração de dados (SBOMs) da Lista de materiais de software e conformidade de licença OSS
Com o Bazel, os desenvolvedores podem gerar dados para ajudar a produzir SBOMs. Os 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 com base nessas declarações. Veja a implementação derules_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/dev-ops multiplataforma identifiquem a origem dos binários do Bazel e protejam os sistemas contra binários potencialmente maliciosos não verificados.
Migração de regras de Java, C++ e Python para o Starlark
Migração completa dos conjuntos de regras Java, C++ e Python para o Starlark. Com esse esforço, os usuários do Bazel podem bifurcar apenas 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 IntelliJ IDEA do Bazel-JetBrains*
Atualizações incrementais do plug-in IntelliJ para oferecer suporte à versão mais recente do plug-in JetBrains.
O resumo deste roteiro visa e não deve ser considerado como garantia. As prioridades estão sujeitas a mudanças em resposta ao feedback dos desenvolvedores e clientes ou a novas oportunidades de mercado.
Para receber notificações sobre novos recursos, incluindo atualizações do roteiro, participe da comunidade do Grupo do Google.
*Direitos autorais © 2022 JetBrains s.r.o. JetBrains e IntelliJ são marcas registradas da JetBrains s.r.o