Compatibilidade com versões anteriores

Reportar um problema Ver código-fonte Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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 mudanças incompatíveis.

O Bazel está evoluindo. As versões secundárias lançadas como parte de uma versão principal do LTS são totalmente compatíveis com versões anteriores. As mudanças entre as principais versões do LTS podem conter alterações incompatíveis que exigem algum esforço de migração. Para mais informações sobre como a cadência de lançamento do Bazel funciona, consulte Anúncio de lançamentos do Bazel com suporte de longo prazo (LTS).

Resumo

  1. É recomendável usar flags --incompatible_* para mudanças de interrupção.
  2. Para cada flag --incompatible_*, um problema do GitHub explica a mudança no comportamento e tem como objetivo fornecer uma receita de migração.
  3. As APIs e o comportamento protegido por uma flag --experimental_* podem mudar a qualquer momento.
  4. Nunca execute builds de produção com as flags --experimental_* ou --incompatible_*.

Como obedecer a essa política

O que é funcionalidade estável?

Em geral, APIs ou comportamentos sem flags --experimental_... são considerados recursos estáveis e com suporte no Bazel.

Isso inclui:

  • APIs e linguagem Starlark
  • Regras agrupadas com o Bazel
  • APIs do Bazel, como APIs de execução remota ou protocolo de evento de build
  • Flags e semântica

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

Para cada mudança incompatível em uma nova versão, a equipe do Bazel tem como objetivo fornecer uma receita de migração que ajude a atualizar seu código (arquivos BUILD e .bzl, bem como qualquer uso do Bazel em scripts, uso da API do Bazel e assim por diante).

As mudanças incompatíveis precisam ter uma flag --incompatible_* associada e um problema do GitHub correspondente.

Como comunicar mudanças incompatíveis

A principal fonte de informações sobre mudanças incompatíveis são os problemas do GitHub marcados com um rótulo"change-incompatible".

Para cada mudança incompatível, o problema especifica o seguinte:

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

Quando uma mudança incompatível estiver pronta para migração com o Bazel no HEAD (ou seja, também com a próxima versão contínua do Bazel), ela precisa ser marcada com o rótulo migration-ready. O problema de mudança incompatível é fechado quando a flag incompatível é invertida no HEAD.