バージョン サポート

各言語の実装に提供されるサポート期間のリスト。

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.x2022年5月25日2024年3月31日
4.x2023年2月16日2025年3月31日
5.x2024年3月13日2026年3月31日
6.x2025年3月4日2027年3月31日
7.x2026年第1四半期2028年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 は、Foundational C++ Support Policy に記載されているツール、プラットフォーム、およびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational C++ Support Matrix を参照してください。

C#

protoc のバージョンは、Protobuf C# のマイナーバージョン番号から推測できます。例:Protobuf C# バージョン 3.25.x は protoc バージョン 25.x を使用します。

将来の計画は斜体で示されており、変更される可能性があります。

リリースサポート日

Protobuf C#リリース日サポート終了日
3.x2022年5月25日未定

リリースサポートチャート

Protobuf C#protoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x21.x-33.x3.223.233.243.253.263.273.283.293.303.313.323.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.x2022年5月25日2027年3月31日*
4.x2024年3月13日2028年3月31日
5.x2027年第1四半期*2029年3月31日

リリースサポートチャート

Protobuf Javaprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x21.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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、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.x2022年5月25日2026年3月31日
4.x2025年3月4日未定

リリースサポートチャート

Protobuf Objective-Cprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x21.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.x2022年5月25日2025年3月31日
4.x2024年3月13日未定

リリースサポートチャート

Protobuf PHPprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x21.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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational PHP Support Matrix を参照してください。

Python

protoc のバージョンは、Protobuf Python のマイナーバージョン番号から推測できます。例:Protobuf Python バージョン 4.25.x は protoc バージョン 25.x を使用します。

将来の計画は斜体で示されており、変更される可能性があります。

リリースサポート日

Protobuf Pythonリリース日サポート終了日
4.x2022年5月25日2025年3月31日
5.x2024年3月13日2026年3月31日
6.x2025年3月4日未定

リリースサポートチャート

Protobuf Pythonprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
4.x21.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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Python Support Matrix を参照してください。

Ruby

protoc のバージョンは、Protobuf Ruby のマイナーバージョン番号から推測できます。例:Protobuf Ruby バージョン 3.25.x は protoc バージョン 25.x を使用します。

将来の計画は斜体で示されており、変更される可能性があります。

リリースサポート日

Protobuf Rubyリリース日サポート終了日
3.x2022年5月25日2025年3月31日
4.x2024年3月13日未定

リリースサポートチャート

Protobuf Rubyprotoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x21.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 サポートポリシーに記載されているプラットフォームおよびライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Ruby Support Matrix を参照してください。

JRuby は公式にはサポートされていませんが、ベストエフォートベースで、最新の JRuby バージョンに対して、当社の最小 Ruby バージョン以上との互換性を目指した非公式のサポートを提供します。