Versionsunterstützung

Eine Liste der Support-Zeitfenster für Sprachimplementierungen.

Die Support-Zeitfenster für protoc und die verschiedenen Sprachen werden in den folgenden Tabellen behandelt. Versionsnummern in diesem Thema verwenden SemVer-Konventionen; in der Version „3.21.7“ bezeichnen wir „3“ als Hauptversion, „21“ als Nebenversion und „7“ als Micro- oder Patch-Nummer.

Ab der protoc-Version v21.x haben wir unser Versionsschema geändert, um agilere Updates für sprachspezifische Teile von Protocol Buffers zu ermöglichen. Im neuen Schema hat jede Sprache ihre eigene Hauptversion, die unabhängig von anderen Sprachen inkrementiert werden kann. Die Neben- und Patch-Versionen bleiben jedoch gekoppelt. Dies ermöglicht es uns, Breaking Changes in einigen Sprachen einzuführen, ohne dass die Hauptversion in Sprachen, die keine Breaking Changes erfahren, erhöht werden muss. Eine einzelne Version kann beispielsweise protoc Version 24.0, Java Runtime Version 4.24.0 und C# Runtime Version 3.24.0 enthalten.

Vor diesem Versionsschema hatten alle Sprachen die Hauptversion 3. Die erste Instanz dieses neuen Versionsschemas war die Version 4.21.0 der Python-API, die auf die vorherige Version 3.20.1 folgte. Andere gleichzeitig veröffentlichte Sprach-APIs wurden als 3.21.0 veröffentlicht.

Release-Rhythmus

Protobuf strebt an, vierteljährlich Updates zu veröffentlichen. Wir können eine Veröffentlichung hinzufügen, wenn ein dringender Bedarf besteht, z. B. eine Sicherheitskorrektur, die neue APIs erfordert. Das Überspringen einer Veröffentlichung sollte ein sehr seltenes Ereignis sein.

Hauptversionen (Breaking Releases) werden für das Q1-Release angesetzt. Wir können jederzeit eine größere Breaking Change einführen, wenn ein dringender Bedarf besteht, aber dies sollte sehr selten sein.

Unsere Support-Zeitfenster werden durch unsere Richtlinie für Breaking Changes in Bibliotheken definiert.

Protobuf betrachtet die Durchsetzung seiner dokumentierten Sprach-, Tooling-, Plattform- und Bibliotheksunterstützungsrichtlinien nicht als Breaking Change. Eine Veröffentlichung kann beispielsweise die Unterstützung für eine EOL-Sprachversion einstellen, ohne die Hauptversion zu erhöhen.

Was ändert sich in einem Release?

Das binäre Wire-Format ändert sich nicht, selbst bei Updates der Hauptversion. Sie können alte binäre Wire-Format-Proto-Daten weiterhin mit neueren Versionen von Protocol Buffers lesen. Neu generierte Protobuf-Bindings, die im binären Wire-Format serialisiert werden, können von älteren Binärdateien geparst werden. Dies ist ein grundlegendes Designprinzip von Protocol Buffers. Beachten Sie, dass JSON- und Textproto-Formate nicht die gleichen Stabilitätsgarantien bieten.

Das descriptor.proto-Schema kann sich ändern. In Neben- oder Patch-Releases können wir neue Nachrichten, Felder, Enums, Enum-Werte, Editionen, Editionen Features usw. hinzufügen. Wir können bestehende Elemente auch als veraltet kennzeichnen. In einer Hauptversion können wir veraltete Optionen, Enums, Enum-Werte, Nachrichten, Felder usw. entfernen.

Die Grammatik der .proto-Sprache kann sich ändern. In Neben- oder Patch-Releases können wir neue Sprachkonstrukte und alternative Syntax für bestehende Features hinzufügen. Wir können auch bestimmte Features als veraltet kennzeichnen. Dies könnte zu neuen Warnungen führen, die zuvor nicht von protoc ausgegeben wurden. In einer Hauptversion können wir die Unterstützung für veraltete Features und Syntax auf eine Weise entfernen, die Updates des Client-Codes erfordert.

Gencode- und Runtime-APIs können sich ändern. In Neben- oder Patch-Releases sind Änderungen entweder rein additiv für neue Funktionalität oder Quellcode-kompatible Updates. Einfaches Rekompilieren des Codes sollte funktionieren. In einer Hauptversion können sich die Gencode- oder Runtime-API auf inkompatible Weise ändern, was Änderungen an Aufruferstellen erfordert. Wir versuchen, diese zu minimieren. Änderungen, die undefiniertes Verhalten beheben oder anderweitig beeinflussen, gelten nicht als Breaking Changes und erfordern keine Hauptversion.

Die Unterstützung für Betriebssystem-, Programmiersprachen- und Tooling-Versionen kann sich ändern. In einer Neben- oder Patch-Version können wir die Unterstützung für bestimmte Versionen eines Betriebssystems, einer Programmiersprache oder eines Toolings hinzufügen oder einstellen. Sehen Sie sich die grundlegenden Support-Matrizen für unsere unterstützten Sprachen an.

Im Allgemeinen

Support-Dauer

Die aktuellste Version wird immer unterstützt. Die Unterstützung für frühere Nebenversionen endet, wenn eine neue Nebenversion unter derselben Hauptversion veröffentlicht wird. Die Unterstützung für frühere Hauptversionen endet vier Quartale nach dem Quartal, in dem die Breaking Release eingeführt wird. Als Protobuf Python 5.26.0 im Q1 2024 veröffentlicht wurde, wurde das Support-Ende für Protobuf Python 4.25.x auf das Ende von Q1 2025 festgelegt.

Die folgenden Abschnitte geben einen Überblick über die Unterstützung für jede Sprache.

C++

C++ zielt darauf ab, jährliche Hauptversions-Upgrades im Q1 jedes Jahres vorzunehmen.

Die protoc-Version kann aus der Nebenversionsnummer von Protobuf C++ abgeleitet werden. Beispiel: Protobuf C++ Version 4.25.x verwendet protoc Version 25.x.

Zukünftige Pläne sind in Kursivschrift dargestellt und können sich ändern.

Release-Supportdaten

Protobuf C++ErscheinungsdatumSupport-Ende
3.x25. Mai 202231. März 2024
4.x16. Feb 202331. März 2025
5.x13. März 202431. März 2026
6.x4. März 202531. März 2027
7.xQ1 202631. März 2028

Release-Support-Tabelle

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

Legende

AktivNeben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen.
WartungPatch-Releases mit kritischen Fehlerbehebungen.
End of LifeRelease wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren.
ZukunftGeplante Veröffentlichung. Zur Planung angezeigt.

C++ Tooling-, Plattform- und Bibliotheksunterstützung

Protobuf verpflichtet sich, die in der Grundlegenden C++-Supportrichtlinie beschriebene Richtlinie für Tooling-, Plattform- und Bibliotheksunterstützung zu befolgen. Spezifische unterstützte Versionen finden Sie in der Grundlegenden C++-Supportmatrix.

C#

Die protoc-Version kann aus der Nebenversionsnummer von Protobuf C# abgeleitet werden. Beispiel: Protobuf C# Version 3.25.x verwendet protoc Version 25.x.

Zukünftige Pläne sind in Kursivschrift dargestellt und können sich ändern.

Release-Supportdaten

Protobuf C#ErscheinungsdatumSupport-Ende
3.x25. Mai 2022TBD

Release-Support-Tabelle

Protobuf C#protoc23Q123Q223Q323Q424Q124Q224Q324Q425Q125Q225Q325Q4
3.x21.x-33.x3.223.233.243.253.263.273.283.293.303.313.323.33

Legende

AktivNeben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen.
WartungPatch-Releases mit kritischen Fehlerbehebungen.
End of LifeRelease wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren.
ZukunftGeplante Veröffentlichung. Zur Planung angezeigt.

C# Plattform- und Bibliotheksunterstützung

Protobuf verpflichtet sich, die in der .NET Support Policy beschriebene Plattform- und Bibliotheksunterstützungsrichtlinie zu befolgen. Spezifische unterstützte Versionen finden Sie in der Grundlegenden .NET-Supportmatrix.

Java

Java zielt darauf ab, jährliche Hauptversions-Upgrades im Q1 jedes Jahres vorzunehmen.

Die protoc-Version kann aus der Nebenversionsnummer von Protobuf Java abgeleitet werden. Beispiel: Protobuf Java Version 3.25.x verwendet protoc Version 25.x.

Zukünftige Pläne sind in Kursivschrift dargestellt und können sich ändern.

Release-Supportdaten

Protobuf JavaErscheinungsdatumSupport-Ende
3.x25. Mai 202231. März 2027*
4.x13. März 202431. März 2028
5.xQ1 2027*31. März 2029

Release-Support-Tabelle

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

Legende

AktivNeben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen.
WartungPatch-Releases mit kritischen Fehlerbehebungen.
End of LifeRelease wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren.
ZukunftGeplante Veröffentlichung. Zur Planung angezeigt.

Java Plattform- und Bibliotheksunterstützung

Protobuf verpflichtet sich, die in der Java Support Policy beschriebene Plattform- und Bibliotheksunterstützungsrichtlinie zu befolgen. Spezifische unterstützte Versionen finden Sie in der Grundlegenden Java-Supportmatrix.

Unter Android unterstützt Protobuf die Mindest-SDK-Version, die von den Google Play Services unterstützt wird und standardmäßig in Jetpack verwendet wird. Wenn sich beide Versionen unterscheiden, wird die niedrigere Version unterstützt.

Objective-C

Die protoc-Version kann aus der Nebenversionsnummer von Protobuf Objective-C abgeleitet werden. Beispiel: Protobuf Objective-C Version 3.25.x verwendet protoc Version 25.x.

Zukünftige Pläne sind in Kursivschrift dargestellt und können sich ändern.

Release-Supportdaten

Protobuf Objective-CErscheinungsdatumSupport-Ende
3.x25. Mai 202231. März 2026
4.x4. März 2025TBD

Release-Support-Tabelle

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

Legende

AktivNeben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen.
WartungPatch-Releases mit kritischen Fehlerbehebungen.
End of LifeRelease wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren.
ZukunftGeplante Veröffentlichung. Zur Planung angezeigt.

PHP

Die protoc-Version kann aus der Nebenversionsnummer von Protobuf PHP abgeleitet werden. Beispiel: Protobuf PHP Version 3.25.x verwendet protoc Version 25.x.

Zukünftige Pläne sind in Kursivschrift dargestellt und können sich ändern.

Release-Supportdaten

Protobuf PHPErscheinungsdatumSupport-Ende
3.x25. Mai 202231. März 2025
4.x13. März 2024TBD

Release-Support-Tabelle

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

Legende

AktivNeben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen.
WartungPatch-Releases mit kritischen Fehlerbehebungen.
End of LifeRelease wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren.
ZukunftGeplante Veröffentlichung. Zur Planung angezeigt.

PHP Plattform- und Bibliotheksunterstützung

Protobuf verpflichtet sich, die in der PHP Support Policy beschriebene Plattform- und Bibliotheksunterstützungsrichtlinie zu befolgen. Spezifische unterstützte Versionen finden Sie in der Grundlegenden PHP-Supportmatrix.

Python

Die protoc-Version kann aus der Nebenversionsnummer von Protobuf Python abgeleitet werden. Beispiel: Protobuf Python Version 4.25.x verwendet protoc Version 25.x.

Zukünftige Pläne sind in Kursivschrift dargestellt und können sich ändern.

Release-Supportdaten

Protobuf PythonErscheinungsdatumSupport-Ende
4.x25. Mai 202231. März 2025
5.x13. März 202431. März 2026
6.x4. März 2025TBD

Release-Support-Tabelle

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

Legende

AktivNeben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen.
WartungPatch-Releases mit kritischen Fehlerbehebungen.
End of LifeRelease wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren.
ZukunftGeplante Veröffentlichung. Zur Planung angezeigt.

Python Plattform- und Bibliotheksunterstützung

Protobuf verpflichtet sich, die in der Python Support Policy beschriebene Plattform- und Bibliotheksunterstützungsrichtlinie zu befolgen. Spezifische unterstützte Versionen finden Sie in der Grundlegenden Python-Supportmatrix.

Ruby

Die protoc-Version kann aus der Nebenversionsnummer von Protobuf Ruby abgeleitet werden. Beispiel: Protobuf Ruby Version 3.25.x verwendet protoc Version 25.x.

Zukünftige Pläne sind in Kursivschrift dargestellt und können sich ändern.

Release-Supportdaten

Protobuf RubyErscheinungsdatumSupport-Ende
3.x25. Mai 202231. März 2025
4.x13. März 2024TBD

Release-Support-Tabelle

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

Legende

AktivNeben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen.
WartungPatch-Releases mit kritischen Fehlerbehebungen.
End of LifeRelease wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren.
ZukunftGeplante Veröffentlichung. Zur Planung angezeigt.

Ruby Plattform- und Bibliotheksunterstützung

Protobuf verpflichtet sich, die in der Ruby Support Policy beschriebene Plattform- und Bibliotheksunterstützungsrichtlinie zu befolgen. Spezifische unterstützte Versionen finden Sie in der Grundlegenden Ruby-Supportmatrix.

JRuby wird nicht offiziell unterstützt, aber wir bieten eine inoffizielle Unterstützung für die neueste JRuby-Version, die auf einer Best-Effort-Basis mit unserer minimalen Ruby-Version oder höher kompatibel ist.