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 相容性的執行階段方法。根據我們的跨版本執行階段保證,這不再受支援。
更多詳細資訊將在對應的發行說明中提供。