This page provides information on how to handle backward compatibility,
including migrating from one release to another and how to communicate
incompatible changes.Bazel is evolving. Minor versions released as part of an
LTS major version are fully backward-compatible.
Changes between major LTS releases may contain incompatible changes that require
some migration effort. For more information on how the Bazel release cadence
works, see
Announcing Bazel Long Term Support (LTS) releases.
For every incompatible change in a new release, the Bazel team aims to provide a
migration recipe that helps you update your code
(BUILD and .bzl files, as well as any Bazel usage in scripts,
usage of Bazel API, and so on).Incompatible changes should have an associated --incompatible_* flag and a
corresponding GitHub issue.
The primary source of information about incompatible changes are GitHub issues
marked with an “incompatible-change” label.For every incompatible change, the issue specifies the following:
Name of the flag controlling the incompatible change
Description of the changed functionality
Migration recipe
When an incompatible change is ready for migration with Bazel at HEAD (therefore, also with the next Bazel rolling release), it should be marked with the migration-ready label. The incompatible change issue is closed when the incompatible flag is flipped at HEAD.