版本支援
本主題後續表格將涵蓋 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.x | 2022 年 5 月 25 日 | 2024 年 3 月 31 日 |
4.x | 2023 年 2 月 16 日 | 2025 年 3 月 31 日 |
5.x | 2024 年 3 月 13 日 | 2026 年 3 月 31 日 |
6.x | 2025 年第一季 | 2027 年 3 月 31 日 |
版本支援圖表
Protobuf C++ | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3.x | 21.x | 3.21 | 3.21 | 3.21 | 3.21 | 3.21 | |||||||
4.x | 22.x-25.x | 4.22 | 4.23 | 4.24 | 4.25 | 4.25 | 4.25 | 4.25 | 4.25 | 4.25 | |||
5.x | 26.x-29.x | 5.26 | 5.27 | 5.28 | 5.29 | 5.29 | 5.29 | 5.29 | 5.29 | ||||
6.x | 30.x-33.x | 6.30 | 6.31 | 6.32 | 6.33 |
圖例
作用中 | 包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。 |
---|---|
維護 | 包含重大錯誤修正的修補程式版本。 |
生命週期終止 | 版本不受支援。使用者應升級至受支援的版本。 |
未來 | 預計發布。顯示以供規劃之用。 |
C++ 工具、平台和程式庫支援
Protobuf 致力於遵循基礎 C++ 支援政策中描述的工具、平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 C++ 支援矩陣。
C#
protoc 版本可以從 Protobuf C# 次要版本號碼推斷出來。範例:Protobuf C# 版本 3.25.x 使用 protoc 版本 25.x。
斜體字顯示未來計畫,且可能會變更。
版本支援日期
Protobuf C# | 發布日期 | 支援終止日期 |
---|---|---|
3.x | 2023 年 2 月 16 日 | 待定 |
版本支援圖表
Protobuf C# | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3.x | 22.x-33.x | 3.22 | 3.23 | 3.24 | 3.25 | 3.26 | 3.27 | 3.28 | 3.29 | 3.30 | 3.31 | 3.32 | 3.33 |
圖例
作用中 | 包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。 |
---|---|
維護 | 包含重大錯誤修正的修補程式版本。 |
生命週期終止 | 版本不受支援。使用者應升級至受支援的版本。 |
未來 | 預計發布。顯示以供規劃之用。 |
C# 平台和程式庫支援
Protobuf 致力於遵循.NET 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 .NET 支援矩陣。
Java
Java 將以每年第一季進行主要版本調整為目標。
protoc 版本可以從 Protobuf Java 次要版本號碼推斷出來。範例:Protobuf Java 版本 3.25.x 使用 protoc 版本 25.x。
斜體字顯示未來計畫,且可能會變更。
版本支援日期
Protobuf Java | 發布日期 | 支援終止日期 |
---|---|---|
3.x | 2023 年 2 月 16 日 | 2026 年 3 月 31 日* |
4.x | 2024 年 3 月 13 日 | 2027 年 3 月 31 日 |
5.x | 2026 年第一季* | 2028 年 3 月 31 日 |
注意
Protobuf Java 3.x 版本的維護支援視窗將為 24 個月,而不是主要版本系列中最終版本的典型 12 個月。未來的重大版本更新 (5.x,計畫於 2026 年第一季推出) 將採用改良的「滾動相容性視窗」,這應可讓支援視窗恢復為 12 個月。2025 年第一季不會有主要版本調整。版本支援圖表
Protobuf Java | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3.x | 22.x-25.x | 3.22 | 3.23 | 3.24 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 |
4.x | 26.x-33.x | 4.26 | 4.27 | 4.28 | 4.29 | 4.30 | 4.31 | 4.32 | 4.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.x | 2023 年 2 月 16 日 | 2026 年 3 月 31 日 |
4.x | 2025 年第一季 | 待定 |
版本支援圖表
Protobuf Objective-C | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3.x | 22.x-29.x | 3.22 | 3.23 | 3.24 | 3.25 | 3.26 | 3.27 | 3.28 | 3.29 | 3.29 | 3.29 | 3.29 | 3.29 |
4.x | 30.x+ | 4.30 | 4.31 | 4.32 | 4.33 |
圖例
作用中 | 包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。 |
---|---|
維護 | 包含重大錯誤修正的修補程式版本。 |
生命週期終止 | 版本不受支援。使用者應升級至受支援的版本。 |
未來 | 預計發布。顯示以供規劃之用。 |
PHP
protoc 版本可以從 Protobuf PHP 次要版本號碼推斷出來。範例:Protobuf PHP 版本 3.25.x 使用 protoc 版本 25.x。
斜體字顯示未來計畫,且可能會變更。
版本支援日期
Protobuf PHP | 發布日期 | 支援終止日期 |
---|---|---|
3.x | 2023 年 2 月 16 日 | 2025 年 3 月 31 日 |
4.x | 2024 年 3 月 13 日 | 待定 |
版本支援圖表
Protobuf PHP | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3.x | 22.x-25.x | 3.22 | 3.23 | 3.24 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | |||
4.x | 26.x+ | 4.26 | 4.27 | 4.28 | 4.29 | 4.30 | 4.31 | 4.32 | 4.33 |
圖例
作用中 | 包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。 |
---|---|
維護 | 包含重大錯誤修正的修補程式版本。 |
生命週期終止 | 版本不受支援。使用者應升級至受支援的版本。 |
未來 | 預計發布。顯示以供規劃之用。 |
PHP 平台和程式庫支援
Protobuf 致力於遵循PHP 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 PHP 支援矩陣。
Python
protoc 版本可以從 Protobuf Python 次要版本號碼推斷出來。範例:Protobuf Python 版本 4.25.x 使用 protoc 版本 25.x。
斜體字顯示未來計畫,且可能會變更。
版本支援日期
Protobuf Python | 發布日期 | 支援終止日期 |
---|---|---|
4.x | 2023 年 2 月 16 日 | 2025 年 3 月 31 日 |
5.x | 2024 年 3 月 13 日 | 2026 年 3 月 31 日 |
6.x | 2025 年第一季 | 待定 |
版本支援圖表
Protobuf Python | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
4.x | 22.x-25.x | 4.22 | 4.23 | 4.24 | 4.25 | 4.25 | 4.25 | 4.25 | 4.25 | 4.25 | |||
5.x | 26.x-29.x | 5.26 | 5.27 | 5.28 | 5.29 | 5.29 | 5.29 | 5.29 | 5.29 | ||||
6.x | 30.x+ | 6.30 | 6.31 | 6.32 | 6.33 |
圖例
作用中 | 包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。 |
---|---|
維護 | 包含重大錯誤修正的修補程式版本。 |
生命週期終止 | 版本不受支援。使用者應升級至受支援的版本。 |
未來 | 預計發布。顯示以供規劃之用。 |
Python 平台和程式庫支援
Protobuf 致力於遵循Python 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 Python 支援矩陣。
Ruby
protoc 版本可以從 Protobuf Ruby 次要版本號碼推斷出來。範例:Protobuf Ruby 版本 3.25.x 使用 protoc 版本 25.x。
斜體字顯示未來計畫,且可能會變更。
版本支援日期
Protobuf Ruby | 發布日期 | 支援終止日期 |
---|---|---|
3.x | 2023 年 2 月 16 日 | 2025 年 3 月 31 日 |
4.x | 2024 年 3 月 13 日 | 待定 |
版本支援圖表
Protobuf Ruby | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
3.x | 22.x-25.x | 3.22 | 3.23 | 3.24 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | 3.25 | |||
4.x | 26.x+ | 4.26 | 4.27 | 4.28 | 4.29 | 4.30 | 4.31 | 4.32 | 4.33 |
圖例
作用中 | 包含新功能、相容變更和錯誤修正的次要版本和修補程式版本。 |
---|---|
維護 | 包含重大錯誤修正的修補程式版本。 |
生命週期終止 | 版本不受支援。使用者應升級至受支援的版本。 |
未來 | 預計發布。顯示以供規劃之用。 |
Ruby 平台和程式庫支援
Protobuf 致力於遵循Ruby 支援政策中描述的平台和程式庫支援政策。如需支援的特定版本,請參閱基礎 Ruby 支援矩陣。
JRuby 未正式支援,但我們在最大努力的基礎上,為鎖定與我們的最低 Ruby 版本或更高版本相容的最新 JRuby 版本提供非官方支援。