Última verificação: 21/04/2020 (histórico de atualizações)
Ponto de contato: laurentlb
Objetivo
Nossa meta é tornar o Bazel mais extensível. Os usuários precisam conseguir implementar as próprias regras e oferecer suporte a novas linguagens e ferramentas com facilidade. Queremos melhorar a experiência de escrever e manter essas regras.
Nosso foco está em duas áreas:
- Tornar a linguagem e a API simples, mas eficientes.
- Oferecer melhores ferramentas para ler, escrever, atualizar, depurar e testar o código.
2º trimestre de 2020
Integridade do build e práticas recomendadas:
- P0. Desencorajar macros sem nome e garantir que o nome seja um literal de string exclusivo. Esse trabalho está focado na base de código do Google, mas pode afetar as ferramentas disponíveis publicamente.
- P0. Tornar os comandos do Buildozer confiáveis em relação a seleções e variáveis.
- P1. Fazer com que o Buildifier remova duplicados em listas que não classificamos por causa de comentários.
- P1. Atualizar o linter do Buildifier para recomendar expressões triviais embutidas.
- P2. Estudar casos de uso para native.existing_rules e propor alternativas.
- P2. Estudar casos de uso para o arquivo de prelúdio e propor alternativas.
Desempenho:
- P1. Otimizar o interpretador Starlark usando ambientes simples e compilação de bytecode.
Redução da dívida técnica:
- P0. Adicionar a capacidade de transferir símbolos nativos para o Starlark em @bazel_tools.
- P1. Excluir flags obsoletas (algumas delas ainda são usadas no Google. Portanto, precisamos limpar a base de código primeiro):
incompatible_always_check_depset_elements,incompatible_disable_deprecated_attr_params,incompatible_no_support_tools_in_action_inputs,incompatible_new_actions_api. - P1. Garantir que as flags a seguir possam ser invertidas no Bazel 4.0:
incompatible_disable_depset_items,incompatible_no_implicit_file_export,incompatible_run_shell_command_string,incompatible_restrict_string_escapes. - P1. Concluir o trabalho lib.syntax (limpeza da API, separação do Bazel).
- P2. Reduzir em 50% a latência de build e teste de uma edição trivial nos pacotes Java do Bazel.
Comunidade:
rules_pythonestá ativo e bem mantido pela comunidade.- Suporte contínuo para rules_jvm_external (sem solicitações de envio pendentes, triagem de problemas, criação de versões).
- Manter a infraestrutura de documentação do Bazel: centralizar e canonicalizar estilos CSS em bazel-website, bazel-blog e docs.
- Documentos do Bazel: adicionar testes de CI para o build do site de documentação de ponta a ponta para evitar regressões.
1º trimestre de 2020
Integridade do build e práticas recomendadas:
- Permitir que os destinos rastreiem a pilha de chamadas de macro para exportação via
bazel query. - Implementar
--incompatible_no_implicit_file_export. - Remover as APIs de depset descontinuadas (#5817, #10313, #9017).
- Adicionar um analisador de arquivos cruzados no Buildifier e implementar uma verificação de funções descontinuadas.
Desempenho:
- Tornar os testes baseados em Java do Bazel duas vezes mais rápidos.
- Implementar um profiler de CPU do Starlark.
Redução da dívida técnica:
- Remover oito flags incompatíveis (depois de invertê-las).
- Concluir o trabalho de limpeza lib.syntax (interromper dependências).
- Otimização do Starlark: ambiente simples, compilação de bytecode.
- Excluir toda a serialização da fase de análise, se possível.
- Fazer um plano para simplificar/otimizar lib.packages.
Comunidade:
- Publicar um glossário com definições para todos os termos específicos do Bazel.