Retrocompatibilidad

Informar un problema Ver código fuente Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

En esta página, se proporciona información para controlar la retrocompatibilidad, incluida la migración de una versión a otra y cómo comunicar los cambios incompatibles.

Bazel está evolucionando. Las versiones secundarias que se lanzan como parte de una versión principal de LTS son totalmente retrocompatibles. Las nuevas versiones principales de LTS pueden contener cambios incompatibles que requieren un esfuerzo de migración. Para obtener más información sobre el modelo de lanzamiento de Bazel, consulta la página Modelo de lanzamiento.

Resumen

  1. Se recomienda usar marcas --incompatible_* para los cambios de ruptura.
  2. Para cada marca --incompatible_*, un problema de GitHub explica el cambio de comportamiento y tiene como objetivo proporcionar una receta de migración.
  3. Se recomienda que las marcas incompatibles se lleven a la versión LTS más reciente sin habilitar la marca de forma predeterminada.
  4. Las APIs y el comportamiento protegidos por una marca --experimental_* pueden cambiar en cualquier momento.
  5. Nunca ejecutes compilaciones de producción con marcas --experimental_* o --incompatible_*.

Cómo cumplir con esta política

¿Qué es la funcionalidad estable?

En general, las APIs o los comportamientos sin marcas --experimental_... se consideran funciones compatibles y estables en Bazel.

Esto incluye lo siguiente:

  • APIs y lenguaje Starlark
  • Reglas empaquetadas con Bazel
  • APIs de Bazel, como las APIs de Remote Execution o el Protocolo de eventos de compilación
  • Marcas y su semántica

Recetas de migración y cambios incompatibles

Para cada cambio incompatible en una versión nueva, el equipo de Bazel intenta proporcionar una receta de migración que te ayude a actualizar tu código (archivos BUILD y .bzl, así como cualquier uso de Bazel en secuencias de comandos, uso de la API de Bazel, etcétera).

Los cambios incompatibles deben tener una marca --incompatible_* asociada y un problema de GitHub correspondiente.

Se recomienda que la marca incompatible y los cambios relevantes se lleven a la versión LTS más reciente sin habilitar la marca de forma predeterminada. Esto permite a los usuarios migrar los cambios incompatibles antes de que esté disponible la próxima versión LTS.

Cómo comunicar cambios incompatibles

La fuente principal de información sobre los cambios incompatibles son los problemas de GitHub marcados con la etiqueta “incompatible-change”.

Para cada cambio incompatible, el problema especifica lo siguiente:

  • Es el nombre de la marca que controla el cambio incompatible.
  • Descripción de la funcionalidad modificada
  • Receta de migración

Cuando un cambio incompatible esté listo para la migración con Bazel en HEAD (por lo tanto, también con la próxima versión continua de Bazel), se debe marcar con la etiqueta migration-ready. El problema de cambio incompatible se cierra cuando se invierte la marca incompatible en HEAD.