Versionsunterstützung
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
- Neben- oder Patch-Releases sollten nur rein additive oder quellcodekompatible Updates gemäß unserer Garantie für die Laufzeitkompatibilität über Nebenversionen hinweg enthalten.
- Hauptversionen können Funktionalität, Features oder APIs auf eine Weise entfernen, die Updates von Aufruferstellen erfordert.
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++ | Erscheinungsdatum | Support-Ende |
|---|---|---|
| 3.x | 25. Mai 2022 | 31. März 2024 |
| 4.x | 16. Feb 2023 | 31. März 2025 |
| 5.x | 13. März 2024 | 31. März 2026 |
| 6.x | 4. März 2025 | 31. März 2027 |
| 7.x | Q1 2026 | 31. März 2028 |
Release-Support-Tabelle
| 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 |
Legende
| Aktiv | Neben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen. |
|---|---|
| Wartung | Patch-Releases mit kritischen Fehlerbehebungen. |
| End of Life | Release wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren. |
| Zukunft | Geplante 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# | Erscheinungsdatum | Support-Ende |
|---|---|---|
| 3.x | 25. Mai 2022 | TBD |
Release-Support-Tabelle
| 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 |
Legende
| Aktiv | Neben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen. |
|---|---|
| Wartung | Patch-Releases mit kritischen Fehlerbehebungen. |
| End of Life | Release wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren. |
| Zukunft | Geplante 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 Java | Erscheinungsdatum | Support-Ende |
|---|---|---|
| 3.x | 25. Mai 2022 | 31. März 2027* |
| 4.x | 13. März 2024 | 31. März 2028 |
| 5.x | Q1 2027* | 31. März 2029 |
Hinweis
Das Wartungs-Supportfenster für die Protobuf Java 3.x-Version wird 36 Monate betragen, anstelle der üblichen 12 Monate für die letzte Version einer Hauptversionslinie. Zukünftige Hauptversions-Updates (5.x, geplant für Q1 2027) werden ein verbessertes „rollierendes Kompatibilitätsfenster“ einführen, das eine Rückkehr zu 12-monatigen Supportfenstern ermöglichen sollte. Es wird keine Hauptversions-Upgrades in Q1 2025 und Q1 2026 geben.Release-Support-Tabelle
| 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 |
Legende
| Aktiv | Neben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen. |
|---|---|
| Wartung | Patch-Releases mit kritischen Fehlerbehebungen. |
| End of Life | Release wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren. |
| Zukunft | Geplante 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-C | Erscheinungsdatum | Support-Ende |
|---|---|---|
| 3.x | 25. Mai 2022 | 31. März 2026 |
| 4.x | 4. März 2025 | TBD |
Release-Support-Tabelle
| 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 |
Legende
| Aktiv | Neben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen. |
|---|---|
| Wartung | Patch-Releases mit kritischen Fehlerbehebungen. |
| End of Life | Release wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren. |
| Zukunft | Geplante 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 PHP | Erscheinungsdatum | Support-Ende |
|---|---|---|
| 3.x | 25. Mai 2022 | 31. März 2025 |
| 4.x | 13. März 2024 | TBD |
Release-Support-Tabelle
| 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 |
Legende
| Aktiv | Neben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen. |
|---|---|
| Wartung | Patch-Releases mit kritischen Fehlerbehebungen. |
| End of Life | Release wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren. |
| Zukunft | Geplante 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 Python | Erscheinungsdatum | Support-Ende |
|---|---|---|
| 4.x | 25. Mai 2022 | 31. März 2025 |
| 5.x | 13. März 2024 | 31. März 2026 |
| 6.x | 4. März 2025 | TBD |
Release-Support-Tabelle
| 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 |
Legende
| Aktiv | Neben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen. |
|---|---|
| Wartung | Patch-Releases mit kritischen Fehlerbehebungen. |
| End of Life | Release wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren. |
| Zukunft | Geplante 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 Ruby | Erscheinungsdatum | Support-Ende |
|---|---|---|
| 3.x | 25. Mai 2022 | 31. März 2025 |
| 4.x | 13. März 2024 | TBD |
Release-Support-Tabelle
| 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 |
Legende
| Aktiv | Neben- und Patch-Releases mit neuen Funktionen, kompatiblen Änderungen und Fehlerbehebungen. |
|---|---|
| Wartung | Patch-Releases mit kritischen Fehlerbehebungen. |
| End of Life | Release wird nicht mehr unterstützt. Benutzer sollten auf eine unterstützte Version aktualisieren. |
| Zukunft | Geplante 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.