バージョン サポート
protoc およびさまざまな言語のサポート期間は、このトピックの後半の表で説明されています。このトピック全体で使用されているバージョン番号は SemVer 規則に従っています。バージョン「3.21.7」では、「3」がメジャーバージョン、「21」がマイナーバージョン、「7」がマイクロまたはパッチ番号です。
v21.x protoc リリースから、Protocol Buffers の言語固有の部分へのより機敏な更新を可能にするために、バージョン管理スキームを変更しました。新しいスキームでは、各言語が独自のメジャーバージョンを持ち、他の言語とは独立して増分できます。ただし、マイナーバージョンとパッチバージョンは結合されたままです。これにより、破壊的変更が発生しない言語でメジャーバージョンを上げる必要なく、一部の言語に破壊的変更を導入できます。たとえば、単一のリリースには、protoc バージョン 24.0、Java ランタイムバージョン 4.24.0、C# ランタイムバージョン 3.24.0 が含まれる場合があります。
このバージョン管理スキームの導入前は、すべての言語のメジャーバージョンは 3 でした。この新しいバージョン管理スキームの最初の例は、Python API の 4.21.0 バージョンで、以前のバージョン 3.20.1 に続くものでした。同時にリリースされた他の言語 API は 3.21.0 としてリリースされました。
リリースサイクル
Protobuf は四半期ごとに更新をリリースするよう努めています。新しい API を必要とするセキュリティ修正などの緊急の必要性がある場合は、リリースを追加する可能性があります。リリースをスキップすることは非常に稀なイベントであるべきです。
メジャー (破壊的) リリースは、Q1 リリースを対象とします。緊急の必要性がある場合は、いつでもメジャーな破壊的変更を導入する可能性がありますが、これは非常に稀であるべきです。
当社のサポート期間は、ライブラリの破壊的変更ポリシーによって定義されています。
Protobuf は、文書化されている言語、ツール、プラットフォーム、およびライブラリのサポートポリシーの実施を、破壊的変更とは見なしません。たとえば、リリースでは、メジャーバージョンを上げることなく、EOL 言語バージョンのサポートを終了する場合があります。
リリースにおける変更点
バイナリワイヤフォーマットは変更されません。メジャーバージョンアップグレードでも変更されません。Protocol Buffers の新しいバージョンから古いバイナリワイヤフォーマットのプロトデータを引き続き読み取ることができます。新しく生成された Protobuf バインディングがバイナリワイヤフォーマットにシリアル化された場合、古いバイナリでもパース可能です。これは Protocol Buffers の基本的な設計原則です。JSON および textproto フォーマットは、同じ安定性保証を提供しないことに注意してください。
descriptor.proto スキーマは変更される可能性があります。 マイナーリリースまたはパッチリリースでは、新しいメッセージ、フィールド、列挙型、列挙値、エディション、エディション機能などを追加する場合があります。また、既存の要素を非推奨とマークする場合があります。メジャーリリースでは、非推奨のオプション、列挙型、列挙値、メッセージ、フィールドなどを削除する場合があります。
.proto 言語の文法は変更される可能性があります。 マイナーリリースまたはパッチリリースでは、新しい言語構造や既存機能の代替構文を追加する場合があります。また、特定の機能を非推奨とマークする場合があります。これにより、以前は `protoc` によって出力されなかった新しい警告が発生する可能性があります。メジャーリリースでは、クライアントコードの更新を必要とする形で、廃止された機能、構文、エディションのサポートを削除する場合があります。
Gencode とランタイム API は変更される可能性があります。 マイナーリリースまたはパッチリリースでは、変更は新機能のための純粋な追加またはソース互換の更新のいずれかになります。コードを再コンパイルするだけで機能するはずです。メジャーリリースでは、Gencode またはランタイム API が互換性のない方法で変更され、呼び出し元のサイトの変更が必要になる場合があります。これらの変更は最小限に抑えるよう努めています。未定義の動作を修正したり、その他の方法で影響を与えたりする変更は破壊的とは見なされず、メジャーリリースを必要としません。
オペレーティングシステム、プログラミング言語、およびツールのバージョンサポートは変更される可能性があります。 マイナーリリースまたはパッチリリースでは、特定のオペレーティングシステム、プログラミング言語、またはツールの特定のバージョンのサポートを追加または削除する場合があります。サポートされている言語については、基盤となるサポートマトリックスを参照してください。
一般に
- マイナーリリースまたはパッチリリースには、クロスバージョンランタイム保証に従って、純粋な追加またはソース互換の更新のみが含まれるべきです。
- メジャーリリースでは、機能、または API が削除される、または呼び出し元のサイトの更新が必要な方法で変更される場合があります。
サポート期間
最新リリースは常にサポートされます。以前のマイナーバージョンのサポートは、同じメジャーバージョンの新しいマイナーバージョンがリリースされたときに終了します。以前のメジャーバージョンのサポートは、破壊的リリースが導入された四半期から4四半期後に終了します。たとえば、Protobuf Python 5.26.0 が2024年のQ1にリリースされたとき、Protobuf Python 4.25.x のサポート終了は2025年のQ1末に設定されました。
以下のセクションでは、各言語のサポートに関するガイドを提供します。
C++
C++ は、毎年 Q1 にメジャーバージョンアップを目指します。
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年3月4日 | 2027年3月31日 |
| 7.x | 2026年Q1 | 2028年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 は、Foundational C++ Support Policyに記載されているツール、プラットフォーム、およびライブラリのサポートポリシーに従うことにコミットしています。サポートされている特定のバージョンについては、Foundational C++ Support Matrixを参照してください。
C#
protoc のバージョンは、Protobuf C# のマイナーバージョン番号から推測できます。例: Protobuf C# バージョン 3.25.x は protoc バージョン 25.x を使用します。
将来の計画は斜体で示されており、変更される可能性があります。
リリースサポート期間
| Protobuf C# | リリース日 | サポート終了 |
|---|---|---|
| 3.x | 2022年5月25日 | 未定 |
リリースサポートチャート
| Protobuf C# | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.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 Support Policy に記載されているプラットフォームおよびライブラリのサポートポリシーに従うことにコミットしています。サポートされている特定のバージョンについては、Foundational .NET Support Matrix を参照してください。
Java
Java は、毎年 Q1 にメジャーバージョンアップを目指します。
protoc のバージョンは、Protobuf Java のマイナーバージョン番号から推測できます。例: Protobuf Java バージョン 3.25.x は protoc バージョン 25.x を使用します。
将来の計画は斜体で示されており、変更される可能性があります。
リリースサポート期間
| Protobuf Java | リリース日 | サポート終了 |
|---|---|---|
| 3.x | 2022年5月25日 | 2027年3月31日* |
| 4.x | 2024年3月13日 | 2028年3月31日 |
| 5.x | 2027年Q1* | 2029年3月31日 |
注意
Protobuf Java 3.x リリースのメンテナンスサポート期間は、メジャーバージョンラインの最終リリースにおける通常の12ヶ月ではなく36ヶ月になります。将来のメジャーバージョン更新(5.x、2027年Q1予定)では、12ヶ月のサポート期間に戻すことを可能にする、改善された「ローリング互換性ウィンドウ」が採用されます。2025年Q1と2026年Q1にはメジャーバージョンアップはありません。リリースサポートチャート
| Protobuf Java | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.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 Support Policy に記載されているプラットフォームおよびライブラリのサポートポリシーに従うことにコミットしています。サポートされている特定のバージョンについては、Foundational Java Support Matrix を参照してください。
Android では、Protobuf は Google Play services でサポートされている最小 SDK バージョンと Jetpack のデフォルトバージョンをサポートします。両バージョンが異なる場合は、より低いバージョンがサポートされます。
Objective-C
protoc のバージョンは、Protobuf Objective-C のマイナーバージョン番号から推測できます。例: Protobuf Objective-C バージョン 3.25.x は protoc バージョン 25.x を使用します。
将来の計画は斜体で示されており、変更される可能性があります。
リリースサポート期間
| Protobuf Objective-C | リリース日 | サポート終了 |
|---|---|---|
| 3.x | 2022年5月25日 | 2026年3月31日 |
| 4.x | 2025年3月4日 | 未定 |
リリースサポートチャート
| Protobuf Objective-C | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 3.x | 21.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 | 2022年5月25日 | 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 | 21.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 Support Policy に記載されているプラットフォームおよびライブラリのサポートポリシーに従うことにコミットしています。サポートされている特定のバージョンについては、Foundational PHP Support Matrix を参照してください。
Python
protoc のバージョンは、Protobuf Python のマイナーバージョン番号から推測できます。例: Protobuf Python バージョン 4.25.x は protoc バージョン 25.x を使用します。
将来の計画は斜体で示されており、変更される可能性があります。
リリースサポート期間
| Protobuf Python | リリース日 | サポート終了 |
|---|---|---|
| 4.x | 2022年5月25日 | 2025年3月31日 |
| 5.x | 2024年3月13日 | 2026年3月31日 |
| 6.x | 2025年3月4日 | 未定 |
リリースサポートチャート
| Protobuf Python | protoc | 23Q1 | 23Q2 | 23Q3 | 23Q4 | 24Q1 | 24Q2 | 24Q3 | 24Q4 | 25Q1 | 25Q2 | 25Q3 | 25Q4 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 4.x | 21.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 Support Policy に記載されているプラットフォームおよびライブラリのサポートポリシーに従うことにコミットしています。サポートされている特定のバージョンについては、Foundational Python Support Matrix を参照してください。
Ruby
protoc のバージョンは、Protobuf Ruby のマイナーバージョン番号から推測できます。例: Protobuf Ruby バージョン 3.25.x は protoc バージョン 25.x を使用します。
将来の計画は斜体で示されており、変更される可能性があります。
リリースサポート期間
| Protobuf Ruby | リリース日 | サポート終了 |
|---|---|---|
| 3.x | 2022年5月25日 | 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 | 21.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 Support Policy に記載されているプラットフォームおよびライブラリのサポートポリシーに従うことにコミットしています。サポートされている特定のバージョンについては、Foundational Ruby Support Matrix を参照してください。
JRuby は公式にはサポートされていませんが、ベストエフォートで、最小 Ruby バージョン以上との互換性をターゲットとする最新の JRuby バージョンに対する非公式サポートを提供しています。