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

所有這些變更的更多詳細資訊將會在對應的版本資訊中提供。