Cobalt Versioning

Cobalt versions, as they appear in the user agent, have the following structure:

[Feature Year].[Purpose].[Update Number].[Build ID]

The meansions of these components are described below.

Example Cobalt versions would be:

  • 19.lts.1.40455
  • 19.lts.2.53047
  • 20.lts.1.64553

Feature Year

Cobalt features are tied to a yearly release cycle and this number indicates the yearly feature set that this version of Cobalt supports. It is the last two digits of the year of the target feature set. For example for the 2019 feature set, this value will be 19.

Purpose

The purpose of this build, usually named after the reason that a branch is cut. On the master branch it will be master, and on LTS branches for example it will be lts.

Update Number

The current update revision number (e.g. release number) for a given pair of values above. This will always be 0 on the master branch. When a release branch is cut, will be modified to start at 1, and be incremented each time a release or update is released. It is possible that multiple updates are released off of the same release branch, if new bugs are discovered and fixed.

Build ID

The Cobalt Build ID represents fine-grained information about the state of the source tree for a given build. An internal Cobalt build server generates a monotonically increasing number for each unique set of sources that it sees. When an open-source release is published, a src/cobalt/build/build.id file is included that specifies the build ID of that source release. The Cobalt team can reproduce the exact sources for a given Build ID.

Note that since the Build ID always increases with time, it means that the latest version of an older Cobalt release can have a higher Build ID than the latest version of a new Cobalt release. An example from above: Cobalt 4.16134 was produced earlier than Cobalt 3.16138, thus has a lower Build ID.

Older Cobalt versioning scheme

A Cobalt version consists of two components: The Release Number and the Build ID. Some real historical Cobalt version examples:

  • 2.15147
  • 3.16138
  • 4.16134
  • 6.18971

You get the idea. The number before the dot is the “Release Number.” The number after the dot is the “Build ID.”

Release Number

In older Cobalt versioning schemes, a “Cobalt release” is an official, tested version of Cobalt that is intended to be deployable to production. The “Release Number” is a single counting number, starting at “1” for our first release, and increasing by one for every release thereafter. This number is checked into src/cobalt/version.h, and represents coarse information about the state of the source tree when we decided to do a release.

It is important to note that there are no point releases, or major or minor releases. Each release gets its own unique counting number.

Other Reading