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 支持政策,我们计划放弃对 PHP EOL 版本的支持。 这不被认为是重大更改,因为这些版本在更广泛的生态系统中已经是 EOL。

添加 Abseil 依赖项

为了减少 protobuf 中 Google 与 OSS 之间的差异并简化我们自己的项目,我们计划正式依赖 Abseil。 随着时间的推移,我们计划开始在我们的公共 API 中使用 Abseil 类型,但仅仅添加依赖项就是一项重大更改。

放弃特定于语言的源分发

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

更改 Maven 发布候选构件名称以更符合语言习惯

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