2022 年 8 月 3 日发布的变更
本主题涵盖两个方面:一般的平台支持变更,以及正在考虑在 22.x 版本线中进行的 C++ 特定变更。
平台支持变更
我们已在文档的本节中添加了关于我们支持的平台的指导。目前此节涵盖 C++ 和 PHP,将来可能会扩展以包含其他平台的信息。
官方 C++ 支持矩阵
根据本公告前面提到的使用 Google 官方基础 C++ 支持策略的政策,我们的 C++ 编译器和工具链支持矩阵将发生变化。
C++ 变更
继我们宣布新的主要版本和破坏性变更政策之后,我们计划对 C++ 进行主要版本升级。我们计划从 22.x 版本线开始对发布的资源(assets)进行一些更改。
以下各节概述了我们计划包含在 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 的依赖并最小化我们发布的 artifact 数量,我们计划停止在我们的 GitHub 发布页面上发布特定语言的源代码分发。取而代之的是,我们建议用户下载 GitHub 在发布页面上自动生成的源代码分发。
将 Maven Release Candidate Artifact 名称更改为更符合习惯的名称
在 22.0 版本中,我们计划将 Maven artifact 重命名为使用 “RC” 代替 “rc-”,作为 release candidate 的前缀。