Compatibilidade

Informar um problema Ver código-fonte

Esta página fornece informações sobre como lidar com a compatibilidade com versões anteriores, incluindo a migração de uma versão para outra e como comunicar alterações incompatíveis.

O Bazel está evoluindo. As versões secundárias lançadas como parte de uma versão principal de LTI são totalmente compatíveis com versões anteriores. As novas versões principais de LTS podem conter alterações incompatíveis que exigem algum esforço de migração. Para mais informações sobre o modelo de lançamento do Bazel, consulte a página Modelo de lançamento.

Resumo

  1. É recomendável usar sinalizações --incompatible_* para alterações interruptivas.
  2. Para cada sinalização --incompatible_*, um problema do GitHub explica a mudança de comportamento e tem como objetivo fornecer uma receita de migração.
  3. É recomendável que as sinalizações incompatíveis sejam compatíveis com as versões mais recentes do LTS sem ativar a sinalização por padrão.
  4. As APIs e o comportamento protegidos por uma sinalização --experimental_* podem mudar a qualquer momento.
  5. Nunca execute builds de produção com sinalizações --experimental_* ou --incompatible_*.

Como seguir essa política

O que é funcionalidade estável?

Em geral, APIs ou comportamentos sem sinalizações --experimental_... são considerados recursos estáveis e compatíveis com o Bazel.

Isso inclui o seguinte:

  • Linguagem e APIs Starlark
  • Regras empacotadas com o Bazel
  • APIs do Bazel, como APIs de execução remota ou Build Event Protocol
  • Sinalizações e a semântica delas

Mudanças e receitas de migração incompatíveis

O objetivo da equipe do Bazel é fornecer uma receita de migração para cada alteração incompatível em uma nova versão, o que ajuda a atualizar seu código (arquivos BUILD e .bzl, bem como qualquer uso do Bazel em scripts, uso da API Bazel etc.).

As alterações incompatíveis precisam ter uma sinalização --incompatible_* associada e um problema do GitHub correspondente.

Recomenda-se que a sinalização incompatível e as alterações relevantes sejam retroativas para a versão mais recente do LTS sem ativar a sinalização por padrão. Isso permite que os usuários migrem para as alterações incompatíveis antes que a próxima versão LTS esteja disponível.

Como comunicar alterações incompatíveis

A principal fonte de informações sobre alterações incompatíveis são problemas do GitHub marcados com um marcador"incompatível com alterações".

Para cada alteração incompatível, o problema especifica o seguinte:

  • Nome da sinalização que controla a alteração incompatível
  • Descrição da funcionalidade alterada
  • Receita de migração

Quando uma alteração incompatível estiver pronta para migração com o Bazel em HEAD (portanto, também com a próxima versão contínua do Bazel), ela precisará ser marcada com o rótulo migration-ready. O problema de alteração incompatível é fechado quando a sinalização incompatível é invertida em HEAD.