版本支援

語言實作提供的支援視窗清單。

本主題後續表格將涵蓋 protoc 和各種語言的支援視窗。本主題中的版本號碼皆採用 SemVer 慣例;在版本「3.21.7」中,「3」是主要版本,「21」是次要版本,「7」是微型或修補程式號碼。

從 v20.x protoc 版本開始,我們變更了版本控制方案,以便更靈活地更新 Protocol Buffers 的語言特定部分。在新方案中,每種語言都有自己的主要版本,可以獨立於其他語言遞增。然而,次要版本和修補程式版本仍然保持關聯。這讓我們能夠在某些語言中引入重大變更,而無需在未發生重大變更的語言中調整主要版本。例如,單一版本可能包含 protoc 版本 24.0、Java 執行階段版本 4.24.0 和 C# 執行階段版本 3.24.0。

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

發布節奏

Protobuf 致力於每季發布更新。如果出現緊急需求 (例如需要新 API 的安全性修正),我們可能會新增版本。跳過版本應該是非常罕見的情況。

主要 (重大) 版本將以 Q1 版本為目標。如果出現緊急需求,我們可能會隨時引入重大變更,但這種情況應該非常罕見。

我們的支援視窗由我們的程式庫重大變更政策定義。

Protobuf 並認為強制執行其記錄的語言、工具、平台和程式庫支援政策是重大變更。例如,版本可能會在不調整主要版本的情況下,取消對 EOL 語言版本的支援。

版本發布內容變更?

即使在主要版本更新中,二進位線路格式也不會變更。您將繼續能夠從較新版本的 Protocol Buffers 讀取舊的二進位線路格式 proto 資料。新產生的 protobuf 繫結序列化為二進位線路格式後,可由舊版二進位檔剖析。這是 Protocol Buffers 的基本設計原則。請注意,JSON 和 textproto 格式並未提供相同的穩定性保證。

descriptor.proto 結構描述可能會變更。在次要或修補程式版本中,我們可能會新增訊息、欄位、列舉、列舉值、版本、版本功能等。我們也可能會將現有元素標記為已淘汰。在主要版本中,我們可能會移除已淘汰的選項、列舉、列舉值、訊息、欄位等。

.proto 語言語法可能會變更。在次要或修補程式版本中,我們可能會為現有功能新增語言結構和替代語法。我們也可能會將某些功能標記為已淘汰。這可能會導致發出先前 protoc 未發出的新警告。在主要版本中,我們可能會移除對過時功能、語法、版本的支援,而這會需要更新用戶端程式碼。

Gencode 和執行階段 API 可能會變更。在次要或修補程式版本中,變更將純粹是新增功能的附加或來源相容更新。只需重新編譯程式碼即可。在主要版本中,gencode 或執行階段 API 可能會以不相容的方式變更,而這會需要呼叫點變更。我們會盡力減少這些變更。修正或以其他方式影響未定義行為的變更不視為重大變更,且不需要主要版本。

作業系統、程式設計語言和工具版本支援可能會變更。在次要或修補程式版本中,我們可能會新增或取消對特定版本的作業系統、程式設計語言或工具的支援。請參閱基礎支援矩陣,以瞭解我們支援的語言。

一般而言

  • 根據我們的跨版本執行階段保證,次要或修補程式版本應僅包含純粹的附加或來源相容更新
  • 主要版本可能會移除功能、特性,或以需要更新呼叫點的方式變更 API。

支援期間

永遠支援最新版本。當相同主要版本下的新次要版本發布時,對先前次要版本的支援即告終止。對先前主要版本的支援會在重大版本推出季度之後的四個季度結束。例如,當 Protobuf Python 5.26.0 在 2024 年第一季發布時,這將 Protobuf Python 4.25.x 的支援結束日期設定為2025 年第一季末

以下章節提供每種語言支援的指南。

C++

C++ 將以每年第一季進行主要版本調整為目標。

protoc 版本可以從 Protobuf C++ 次要版本號碼推斷出來。範例:Protobuf C++ 版本 4.25.x 使用 protoc 版本 25.x。

斜體字顯示未來計畫,且可能會變更。

版本支援日期

Protobuf C++發布日期支援終止日期
3.x2022 年 5 月 25 日2024 年 3 月 31 日
4.x2023 年 2 月 16 日2025 年 3 月 31 日
5.x2024 年 3 月 13 日2026 年 3 月 31 日
6.x2025 年第一季2027 年 3 月 31 日

版本支援圖表

Protobuf C++protoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x21.x3.213.213.213.213.21
4.x22.x-25.x4.224.234.244.254.254.254.254.254.25
5.x26.x-29.x5.265.275.285.295.295.295.295.29
6.x30.x-33.x6.306.316.326.33

圖例

作用中包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。
維護包含重大錯誤修正的修補程式版本。
生命週期終止版本不受支援。使用者應升級至受支援的版本。
未來預計發布。顯示以供規劃之用。

C++ 工具、平台和程式庫支援

Protobuf 致力於遵循基礎 C++ 支援政策中描述的工具、平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 C++ 支援矩陣

C#

protoc 版本可以從 Protobuf C# 次要版本號碼推斷出來。範例:Protobuf C# 版本 3.25.x 使用 protoc 版本 25.x。

斜體字顯示未來計畫,且可能會變更。

版本支援日期

Protobuf C#發布日期支援終止日期
3.x2023 年 2 月 16 日待定

版本支援圖表

Protobuf C#protoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x22.x-33.x3.223.233.243.253.263.273.283.293.303.313.323.33

圖例

作用中包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。
維護包含重大錯誤修正的修補程式版本。
生命週期終止版本不受支援。使用者應升級至受支援的版本。
未來預計發布。顯示以供規劃之用。

C# 平台和程式庫支援

Protobuf 致力於遵循.NET 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 .NET 支援矩陣

Java

Java 將以每年第一季進行主要版本調整為目標。

protoc 版本可以從 Protobuf Java 次要版本號碼推斷出來。範例:Protobuf Java 版本 3.25.x 使用 protoc 版本 25.x。

斜體字顯示未來計畫,且可能會變更。

版本支援日期

Protobuf Java發布日期支援終止日期
3.x2023 年 2 月 16 日2026 年 3 月 31 日*
4.x2024 年 3 月 13 日2027 年 3 月 31 日
5.x2026 年第一季*2028 年 3 月 31 日

版本支援圖表

Protobuf Javaprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x22.x-25.x3.223.233.243.253.253.253.253.253.253.253.253.25
4.x26.x-33.x4.264.274.284.294.304.314.324.33

圖例

作用中包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。
維護包含重大錯誤修正的修補程式版本。
生命週期終止版本不受支援。使用者應升級至受支援的版本。
未來預計發布。顯示以供規劃之用。

Java 平台和程式庫支援

Protobuf 致力於遵循Java 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 Java 支援矩陣

在 Android 上,Protobuf 支援 Google Play 服務 支援的最低 SDK 版本,並且是 Jetpack 中的預設版本。如果兩個版本不同,則支援較低的版本。

Objective-C

protoc 版本可以從 Protobuf Objective-C 次要版本號碼推斷出來。範例:Protobuf Objective-C 版本 3.25.x 使用 protoc 版本 25.x。

斜體字顯示未來計畫,且可能會變更。

版本支援日期

Protobuf Objective-C發布日期支援終止日期
3.x2023 年 2 月 16 日2026 年 3 月 31 日
4.x2025 年第一季待定

版本支援圖表

Protobuf Objective-Cprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x22.x-29.x3.223.233.243.253.263.273.283.293.293.293.293.29
4.x30.x+4.304.314.324.33

圖例

作用中包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。
維護包含重大錯誤修正的修補程式版本。
生命週期終止版本不受支援。使用者應升級至受支援的版本。
未來預計發布。顯示以供規劃之用。

PHP

protoc 版本可以從 Protobuf PHP 次要版本號碼推斷出來。範例:Protobuf PHP 版本 3.25.x 使用 protoc 版本 25.x。

斜體字顯示未來計畫,且可能會變更。

版本支援日期

Protobuf PHP發布日期支援終止日期
3.x2023 年 2 月 16 日2025 年 3 月 31 日
4.x2024 年 3 月 13 日待定

版本支援圖表

Protobuf PHPprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x22.x-25.x3.223.233.243.253.253.253.253.253.25
4.x26.x+4.264.274.284.294.304.314.324.33

圖例

作用中包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。
維護包含重大錯誤修正的修補程式版本。
生命週期終止版本不受支援。使用者應升級至受支援的版本。
未來預計發布。顯示以供規劃之用。

PHP 平台和程式庫支援

Protobuf 致力於遵循PHP 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 PHP 支援矩陣

Python

protoc 版本可以從 Protobuf Python 次要版本號碼推斷出來。範例:Protobuf Python 版本 4.25.x 使用 protoc 版本 25.x。

斜體字顯示未來計畫,且可能會變更。

版本支援日期

Protobuf Python發布日期支援終止日期
4.x2023 年 2 月 16 日2025 年 3 月 31 日
5.x2024 年 3 月 13 日2026 年 3 月 31 日
6.x2025 年第一季待定

版本支援圖表

Protobuf Pythonprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
4.x22.x-25.x4.224.234.244.254.254.254.254.254.25
5.x26.x-29.x5.265.275.285.295.295.295.295.29
6.x30.x+6.306.316.326.33

圖例

作用中包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。
維護包含重大錯誤修正的修補程式版本。
生命週期終止版本不受支援。使用者應升級至受支援的版本。
未來預計發布。顯示以供規劃之用。

Python 平台和程式庫支援

Protobuf 致力於遵循Python 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 Python 支援矩陣

Ruby

protoc 版本可以從 Protobuf Ruby 次要版本號碼推斷出來。範例:Protobuf Ruby 版本 3.25.x 使用 protoc 版本 25.x。

斜體字顯示未來計畫,且可能會變更。

版本支援日期

Protobuf Ruby發布日期支援終止日期
3.x2023 年 2 月 16 日2025 年 3 月 31 日
4.x2024 年 3 月 13 日待定

版本支援圖表

Protobuf Rubyprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x22.x-25.x3.223.233.243.253.253.253.253.253.25
4.x26.x+4.264.274.284.294.304.314.324.33

圖例

作用中包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。
維護包含重大錯誤修正的修補程式版本。
生命週期終止版本不受支援。使用者應升級至受支援的版本。
未來預計發布。顯示以供規劃之用。

Ruby 平台和程式庫支援

Protobuf 致力於遵循Ruby 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 Ruby 支援矩陣

JRuby 未正式支援,但我們在最大努力的基礎上,為鎖定與我們的最低 Ruby 版本或更高版本相容的最新 JRuby 版本提供非官方支援。