2023 年 12 月 5 日宣布的變更

2023 年 12 月 5 日針對 Protocol Buffers 宣布的變更。

Java 破壞性變更

在 v26 中,我們計劃根據我們的破壞性變更政策版本支援政策,針對 Java 進行主要版本升級。

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

Poison Pilling Gencode / 執行階段不符

根據我們的跨版本執行階段保證,Protobuf 不支援在主要版本邊界之間混合產生程式碼和執行階段,或在單一主要執行階段版本內混合來自較新版 protoc 的產生程式碼和較舊的執行階段。我們計劃導入「毒丸」來偵測和強制執行這些不允許的不符情況。

由於這僅是新增對現有政策的強制執行,因此不被視為破壞性變更,但可能需要使用者更新其產生程式碼。

與舊版產生程式碼的破壞性相容性

v26.x 將會破壞與舊主要版本產生程式碼的相容性。使用者應重新產生舊的產生程式碼,使其來自相同版本。

例如,最初為了與 v2.x.x 針對 v3.x.x 執行階段的產生程式碼向後相容性而引入的 GeneratedMessageV3,將會重新命名為 GeneratedMessage。執行階段將會更新以支援版本,這將與舊版產生程式碼不相容。

這符合我們現有的跨版本執行階段保證,並且是破壞性變更。

移除已棄用的方法/變數

v26.x 將會移除對已棄用方法和變數的存取權。這些通常已在先前的版本中標記為 @Deprecated

這將移除對以下非詳盡清單的存取權

  • 描述符語法 API,應替換為對應的特性存取器 (例如 FieldDescriptor.hasPresence()EnumDescriptor.isClosed())

  • TextFormat 列印方法,應替換為對應的 TextFormat.printer() 方法。

  • PARSER 變數,應替換為 parser() 方法。

  • 舊版 v2.x.x gencode 相容性的執行階段方法。根據我們的跨版本執行階段保證,不再支援此功能。

更多詳細資訊將在對應的版本資訊中提供。