Changes announced August 3, 2022

Changes announced for Protocol Buffers on August 3, 2022.

This topic covers two areas: general platform support changes, and C++-specific changes that are being considered for the 22.x release line.

Platform Support Changes

We’ve added guidance about the platforms that we support in this section of the documentation. The section currently covers C++ and PHP, but may be expanded with information about other platforms in the future.

Official C++ Support Matrix

With the policy, mentioned earlier in this announcement, of using Google’s official foundational C++ support policy, our C++ compiler and toolchain support matrix will change.

C++ Changes

Following the announcement of our new major version and breaking changes policy, we are planning a major version bump for C++. We plan to make some changes to the assets that we release starting with our 22.x release line.

The following sections outline the set of breaking changes that we plan to include in the 22.0 release of protocol buffers. Note that plans can and do change. These are potential breaking changes to be aware of, but they may not happen in this particular release, or they may not happen at all.

Adding C++20 Support

Because of the addition of new keywords to the C++ language, adding support for C++20 is a breaking change for users even if they do not currently use C++20.

Mitigations for this to conditionally change names only in certain compiler modes would break projects that support multiple language standards.

Dropping C++11 Support

Per our C++ support policy, we plan to drop C++11 support. This is a breaking change.

Dropping Autotools Support

Per our build systems support policy, we plan to drop autotools support. This is a breaking change. After autotools support is dropped, protobuf will support only CMake and Bazel.

Dropping Support for PHP <7.4

Per our PHP support policy, we plan to drop support for EOL versions of PHP. This is not considered a breaking change since these versions are already EOL in the broader ecosystem.

Adding an Abseil Dependency

In order to reduce the Google vs. OSS differences between protobuf and to simplify our own project, we plan to take a formal dependency on Abseil. In time, we plan to start using Abseil types in our public APIs, but simply adding the dependency is a breaking change.

Dropping Language-Specific Source Distributions

To reduce dependence on autotools and minimize the number of artifacts we release, we plan to stop publishing language-specific source distributions on our GitHub release page. Instead, we advise users to download the source code distribution automatically generated by GitHub on the release page.

Changing Maven Release Candidate Artifact Names to Be More Idiomatic

In 22.0 we plan to rename Maven artifacts to use “RC” instead of “rc-” as the release candidate prefix.