2022 年 8 月 3 日宣布的变更

Protocol Buffers 于 2022 年 8 月 3 日宣布的变更。

本主题涵盖两个方面:常规平台支持变更,以及正在为 22.x 版本系列考虑的 C++ 特定变更。

平台支持变更

我们已在文档的此部分中添加了关于我们所支持的平台的指南。该部分目前涵盖 C++ 和 PHP,但将来可能会扩展以包含有关其他平台的信息。

官方 C++ 支持矩阵

根据本公告前面提到的政策,即采用 Google 官方的基础 C++ 支持政策,我们的 C++ 编译器和工具链支持矩阵将会改变

C++ 变更

在宣布我们的新主版本和重大变更政策之后,我们正计划对 C++ 进行一次主版本号的提升。我们计划从 22.x 版本系列开始,对我们发布的资产进行一些更改。

以下各节概述了我们计划在 protocol buffers 22.0 版本中包含的一系列重大变更。请注意,计划可能会发生改变。这些是需要注意的潜在重大变更,但它们可能不会在这个特定版本中发生,或者可能根本不会发生。

添加 C++20 支持

由于 C++ 语言中增加了新的关键字,即使对于当前不使用 C++20 的用户来说,添加对 C++20 的支持也是一项重大变更。

对此的缓解措施,例如仅在某些编译器模式下有条件地更改名称,将会破坏支持多种语言标准的项目。

放弃 C++11 支持

根据我们的C++ 支持政策,我们计划放弃对 C++11 的支持。这是一项重大变更。

放弃 Autotools 支持

根据我们的构建系统支持政策,我们计划放弃对 autotools 的支持。这是一项重大变更。在放弃 autotools 支持后,protobuf 将仅支持 CMake 和 Bazel。

放弃对 PHP <7.4 的支持

根据我们的PHP 支持政策,我们计划放弃对已终止生命周期(EOL)的 PHP 版本的支持。这不被视为一项重大变更,因为这些版本在更广泛的生态系统中已经 EOL。

添加 Abseil 依赖

为了减少 protobuf 在 Google 内部与开源版本之间的差异并简化我们自己的项目,我们计划正式引入对 Abseil 的依赖。我们计划在未来开始在我们的公共 API 中使用 Abseil 类型,但仅仅添加这个依赖项本身就是一项重大变更。

放弃特定语言的源代码发行版

为了减少对 autotools 的依赖并最小化我们发布的构件数量,我们计划停止在我们的 GitHub 发布页面上发布特定语言的源代码发行版。相反,我们建议用户下载 GitHub 在发布页面上自动生成的源代码发行版

将 Maven 候选发布版本的构件名称更改为更符合惯例的名称

在 22.0 版本中,我们计划重命名 Maven 构件,使用 “RC” 而不是 “rc-” 作为候选发布版本的前缀。