2022 年 5 月 6 日宣布的變更

Protocol Buffers 於 2022 年 5 月 6 日宣布的變更。

版本控制

我們變更了版本控制方案,以便針對 Protocol Buffers 的特定語言部分進行更靈活的更新。在新方案中,每種語言都有自己的主要版本,可以獨立於其他語言進行遞增,如同本主題稍後在 Python 版本發布中涵蓋的內容。然而,次要版本和修補程式版本將保持關聯。這讓我們能夠在某些語言中引入重大變更,而無需在沒有重大變更的語言中提升主要版本。

此新版本控制方案的第一個實例是新版的 Python API 4.21.0,它接續先前的版本 3.20.1。其他語言 API 將以 3.21.0 版本發布。

Python 更新

我們在 Protocol Buffers 的 Python 語言支援方面進行了一些變更。版本 4.21.0 是一個新的主要版本,接續 3.20.1。新版本基於 upb 程式庫,並提供比先前版本顯著更佳的剖析效能,尤其是在處理大型酬載時。它還包含適用於 Apple silicon 的預建二進位模組,可在無需手動建置的情況下提升效能。

新版本確實包含一些重大變更。具體而言

  • UnknownFields() 方法 (它依賴隱含建立的類別) 已替換為明確建立的 UnknownFieldSet 類別。
  • 某些非核心特性可能已變更,例如特定字串或錯誤訊息的特定格式。這些變更不被視為重大變更,但仍可能影響您現有的程式碼庫。
  • 依賴在 Python 和 C++ 之間共用訊息的應用程式在新版本中會中斷。大多數開發人員不會受到此影響,但 Nucleus 和可能其他程式庫的使用者可能會受到影響。作為因應措施,您可以設定環境變數,強制程式庫保持相容性。
  • Python upb 需要從 protoc 3.19.0 或更新版本產生的產生程式碼。

JavaScript 支援

我們針對 JavaScript 的 Protocol Buffer 支援調整了一些項目,以允許 JavaScript 獨立於主要存放區進行演進和發布。具體而言,我們將語言支援與 主要專案 分離,並將其移至其自己的存放區

如果您已建立任何與 Protocol Buffers 中 JavaScript 支援相關的提取請求,且您仍然想要合併這些請求,請隨時針對 JavaScript 存放區複製這些請求。我們會自動轉移 GitHub 問題。