バージョンサポート
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を必要とするセキュリティ修正などの緊急の必要性がある場合は、リリースを追加することがあります。リリースをスキップすることは非常に稀であるべきです。
メジャー(破壊的)リリースは、第1四半期のリリースを目標とします。緊急の必要性がある場合は、いつでもメジャーな破壊的変更を導入する可能性がありますが、これは非常に稀であるべきです。
当社のサポート期間は、当社のライブラリの破壊的変更ポリシーによって定義されます。
Protobuf は、その明文化された言語、ツール、プラットフォーム、ライブラリのサポートポリシーの施行を破壊的変更とは見なしません。例えば、リリースにおいて、EOL言語バージョンのサポートがメジャーバージョンを上げることなく終了する場合があります。
リリースで何が変わるか?
バイナリワイヤフォーマットは、メジャーバージョンアップでも変更されません。新しいバージョンの Protocol Buffers から、古いバイナリワイヤフォーマットの proto データを引き続き読み取ることができます。新しく生成された protobuf バインディングがバイナリワイヤフォーマットにシリアライズされた場合でも、古いバイナリで解析可能です。これは Protocol Buffers の基本的な設計原則です。JSON および textproto フォーマットは同じ安定性保証を提供しないことに注意してください。
descriptor.proto
スキーマは変更される可能性があります。マイナーリリースまたはパッチリリースでは、新しいメッセージ、フィールド、列挙型、列挙値、エディション、エディションの機能などを追加する場合があります。また、既存の要素を非推奨としてマークすることもあります。メジャーリリースでは、非推奨のオプション、列挙型、列挙値、メッセージ、フィールドなどを削除する場合があります。
.proto
言語の文法は変更される可能性があります。マイナーリリースまたはパッチリリースでは、新しい言語構造や既存の機能に対する代替構文を追加する場合があります。また、特定の機能を非推奨としてマークすることもあります。これにより、以前は protoc
によって出力されなかった新しい警告が発生する可能性があります。メジャーリリースでは、クライアントコードの更新を必要とする方法で、廃止された機能、構文、エディションのサポートを削除する場合があります。
生成コードとランタイムAPIは変更される可能性があります。マイナーリリースまたはパッチリリースでは、変更は新しい機能のための純粋な追加、またはソース互換の更新のいずれかになります。単にコードを再コンパイルすれば動作するはずです。メジャーリリースでは、生成コードまたはランタイムAPIが互換性のない方法で変更され、コールサイトの変更が必要になる場合があります。これらの変更は最小限に抑えるよう努めます。未定義の動作を修正またはその他の方法で影響を与える変更は破壊的変更とはみなされず、メジャーリリースは必要ありません。
オペレーティングシステム、プログラミング言語、およびツールのバージョンサポートは変更される可能性があります。マイナーリリースまたはパッチリリースでは、特定のバージョンのオペレーティングシステム、プログラミング言語、またはツールのサポートを追加または削除する場合があります。サポートされている言語については、基本サポートマトリックスを参照してください。
一般に
- マイナーリリースまたはパッチリリースは、当社のクロスバージョンランタイム保証に従い、純粋な追加またはソース互換の更新のみを含むべきです。
- メジャーリリースでは、機能の削除、機能の変更、またはAPIの変更により、コールサイトの更新が必要になる場合があります。
サポート期間
最新リリースは常にサポートされます。以前のマイナーバージョンのサポートは、同じメジャーバージョンの新しいマイナーバージョンがリリースされたときに終了します。以前のメジャーバージョンのサポートは、破壊的リリースが導入された四半期から4四半期後に終了します。例えば、2024年Q1にProtobuf Python 5.26.0がリリースされたとき、Protobuf Python 4.25.x のサポート終了は2025年Q1末と定められました。
以下のセクションでは、各言語のサポートに関するガイドを提供します。
C++
C++ は、毎年第1四半期にメジャーバージョンアップを行うことを目標とします。
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 | 23年Q1 | 23年Q2 | 23年Q3 | 23年Q4 | 24年Q1 | 24年Q2 | 24年Q3 | 24年Q4 | 25年Q1 | 25年Q2 | 25年Q3 | 25年Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | 2023年2月16日 | 未定 |
リリースサポートチャート
Protobuf C# | protoc | 23年Q1 | 23年Q2 | 23年Q3 | 23年Q4 | 24年Q1 | 24年Q2 | 24年Q3 | 24年Q4 | 25年Q1 | 25年Q2 | 25年Q3 | 25年Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 Support Policy で説明されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational .NET Support Matrix を参照してください。
Java
Java は、毎年第1四半期にメジャーバージョンアップを行うことを目標とします。
protoc のバージョンは、Protobuf Java のマイナーバージョン番号から推測できます。例:Protobuf Java バージョン 3.25.x は protoc バージョン 25.x を使用します。
将来の計画は斜体で示されており、変更される可能性があります。
リリースサポート日
Protobuf Java | リリース日 | サポート終了 |
---|---|---|
3.x | 2023年2月16日 | 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 | 23年Q1 | 23年Q2 | 23年Q3 | 23年Q4 | 24年Q1 | 24年Q2 | 24年Q3 | 24年Q4 | 25年Q1 | 25年Q2 | 25年Q3 | 25年Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 Support Policy で説明されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Java Support Matrix を参照してください。
Android では、Protobuf は Google Play サービスによってサポートされ、Jetpack のデフォルトである最小 SDK バージョンをサポートします。両方のバージョンが異なる場合、より低いバージョンがサポートされます。
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年3月4日 | 未定 |
リリースサポートチャート
Protobuf Objective-C | protoc | 23年Q1 | 23年Q2 | 23年Q3 | 23年Q4 | 24年Q1 | 24年Q2 | 24年Q3 | 24年Q4 | 25年Q1 | 25年Q2 | 25年Q3 | 25年Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 | 23年Q1 | 23年Q2 | 23年Q3 | 23年Q4 | 24年Q1 | 24年Q2 | 24年Q3 | 24年Q4 | 25年Q1 | 25年Q2 | 25年Q3 | 25年Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 Support Policy で説明されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational PHP Support Matrix を参照してください。
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年3月4日 | 未定 |
リリースサポートチャート
Protobuf Python | protoc | 23年Q1 | 23年Q2 | 23年Q3 | 23年Q4 | 24年Q1 | 24年Q2 | 24年Q3 | 24年Q4 | 25年Q1 | 25年Q2 | 25年Q3 | 25年Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 Support Policy で説明されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Python Support Matrix を参照してください。
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 | 23年Q1 | 23年Q2 | 23年Q3 | 23年Q4 | 24年Q1 | 24年Q2 | 24年Q3 | 24年Q4 | 25年Q1 | 25年Q2 | 25年Q3 | 25年Q4 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
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 Support Policy で説明されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Ruby Support Matrix を参照してください。
JRuby は公式にはサポートされていませんが、ベストエフォートベースで、当社の最小 Ruby バージョン以上との互換性を目指す最新の JRuby バージョンに対して非公式なサポートを提供しています。