Skip to content

Commit e5f9c35

Browse files
Add a clearer blurb at the top of our version support page to try to explain our version numbering scheme.
PiperOrigin-RevId: 865375773
1 parent 6a1c9b4 commit e5f9c35

1 file changed

Lines changed: 18 additions & 13 deletions

File tree

content/support/version-support.md

Lines changed: 18 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,24 @@ later in this topic. Version numbers throughout this topic use
1414
"3" is the major version, "21" is the minor version, and "7" is the micro or
1515
patch number.
1616

17-
Starting with the v21.x protoc release, we changed our versioning scheme to
18-
enable nimbler updates to language-specific parts of Protocol Buffers. In the
19-
new scheme, each language has its own major version that can be incremented
20-
independently of other languages. The minor and patch versions, however, remain
21-
coupled. This allows us to introduce breaking changes into some languages
22-
without requiring a bump of the major version in languages that do not
23-
experience a breaking change. For example, a single release might include protoc
24-
version 24.0, Java runtime version 4.24.0 and C# runtime version 3.24.0.
25-
26-
Prior to this versioning scheme, all languages had major version 3. The first
27-
instance of this new versioning scheme was the 4.21.0 version of the Python API,
28-
which followed the preceding version, 3.20.1. Other language APIs released at
29-
the same time were released as 3.21.0.
17+
## Numbering scheme
18+
19+
Protobuf releases are numbered with only a `minor.point` number, for example
20+
`29.5`.
21+
22+
Each individual language runtime is versioned with that same `minor.point` but
23+
has a language-specific major version number. For example, the `29.5` release
24+
corresponds to Java runtime version `4.29.5` and C# runtime version `3.29.5`. We
25+
recommend using protoc `29.5` with Java `4.29.5` and C# `3.29.5`.
26+
27+
This numbering scheme allows a single number for a given release of all
28+
languages, while avoiding coupling of the major version numbers between
29+
different languages. For example, the `30.0` release contained breaking changes
30+
in Python but not Java, so Python version went from `5.29.0` to `6.30.0` while
31+
the Java version went from `4.29.0` to `4.30.0`.
32+
33+
This versioning scheme was introduced in 2022 with the 21 release. Prior to the
34+
decoupled versioning scheme being introduced, all languages had major version 3.
3035

3136
## Release Cadence {#cadence}
3237

0 commit comments

Comments
 (0)