2023 年 12 月 13 日宣布的变更

Protocol Buffers 于 2023 年 12 月 13 日宣布的变更。

C++ 破坏性变更

在 v26 版本中,我们计划按照我们的破坏性变更政策版本支持政策对 C++ 进行重大版本升级。

以下章节概述了我们计划在 Protocol Buffers 26.0 版本中包含的一系列破坏性变更。请注意,计划可能会并且确实会发生变化。这些是需要注意的潜在破坏性变更,但它们可能不会在这个特定版本中发生,或者可能根本不会发生。

移除 repeated 字段上已弃用的 clear API

以下已弃用的方法将被移除

  • RepeatedPtrField::ReleaseCleared()
  • RepeatedPtrField::ClearedCount()
  • RepeatedPtrField::AddCleared()

移除 C++ 遗留语法描述符 API

随着版本的发布,语法不再支持业务逻辑。相反,使用 descriptor.h 中定义的各种功能助手来查询更有针对性的行为,例如 has_presence,以在 C++ 中查询功能。

移除已弃用的语法访问器

我们计划在 v26 中移除已弃用的语法访问器 FileDescriptor::Syntax。我们建议改用 FileDescriptor::edition 中的 getter。

移除已弃用的 SupportsUnknownEnumValues 方法

SupportsUnknownEnumValues 方法已于 2023 年 3 月弃用。我们计划在 v26 中移除它。

移除 std::string 错误收集器重载

我们计划移除错误收集器中已弃用的 std::string 方法。

Python 破坏性变更

在 v26 版本中,我们计划按照我们的破坏性变更政策版本支持政策对 Python 进行重大版本升级。

时间戳将检查有效性

在 v26 版本中,系统将检查 Timestamp 值是否有效。秒数必须在 [-62135596800, 253402300799] 范围内,纳秒数必须在 [0, 999999999] 范围内。超出这些范围的值将引发异常。

移除已弃用的语法访问器

我们计划在 v26 中移除已弃用的语法访问器 FileDescriptor.syntax。我们计划在其位置添加 FileDescriptor.edition

移除 UnknownFields 支持

在 v25 版本中,纯 Python 和 C++ 扩展中的 message.UnknownFields() 已被弃用。我们计划在 v26 中移除它。请使用 unknown_fields.py 中新的 UnknownFieldSet(message) 支持作为替代。

有关所有这些变更的更多详细信息将在相应的发行说明中提供。