blob: 6eab991f7a5a1e3b757370225e4a4a91596b14e4 [file] [log] [blame] [view]
ranjanihf1dca862020-12-09 15:11:06 -08001---
2layout: documentation
3title: Release versioning
daroberts223aebd2021-02-18 17:53:30 -08004category: getting-started
ranjanihf1dca862020-12-09 15:11:06 -08005---
6
Googler9e7ae8d2021-01-08 19:01:23 -08007# Release Versioning
ranjanihf1dca862020-12-09 15:11:06 -08008
9Bazel 4.0 and higher provides support for two release tracks: long term support
10(LTS) releases and rolling releases. This page covers versioning in Bazel, the
11types of releases, and the benefits of those releases for Bazel users and
12contributors.
13
14## Understanding versioning on Bazel
15
16Bazel uses a _major.minor.patch_ semantic versioning scheme.
17
18* A _major release_ contains features that are not backward compatible with the
19 previous release.
20* A _minor release_ contains new backward-compatible features.
21* A _patch release_ contains minor changes and bug fixes.
22
23Using version 3.5.1 as an example, a new release of each type would result in
24these version numbers:
25
26* Major: 4.0
27* Minor: 3.6
28* Patch: 3.5.2
29
30## Bazel's release cycle
31
32Bazel continually publishes rolling releases. Every major version is an LTS
33release. You can choose to follow either release cadence - updating from one
34LTS release to the next, or updating with each minor version release.
35
36The image shows both rolling and LTS releases, and the expected support for
37each.
38
39[!image](images/roadmap.png)
40
41## Release branches
42
43Each major version becomes a separate development branch on release. You can
44receive fixes to critical bugs on that branch without having to update to the
45Bazel release at head. Additional features on your major version branch become
46minor releases and the highest version on the branch is the supported version.
47
48Each Bazel release is paired with a list of recommended rule versions that work
49together and there is strict backwards compatibility within each branch.
50
51## LTS releases
52
53An LTS release is a major version (such as, 4.0) that is supported for 3 years
54after its release.
55A major version is released approximately every nine months.
56
57Ongoing development on a release branch results in minor versions.
58
59You can choose to pin your project to a major release and update to a newer
60version in your own time. This gives you time to preview upcoming changes and
61adapt to them in advance.
62
63## Rolling releases
64
65Rolling releases are periodically cut from Bazel's main branch.
66This release cadence involves a continuous delivery of preview releases of the
67next major Bazel version, which are in sync with Google’s internal Bazel
68releases.
69
70Note that a new rolling release can contain breaking changes that are
71incompatible with previous releases.
72
73## Updating versions
74
75* For more information on updating your Bazel version, see
76 [Updating Bazel](updating-bazel.html).
77* For more information on contributing updates to new Bazel releases, see
78 [Contributing to Bazel](bazel.build/contributing.html).
79
80