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)
支持作为替代。
有关所有这些变更的更多详细信息将在相应的发行说明中提供。