于 2023 年 12 月 13 日公布的变更
C++ 重大变更
根据我们的重大变更政策和版本支持政策,我们计划在 v26 中对 C++ 进行一次主版本号更新。
以下各节概述了我们计划在 protocol buffers 26.0 版本中包含的一系列重大变更。请注意,计划可能会发生变化。这些是需要注意的潜在重大变更,但它们可能不会在这个特定版本中发生,或者根本不会发生。
移除 repeated 字段上已弃用的 clear API
以下已弃用的方法将被移除:
RepeatedPtrField::ReleaseCleared()RepeatedPtrField::ClearedCount()RepeatedPtrField::AddCleared()
移除 C++ 旧版语法描述符 API
随着版本 (editions) 的发布,业务逻辑将不再支持语法 (syntax)。请改用 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 值的有效性。秒 (seconds) 必须在 [-62135596800, 253402300799] 范围内,纳秒 (nanos) 必须在 [0, 999999999] 范围内。超出这些范围的值将引发异常。
移除已弃用的语法访问器
我们计划在 v26 中移除已弃用的语法访问器 FileDescriptor.syntax。我们计划用 FileDescriptor.edition 来替代它。
移除 UnknownFields 支持
在 v25 中,message.UnknownFields() 在纯 Python 和 C++ 扩展中均被弃用。我们计划在 v26 中将其移除。请使用 unknown_fields.py 中新的 UnknownFieldSet(message) 支持作为替代。
有关所有这些变更的更多详细信息将在相应的版本说明中提供。