2022 年 5 月 6 日發布的變更
2022 年 5 月 6 日針對 Protocol Buffers 發布的變更。
版本控制
我們變更了版本控制方案,以便更靈活地更新 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 支援
我們移動了一些用於 Protocol Buffer 對 JavaScript 的支援的項目,以便讓 JavaScript 能夠獨立於主要存放庫進行開發和發布。具體來說,我們將語言支援與 主要專案 分離,並將其移至其 自己的存放庫 中。
如果您建立了任何與 Protocol Buffers 中 JavaScript 支援相關的提取要求,而您仍想合併這些要求,請隨時在 JavaScript 存放庫中複製這些要求。我們會自動轉移 GitHub 問題。