Version Support
Currently Supported Release Versions
| Language | Active Support | Maintenance Only | Minimum Gencode |
|---|---|---|---|
| protoc | 34.x | 29.x, 25.x (for Java) | |
| C++ | 7.34.x | 5.29.x | Exact Match |
| C# | 3.34.x | 3.0.0 | |
| Java | 4.34.x | 3.25.x | 3.0.0 |
| PHP | 5.34.x | 4.0.0 | |
| Python | 7.34.x | 5.29.x | 3.20.0 |
| Ruby | 4.34.x | 3.0.0 |
Minimum Supported Gencode
While each language runtime has a minimum supported gencode version, we recommend regenerating your gencode with every release update. Support for older generated code exists solely to ensure backwards compatibility for existing projects, not for new adoption of older gencode versions.
See Cross Version Runtime Guarantee for more information.
Supported Editions
Protobuf release versions are independent of edition “versions” (proto2, proto3, 2023, 2024). All currently supported release versions support all editions.
The current supported editions are:
| Edition | Released Version | Date Released |
|---|---|---|
| 2024 | 32.0 | 23 May 2025 |
| 2023 | 27.0 | 13 Aug 2024 |
| proto3 | 3.0 | 2016 |
| proto2 | 2.0 | 2008 |
Numbering Scheme
Version numbers use SemVer conventions. In the version “3.21.7”, “3” is the major version, “21” is the minor version, and “7” is the patch number.
Protobuf releases use only a minor.point format, for example 29.5.
Each language runtime shares this minor.point but uses a language-specific
major version. For example, Protobuf release 29.5 corresponds to Java runtime
4.29.5 and C# runtime 3.29.5. We recommend using protoc 29.5 with Java
4.29.5 and C# 3.29.5.
This scheme unifies release numbers across all languages while decoupling major
version changes. For example, release 30.0 contained breaking changes for
Python but not for Java. Therefore, Python advanced from 5.29.0 to 6.30.0,
while Java advanced from 4.29.0 to 4.30.0.
We introduced this versioning scheme in 2022 with release 21. Previously, all languages used major version 3.
Release Cadence
Protobuf releases updates quarterly. We target major (breaking) releases for Q1. Security fixes and other urgent needs will require additional releases.
Our library breaking change policy defines our support windows.
Enforcing documented language, tooling, platform, and library support policies is not a breaking change. For example, we might drop support for an End-of-Life (EOL) language version without bumping the major version.
What Changes in a Release?
The binary wire format never changes. You can read old binary wire format data with newer Protobuf versions. You can read new binary wire format data with older Protobuf versions (as long as the .proto syntax is supported). ProtoJSON format offers these same stability guarantees. TextProto is intended to be used for configuration use-cases and should not be used as a wire format between two servers.
The descriptor.proto schema can change. In minor or patch releases, we
might add or deprecate elements (messages, fields, enums, enum values, editions,
or editions features). In releases
with breaking changes (major releases), we might remove deprecated elements.
The .proto language grammar can change with new Editions. In minor
release, support for a new Edition may be added, which will add language
constructs or deprecate existing behaviors. Adopting a new Edition may require
client code updates. A future release may drop support for an old syntax.
However, we have no current concrete plans to do so.
Gencode and runtime APIs can change. Minor and patch releases include purely additive or source-compatible updates. You can simply recompile your code. Releases with breaking changes (major releases) introduce incompatible API changes that require callsite updates. We minimize these changes. Bug fixes for undefined behavior do not require a major release.
Operating system, programming language, and tooling support can change. Minor or patch releases might add or drop support for specific operating systems, programming languages, or tools. See the foundational support matrices for supported languages.
In general:
- Minor or patch releases include purely additive or source-compatible updates based on our Cross Version Runtime Guarantee.
- Major releases might remove functionality, features, or change APIs in ways that require updates to callsites.
Support Duration
We always support the most recent release. Releasing a new minor version immediately ends support for the previous minor version. Releasing a major version ends support for the previous major version four quarters later.
For example, Protobuf Python 5.26.0 launched in Q1 2024. Therefore, Protobuf Python 4.25.x support ended in Q1 2025.
The following sections detail support timelines for each language. Future plans appear in italics and might change.
Legend
| Active | Minor and patch releases with new features, compatible changes, and bug fixes. |
|---|---|
| Maintenance | Patch releases with critical bug and security vulnerability fixes. |
| End of Life | Release is unsupported. Users should upgrade to a supported release. |
| Future | Projected release. Shown for planning purposes. |
C++
Release Support Dates
| Protobuf C++ | Release date | End of support |
|---|---|---|
| 3.x | 25 May 2022 | 31 Mar 2024 |
| 4.x | 16 Feb 2023 | 31 Mar 2025 |
| 5.x | 13 Mar 2024 | 31 Mar 2026 |
| 6.x | 4 Mar 2025 | 31 Mar 2027 |
| 7.x | 25 Feb 2026 | TBD |
Release Support Chart
| Protobuf C++ | protoc | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 | 26Q1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.x | 3.21 | |||||||||||
| 4.x | 22.x-25.x | 4.23 | 4.24 | 4.25 | 4.25 | ||||||||
| 5.x | 26.x-29.x | 5.26 | 5.27 | 5.28 | 5.29 | 5.29 | |||||||
| 6.x | 30.x-33.x | 6.30 | 6.31 | 6.32 | 6.33 | 6.33 | |||||||
| 7.x | 34.x+ | 7.34 | |||||||||||
C++ Tooling, Platform, and Library Support
Protobuf follows the Foundational C++ Support Policy. For supported versions, see the Foundational C++ Support Matrix.
C#
Release Support Dates
| Protobuf C# | Release date | End of support |
|---|---|---|
| 3.x | 25 May 2022 | TBD |
Release Support Chart
| Protobuf C# | protoc | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 | 26Q1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.x+ | 3.23 | 3.24 | 3.25 | 3.26 | 3.27 | 3.28 | 3.29 | 3.30 | 3.31 | 3.32 | 3.33 | 3.34 |
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
Release Support Dates
| Protobuf Java | Release date | End of support |
|---|---|---|
| 3.x | 25 May 2022 | 31 Mar 2027* |
| 4.x | 13 Mar 2024 | 31 Mar 2028 |
| 5.x | Q1 2027* | 31 Mar 2029 |
Release Support Chart
| Protobuf Java | protoc | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 | 26Q1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.x-25.x | 3.23 | 3.24 | 3.25 | 3.25 | ||||||||
| 4.x | 26.x+ | 4.26 | 4.27 | 4.28 | 4.29 | 4.30 | 4.31 | 4.32 | 4.33 | 4.34 | |||
Note
The maintenance support window for the Protobuf Java 3.x release line is 36 months instead of the typical 12 months.Java Platform and Library Support
Protobuf follows the Java Support Policy. For supported versions, see the Foundational Java Support Matrix.
On Android, Protobuf supports the minimum SDK version defined by Google Play services or the default in Jetpack. We support whichever version is lower.
PHP
Release Support Dates
| Protobuf PHP | Release date | End of support |
|---|---|---|
| 3.x | 25 May 2022 | 31 Mar 2025 |
| 4.x | 13 Mar 2024 | 31 Mar 2026 |
| 5.x | 25 Feb 2026 | TBD |
Release Support Chart
| Protobuf PHP | protoc | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 | 26Q1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.x-25.x | 3.23 | 3.24 | 3.25 | 3.25 | ||||||||
| 4.x | 26.x - 33.x | 4.26 | 4.27 | 4.28 | 4.29 | 4.30 | 4.31 | 4.32 | 4.33 | 4.33 | |||
| 5.x | 34.x+ | 5.34 | |||||||||||
PHP Platform and Library Support
Protobuf follows the PHP Support Policy. For supported versions, see the Foundational PHP Support Matrix.
Python
Release Support Dates
| Protobuf Python | Release date | End of support |
|---|---|---|
| 4.x | 25 May 2022 | 31 Mar 2025 |
| 5.x | 13 Mar 2024 | 31 Mar 2026 |
| 6.x | 4 Mar 2025 | 31 Mar 2027 |
| 7.x | 25 Feb 2026 | TBD |
Release Support Chart
| Protobuf Python | protoc | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 | 26Q1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4.x | 21.x-25.x | 4.23 | 4.24 | 4.25 | 4.25 | ||||||||
| 5.x | 26.x-29.x | 5.26 | 5.27 | 5.28 | 5.29 | 5.29 | |||||||
| 6.x | 30.x-33.x | 6.30 | 6.31 | 6.32 | 6.33 | 6.33 | |||||||
| 7.x | 34.x+ | 7.34 | |||||||||||
Python Platform and Library Support
Protobuf follows the Python Support Policy. For supported versions, see the Foundational Python Support Matrix.
Ruby
Release Support Dates
| Protobuf Ruby | Release date | End of support |
|---|---|---|
| 3.x | 25 May 2022 | 31 Mar 2025 |
| 4.x | 13 Mar 2024 | TBD |
Release Support Chart
| Protobuf Ruby | protoc | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 | 26Q1 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.x-25.x | 3.23 | 3.24 | 3.25 | 3.25 | ||||||||
| 4.x | 26.x+ | 4.26 | 4.27 | 4.28 | 4.29 | 4.30 | 4.31 | 4.32 | 4.33 | 4.34 | |||
Ruby Platform and Library Support
Protobuf follows the Ruby Support Policy. For supported versions, see the Foundational Ruby Support Matrix.
We do not officially support JRuby. However, we provide unofficial, best-effort support for the latest JRuby version. This targets compatibility with our minimum supported Ruby version.