于 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

随着版本 (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) 支持作为替代。

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