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.
C++ ChangesFollowing 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 SupportBecause 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 SupportPer our C++ support policy, we plan to drop C++11 support. This is a breaking change.
Dropping Autotools SupportPer 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.4Per 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 DependencyIn 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 DistributionsTo 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 Release Artifact Names to Be More IdiomaticCurrently, some assets that we release have names that don’t conform to their respective language or package idioms. In 22.0 we plan to perform the following name changes to be more conformant to language and package standards:
We currently release multiple Ruby gems that are compiled for different architectures. Starting in 22.0, we plan to release only a single ruby source gem that contains source code and will be compiled on the host system.