バージョン サポート
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 を必要とするセキュリティ修正などの緊急の必要性がある場合は、リリースを追加する可能性があります。リリースをスキップすることは非常に稀なイベントであるべきです。
メジャー(破壊的)リリースは第1四半期のリリースを目標とします。緊急の必要性がある場合はいつでもメジャーな破壊的変更を導入する可能性がありますが、これは非常に稀なイベントであるべきです。
当社のサポート期間は、ライブラリの破壊的変更ポリシーによって定義されています。
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年の第1四半期にリリースされたとき、Protobuf Python 4.25.x のサポート終了は2025年第1四半期末に設定されました。
以下のセクションでは、各言語のサポートに関するガイドを提供します。
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年第1四半期 | 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 サポートポリシーに記載されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational .NET Support Matrix を参照してください。
Java
Java は、毎年第1四半期にメジャーバージョンアップを目標とします。
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年第1四半期* | 2029年3月31日 |
注意
Protobuf Java 3.x リリースに対するメンテナンスサポート期間は、メジャーバージョンラインの最終リリースで一般的な12ヶ月ではなく36ヶ月になります。将来のメジャーバージョン更新(5.x、2027年第1四半期予定)では、改善された 「ローリング互換性ウィンドウ」 を採用し、12ヶ月のサポート期間に戻るはずです。2025年第1四半期と2026年第1四半期にはメジャーバージョンアップはありません。リリースサポートチャート
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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Java Support Matrix を参照してください。
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 | 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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Ruby Support Matrix を参照してください。
JRuby は公式にはサポートされていませんが、ベストエフォートベースで、最新の JRuby バージョンに対して、当社の最小 Ruby バージョン以上との互換性を目指した非公式のサポートを提供します。