バージョンサポート

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

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.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年Q12028年3月31日

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

Protobuf C++protoc23年Q123年Q223年Q323年Q424年Q124年Q224年Q324年Q425年Q125年Q225年Q325年Q4
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.x2023年2月16日未定

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

Protobuf C#protoc23年Q123年Q223年Q323年Q424年Q124年Q224年Q324年Q425年Q125年Q225年Q325年Q4
3.x22.x~33.x3.223.233.243.253.263.273.283.293.303.313.323.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.x2023年2月16日2027年3月31日*
4.x2024年3月13日2028年3月31日
5.x2027年Q1*2029年3月31日

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

Protobuf Javaprotoc23年Q123年Q223年Q323年Q424年Q124年Q224年Q324年Q425年Q125年Q225年Q325年Q4
3.x22.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 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.x2023年2月16日2026年3月31日
4.x2025年3月4日未定

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

Protobuf Objective-Cprotoc23年Q123年Q223年Q323年Q424年Q124年Q224年Q324年Q425年Q125年Q225年Q325年Q4
3.x22.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.x2023年2月16日2025年3月31日
4.x2024年3月13日未定

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

Protobuf PHPprotoc23年Q123年Q223年Q323年Q424年Q124年Q224年Q324年Q425年Q125年Q225年Q325年Q4
3.x22.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 Support Policy で説明されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational PHP Support Matrix を参照してください。

Python

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

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

リリースサポート日

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

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

Protobuf Pythonprotoc23年Q123年Q223年Q323年Q424年Q124年Q224年Q324年Q425年Q125年Q225年Q325年Q4
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以降6.306.316.326.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.x2023年2月16日2025年3月31日
4.x2024年3月13日未定

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

Protobuf Rubyprotoc23年Q123年Q223年Q323年Q424年Q124年Q224年Q324年Q425年Q125年Q225年Q325年Q4
3.x22.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 Support Policy で説明されているプラットフォームとライブラリのサポートポリシーに従うことを約束します。サポートされている特定のバージョンについては、Foundational Ruby Support Matrix を参照してください。

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