2023 年 12 月 5 日宣布的變更
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 相容性的執行階段方法。根據我們的跨版本執行階段保證,不再支援此功能。
更多詳細資訊將在對應的版本資訊中提供。