2023 年 12 月 13 日宣布的變更

Protocol Buffers 於 2023 年 12 月 13 日宣布的變更。

C++ 破壞性變更

在 v26 中,我們計劃按照我們的破壞性變更政策版本支援政策,對 C++ 進行主要版本升級。

以下章節概述了我們計劃包含在 Protocol Buffers 26.0 版本中的一組破壞性變更。請注意,計劃可能會而且確實會變更。這些是需要注意的潛在破壞性變更,但它們可能不會在這個特定版本中發生,或者它們可能根本不會發生。

移除已棄用的重複欄位 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 中,message.UnknownFields() 已在純 Python 和 C++ 擴充功能中棄用。我們計劃在 v26 中移除它。使用 unknown_fields.py 中新的 UnknownFieldSet(message) 支援作為替代方案。

有關所有這些變更的更多詳細資訊將在相應的發行說明中提供。