Version Support

A list of the support windows provided for language implementations.

Currently Supported Release Versions

LanguageActive SupportMaintenance OnlyMinimum Gencode
protoc34.x29.x, 25.x (for Java)
C++7.34.x5.29.xExact Match
C#3.34.x3.0.0
Java4.34.x3.25.x3.0.0
PHP5.34.x4.0.0
Python7.34.x5.29.x3.20.0
Ruby4.34.x3.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:

EditionReleased VersionDate Released
202432.023 May 2025
202327.013 Aug 2024
proto33.02016
proto22.02008

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

ActiveMinor and patch releases with new features, compatible changes, and bug fixes.
MaintenancePatch releases with critical bug and security vulnerability fixes.
End of LifeRelease is unsupported. Users should upgrade to a supported release.
FutureProjected release. Shown for planning purposes.

C++

Release Support Dates

Protobuf C++Release dateEnd of support
3.x25 May 202231 Mar 2024
4.x16 Feb 202331 Mar 2025
5.x13 Mar 202431 Mar 2026
6.x4 Mar 202531 Mar 2027
7.x25 Feb 2026TBD

Release Support Chart

Protobuf C++protoc23Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q426Q1
3.x21.x3.21
4.x22.x-25.x4.234.244.254.25
5.x26.x-29.x5.265.275.285.295.29
6.x30.x-33.x6.306.316.326.336.33
7.x34.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 dateEnd of support
3.x25 May 2022TBD

Release Support Chart

Protobuf C#protoc23Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q426Q1
3.x21.x+3.233.243.253.263.273.283.293.303.313.323.333.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 JavaRelease dateEnd of support
3.x25 May 202231 Mar 2027*
4.x13 Mar 202431 Mar 2028
5.xQ1 2027*31 Mar 2029

Release Support Chart

Protobuf Javaprotoc23Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q426Q1
3.x21.x-25.x3.233.243.253.25
4.x26.x+4.264.274.284.294.304.314.324.334.34

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 PHPRelease dateEnd of support
3.x25 May 202231 Mar 2025
4.x13 Mar 202431 Mar 2026
5.x25 Feb 2026TBD

Release Support Chart

Protobuf PHPprotoc23Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q426Q1
3.x21.x-25.x3.233.243.253.25
4.x26.x - 33.x4.264.274.284.294.304.314.324.334.33
5.x34.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 PythonRelease dateEnd of support
4.x25 May 202231 Mar 2025
5.x13 Mar 202431 Mar 2026
6.x4 Mar 202531 Mar 2027
7.x25 Feb 2026TBD

Release Support Chart

Protobuf Pythonprotoc23Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q426Q1
4.x21.x-25.x4.234.244.254.25
5.x26.x-29.x5.265.275.285.295.29
6.x30.x-33.x6.306.316.326.336.33
7.x34.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 RubyRelease dateEnd of support
3.x25 May 202231 Mar 2025
4.x13 Mar 2024TBD

Release Support Chart

Protobuf Rubyprotoc23Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q426Q1
3.x21.x-25.x3.233.243.253.25
4.x26.x+4.264.274.284.294.304.314.324.334.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.