2022 年 8 月 3 日宣布的变更

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

本主题涵盖两个方面:常规平台支持变更,以及正在为 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-” 作为候选发布版本的前缀。