We generally avoid making backwards-incompatible changes. At Google, we run all of the tests in the entire depot before every release and check that there are no regressions. It is much more difficult to do that outside of Google, because there is no single source repository that contains everything.
All undocumented features (attributes, rules, “Make” variables, and flags) are subject to change at any time without prior notice. Features that are documented but marked experimental are also subject to change at any time without prior notice. The Skylark macro and rules language (anything you write in a .bzl
file) is still subject to change.
Bugs can be reported in the GitHub bugtracker. We will make an effort to triage all reported issues within 2 business days.
We try to do monthly binary releases of Bazel. A released version of Bazel should be free of regression and extensively tested. The release process is the following:
Thus, all our releases are tested with the extensive test suite we have inside Google but also with our public continuous test infrastructure and user tested both inside and outside Google.
Version 0.1 is our first release marking the start of our beta phase. Until version 1.0, each MINOR version increases will be performed when reaching a new milestone, otherwise only the PATCH version will be increased on a new release.
Version 1.0 will be the end of our beta phase and we will label each release with a version number according to the semantic version 2.0.0 document. By the time we reach version 1.0, we will define clearly what is included in our API.
We make no breaking changes to the rules, or provide instructions on how to migrate. We actively fix issues that are reported, and also keep up with changes in the underlying tools. We ensure that all the tests pass.
We avoid breaking changes when possible. We actively fix issues that are reported, but may fall behind the current state of the tools. We ensure that all the tests pass.
We are planning a number of changes to the APIs between the core of Bazel and the built-in rules, in order to make it easier for us to develop openly. This has the added benefit of also making it easier for users to maintain their own rules (if written in Java instead of Skylark), if they don't want to or cannot check this code into our repository. However, it also means our internal API is not stable yet. In the long term, we want to move to Skylark wholesale, so we encourage contributors to use Skylark instead of Java when writing new rules. Rewriting all of our built-in rules is going to be a lengthy process however.
We will not break existing tests, but otherwise make no dedicated effort to keep the rules working or up-to-date.