Version Support
Support windows for protoc and the various languages are covered in the tables later in this topic. Version numbers throughout this topic use SemVer conventions; in the version “3.21.7,” we say that “3” is the major version, “21” is the minor version, and “7” is the micro or patch number.
Starting with the v20.x protoc release, we changed our versioning scheme to enable nimbler updates to language-specific parts of Protocol Buffers. In the new scheme, each language has its own major version that can be incremented independently of other languages. The minor and patch versions, however, remain coupled. This allows us to introduce breaking changes into some languages without requiring a bump of the major version in languages that do not experience a breaking change. For example, a single release might include protoc version 24.0, Java runtime version 4.24.0 and C# runtime version 3.24.0.
The first instance of this new versioning scheme was the 4.21.0 version of the Python API, which followed the preceding version, 3.20.1. Other language APIs released at the same time were released as 3.21.0.
Release Cadence
Protobuf does not officially have a release cadence; however, we strive to release updates quarterly, on a best-effort basis. Our support windows are defined by our library breaking change policy.
Protobuf does not consider enforcement of its documented language, tooling, platform, and library support policies to be a breaking change. For example, a release may drop support for an EOL language version without bumping major versions.
What Changes in a Release?
Each release may include one or more of the following:
- updates to the code that is generated for a language binding, and updates to the runtime that supports the binding language. In a minor or patch release, updates will be additive only (we do not remove deprecated/dead code or otherwise make destructive changes)
- bug fixes
- new features or updates to their default values (including new default values)
The wire format does not change from release to release. You will continue to be able to read old proto data from newer versions of Protocol Buffers. This is a fundamental design principle of Protocol Buffers.
Support Duration
The most recent release is always supported. Support for earlier minor versions ends when a new minor version under the same major version is released. Support for earlier major versions ends four quarters beyond the quarter that the breaking release is introduced. For example, when Python 4.21.0 was released in May of 2022, that set the end of public support of Python 3.20.1 at the end of 2023 Q2.
The following sections provide a guide to the support for each language.
C++
This table provides specific dates for support duration.
Branch | Initial Release | Public Support Until |
---|---|---|
3.21.x | 25 May 2022 | |
4.22.x | 16 Feb 2023 | |
4.23.x | 8 May 2023 | |
4.24.x | 8 Aug 2023 | |
4.25.x | 1 Nov 2023 | 31 Mar 2025 |
5.26.x | 13 Mar 2024 | TBD |
This table graphically shows support durations.
C++ will target making major version bumps annually in Q1 of each year.
protoc | C++ | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | ||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
21.x | 3.21.x | PS | PS | PS | PS | SE | ||||||
22.x | 4.22.x | IR | ||||||||||
23.x | 4.23.x | IR | ||||||||||
24.x | 4.24.x | IR | ||||||||||
25.x | 4.25.x | IR | PS | PS | PS | |||||||
26.x | 5.26.x | IR | PS | PS | ||||||||
The cells below are projections of future releases, but are not guarantees that those releases will happen, or that they will happen on that schedule. | ||||||||||||
27.x | IR | |||||||||||
28.x | IR |
Legend |
Initial release (IR) |
Public support (PS) |
Support ends (SE) |
C++ Tooling, Platform, and Library Support
Protobuf is committed to following the tooling, platform, and library support policy described in Foundational C++ Support Policy. For specific versions supported, see Foundational C++ Support Matrix.
C#
This table provides specific dates for support duration.
Branch | Initial Release | Public Support Until |
---|---|---|
3.22.x | 16 Feb 2023 | |
3.23.x | 8 May 2023 | |
3.24.x | 8 Aug 2023 | |
3.25.x | 1 Nov 2023 | |
3.26.x | 13 Mar 2024 | TBD |
This table graphically shows support durations.
protoc | C# | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | |||
---|---|---|---|---|---|---|---|---|---|---|---|
22.x | 3.22.x | IR | |||||||||
23.x | 3.23.x | IR | |||||||||
24.x | 3.24.x | IR | |||||||||
25.x | 3.25.x | IR | |||||||||
26.x | 3.26.x | IR | PS | PS | |||||||
The cells below are projections of future releases, but are not guarantees that those releases will happen, or that they will happen on that schedule. | |||||||||||
27.x | IR | ||||||||||
28.x | IR |
Legend |
Initial release (IR) |
Public support (PS) |
Support ends (SE) |
C# Platform and Library Support
Protobuf is committed to following the platform and library support policy described in .NET Support Policy. For specific versions supported, see Foundational .NET Support Matrix.
Java
This table provides specific dates for support duration.
Branch | Initial Release | Public Support Until |
---|---|---|
3.19.x | 20 Oct 2021 | |
3.20.x | 25 Mar 2022 | |
3.21.x | 25 May 2022 | |
3.22.x | 16 Feb 2023 | |
3.23.x | 8 May 2023 | |
3.24.x | 8 Aug 2023 | |
3.25.x | 1 Nov 2023 | 31 Mar 2025 |
4.26.x | 13 Mar 2024 | TBD |
This table graphically shows support durations.
Java will target making major version bumps annually in Q1 of each year.
protoc | Java | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | |
---|---|---|---|---|---|---|---|---|---|---|---|
22.x | 3.22.x | ||||||||||
23.x | 3.23.x | IR | |||||||||
24.x | 3.24.x | IR | |||||||||
25.x | 3.25.x | IR | PS | PS | PS | PS | PS | SE | |||
26.x | 4.26.x | IR | PS | PS | PS | PS | PS | ||||
The cells below are projections of future releases, but are not guarantees that those releases will happen, or that they will happen on that schedule. | |||||||||||
27.x | IR | ||||||||||
28.x | IR |
Legend |
Initial release (IR) |
Public support (PS) |
Support ends (SE) |
Java Platform and Library Support
Protobuf is committed to following the platform and library support policy described in Java Support Policy. For specific versions supported, see Foundational Java Support Matrix.
Objective-C
This table provides specific dates for support duration.
Branch | Initial Release | Public Support Until |
---|---|---|
3.22.x | 16 Feb 2023 | |
3.23.x | 8 May 2023 | |
3.24.x | 8 Aug 2023 | |
3.25.x | 1 Nov 2023 | |
3.26.x | 13 Mar 2024 | TBD |
This table graphically shows support durations.
protoc | ObjC | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | |||
---|---|---|---|---|---|---|---|---|---|---|---|
22.x | 3.22.x | IR | |||||||||
23.x | 3.23.x | IR | |||||||||
24.x | 3.24.x | IR | |||||||||
25.x | 3.25.x | IR | |||||||||
26.x | 3.26.x | IR | PS | PS | |||||||
The cells below are projections of future releases, but are not guarantees that those releases will happen, or that they will happen on that schedule. | |||||||||||
27.x | IR | ||||||||||
28.x | IR |
Legend |
Initial release (IR) |
Public support (PS) |
Support ends (SE) |
PHP
This table provides specific dates for support duration.
Branch | Initial Release | Public Support Until |
---|---|---|
3.22.x | 16 Feb 2023 | |
3.23.x | 8 May 2023 | |
3.24.x | 8 Aug 2023 | |
3.25.x | 1 Nov 2023 | 31 Mar 2025 |
4.26.x | 13 Mar 2024 | TBD |
This table graphically shows support durations.
protoc | PHP | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 |
---|---|---|---|---|---|---|---|---|---|---|---|
22.x | 3.22.x | IR | |||||||||
23.x | 3.23.x | IR | |||||||||
24.x | 3.24.x | IR | |||||||||
25.x | 3.25.x | IR | PS | PS | PS | PS | PS | SE | |||
26.x | 4.26.x | IR | PS | PS | PS | PS | PS | ||||
The cells below are projections of future releases, but are not guarantees that those releases will happen, or that they will happen on that schedule. | |||||||||||
27.x | IR | ||||||||||
28.x | IR |
Legend |
Initial release (IR) |
Public support (PS) |
Support ends (SE) |
PHP Platform and Library Support
Protobuf is committed to following the platform and library support policy described in PHP Support Policy. For specific versions supported, see Foundational PHP Support Matrix.
Python
This table provides specific dates for support duration.
Branch | Initial Release | Public Support Until |
---|---|---|
3.20.x | 25 Mar 2022 | |
4.21.x | 25 May 2022 | |
4.22.x | 16 Feb 2023 | |
4.23.x | 8 May 2023 | |
4.24.x | 8 Aug 2023 | |
4.25.x | 1 Nov 2023 | 31 Mar 2025 |
5.26.x | 13 Mar 2024 | TBD |
This table graphically shows support durations.
protoc | Python | 22Q3 | 22Q4 | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
20.x | 3.20.x | PS | PS | PS | SE | ||||||||
21.x | 4.21.x | PS | PS | ||||||||||
22.x | 4.22.x | IR | |||||||||||
23.x | 4.23.x | IR | |||||||||||
24.x | 4.24.x | IR | |||||||||||
25.x | 4.25.x | IR | PS | PS | PS | PS | PS | SE | |||||
26.x | 5.26.x | IR | PS | PS | PS | PS | PS | ||||||
The cells below are projections of future releases, but are not guarantees that those releases will happen, or that they will happen on that schedule. | |||||||||||||
27.x | IR | ||||||||||||
28.x | IR |
Legend |
Initial release (IR) |
Public support (PS) |
Support ends (SE) |
Python Platform and Library Support
Protobuf is committed to following the platform and library support policy described in Python Support Policy. For specific versions supported, see Foundational Python Support Matrix.
Ruby
This table provides specific dates for support duration.
Branch | Initial Release | Public Support Until |
---|---|---|
3.21.x | 25 May 2022 | |
3.22.x | 16 Feb 2023 | |
3.23.x | 8 May 2023 | |
3.24.x | 8 Aug 2023 | |
3.25.x | 1 Nov 2023 | 31 Mar 2025 |
4.26.x | 13 Mar 2024 | TBD |
This table graphically shows support durations.
protoc | Ruby | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 |
---|---|---|---|---|---|---|---|---|---|---|---|
22.x | 3.22.x | IR | |||||||||
23.x | 3.23.x | IR | |||||||||
24.x | 3.24.x | IR | |||||||||
25.x | 3.25.x | IR | PS | PS | PS | PS | PS | SE | |||
26.x | 4.26.x | IR | PS | PS | PS | PS | PS | ||||
The cells below are projections of future releases, but are not guarantees that those releases will happen, or that they will happen on that schedule. | |||||||||||
27.x | IR | ||||||||||
28.x | IR |
Legend |
Initial release (IR) |
Public support (PS) |
Support ends (SE) |
Ruby Platform and Library Support
Protobuf is committed to following the platform and library support policy described in Ruby Support Policy. For specific versions supported, see Foundational Ruby Support Matrix.
JRuby is not officially supported, but we provide unofficial support for the latest JRuby version targeting compatibility with our minimum Ruby version or above on a best-effort basis.