2023 年 12 月 5 日宣布的變更

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

Java 破壞性變更

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

以下章節概述我們計劃在 protocol buffers 26.0 版本中包含的一系列破壞性變更。請注意,計畫可能會變更。這些是需要注意的潛在破壞性變更,但它們可能不會在此特定版本中發生,或者它們可能根本不會發生。

毒丸 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 相容性的執行階段方法。根據我們的跨版本執行階段保證,這不再受支援。

更多詳細資訊將在對應的發行說明中提供。