版本 25.x 的新聞公告

Protocol Buffers 版本 25.x 宣布的變更。

以下公告特定於版本 25.x。如需依時間順序呈現的資訊,請參閱新聞

Python 破壞性變更

在 v25 中,message.UnknownFields() 將在純 Python 和 C++ 擴充功能中被棄用。它將在 v26 中移除。請使用 unknown_fields.py 中新的 UnknownFieldSet(message) 支援作為替代方案。

μpb 遷移至 Protobuf Git 儲存庫

從 v25 版本開始,μpb 現在位於 protobuf repo 中,而不是在其 先前的位置 在一個獨立的 repo 中。未來所有 μpb 的開發都將僅在新位置進行。

兩個 repo 的合併將簡化並加速我們的開發流程,因為不再需要更新 protobuf 和 μpb 之間固定的版本依賴關係。現在對 μpb 的變更會立即在 protobuf 程式碼中生效,反之亦然,無需手動升級步驟。

我們預期大多數使用者不需要採取太多(如果有的話)動作來適應此變更。μpb 是我們 Ruby、PHP 和 Python 實作背後的引擎,但除非您的程式碼直接引用 μpb,否則您很可能不會注意到此變更。

如果您從 Bazel 專案引用 μpb,您需要更新 μpb 引用以指向 protobuf (例如,將 @upb 替換為 @com_google_protobuf)。我們保持 μpb 檔案路徑和 Bazel 目標不變,以盡量減少額外變更的需求,但有兩個例外

  • upbc 目錄已重新命名為 upb_generator
  • μpb 的頂層 BUILD 檔案已移至 upb 目錄中。因此,例如,對 @upb//:reflection 的引用現在應寫為 @com_google_protobuf//upb:reflection

Poison Java gencode

我們正在將一個變更修補到 25.x 分支中,該變更將 poison 在 3.21.7 版本 之前建立的 Java gencode。然後,我們將把從 3.21.7 到 3.25.5 的所有 Java protobuf 版本標記為容易受到 footmitten CVE 的攻擊。

在此變更修補後,除非您設定系統屬性「-Dcom.google.protobuf.use_unsafe_pre22_gencode」,否則 protobuf 將從 makeExtensionsImmutable 方法拋出 UnsupportedOperationException。如果您無法立即更新程式碼,使用此系統屬性可以為您爭取一些時間,但應視為短期解決方案。