Version Support (original) (raw)

A list of the support windows provided for language implementations.

Currently Supported Release Versions

Language Active Support Maintenance Only Minimum Gencode
protoc 35.x 33.x, 25.x (for Java)
C++ 7.35.x 6.33.x Exact Match
C# 3.35.x 3.0.0
Java 4.35.x 3.25.x 3.0.0
PHP 5.35.x 4.33.x 4.26.0
Python 7.35.x 6.33.x 3.20.0
Ruby 4.35.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.

SeeCross Version Runtime Guaranteefor more information.

Supported Editions

Protobuf release versions are independent of edition “versions” which determine the syntax used by a .proto file (proto2, proto3, 2023, 2024).

Currently, latest protoc supports handling of all cases. At some future time, a protoc release may drop support for some set of .proto inputs, but we have no concrete plans to do so today.

As new Editions are added, a sufficiently new protoc is needed to use files which use that Edition:

Edition Minimum supported protoc 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 34.1.

Each language runtime shares this minor.point but uses a language-specific major version. For example, Protobuf release 34.1 corresponds to Java runtime4.34.1 and C# runtime 3.34.1. We recommend using protoc 34.1 with Java4.34.1 and C# 3.34.1.

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.

Ourlibrary breaking change policydefines 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 thefoundational support matricesfor supported languages.

In general:

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 23Q3 23Q4 24Q1 24Q2 24Q3 24Q4 25Q1 25Q2 25Q3 25Q4 26Q1 26Q2
4.x 22.x-25.x 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 6.33
7.x 34.x+ 7.34 7.35

C++ Tooling, Platform, and Library Support

Protobuf follows theFoundational C++ Support Policy. For supported versions, see theFoundational 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 23Q3 23Q4 24Q1 24Q2 24Q3 24Q4 25Q1 25Q2 25Q3 25Q4 26Q1 26Q2
3.x 21.x+ 3.24 3.25 3.26 3.27 3.28 3.29 3.30 3.31 3.32 3.33 3.34 3.35

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, seeFoundational .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 23Q3 23Q4 24Q1 24Q2 24Q3 24Q4 25Q1 25Q2 25Q3 25Q4 26Q1 26Q2
3.x 21.x-25.x 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 4.35

Java Platform and Library Support

Protobuf follows theJava Support Policy. For supported versions, see theFoundational Java Support Matrix.

On Android, Protobuf supports the minimum SDK version defined byGoogle Play services or the default inJetpack. 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 23Q3 23Q4 24Q1 24Q2 24Q3 24Q4 25Q1 25Q2 25Q3 25Q4 26Q1 26Q2
3.x 21.x-25.x 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 4.33
5.x 34.x+ 5.34 5.35

PHP Platform and Library Support

Protobuf follows thePHP Support Policy. For supported versions, see theFoundational 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 23Q3 23Q4 24Q1 24Q2 24Q3 24Q4 25Q1 25Q2 25Q3 25Q4 26Q1 26Q2
4.x 21.x-25.x 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 6.33
7.x 34.x+ 7.34 7.35

Python Platform and Library Support

Protobuf follows thePython Support Policy. For supported versions, see theFoundational 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 23Q3 23Q4 24Q1 24Q2 24Q3 24Q4 25Q1 25Q2 25Q3 25Q4 26Q1 26Q2
3.x 21.x-25.x 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 4.35

Ruby Platform and Library Support

Protobuf follows theRuby Support Policy. For supported versions, see theFoundational 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.