Änderungen angekündigt am 6. Mai 2022
Versionsverwaltung
Wir haben unser Versionierungsschema 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, wie später in diesem Thema mit der Python-Version behandelt. Die Neben- und Patch-Versionen bleiben jedoch gekoppelt. Dies ermöglicht es uns, Breaking Changes in einige Sprachen einzuführen, ohne dass eine Erhöhung der Hauptversion in Sprachen erforderlich ist, die keine Breaking Changes erfahren.
Die erste Instanz dieses neuen Versionierungsschemas ist die neue Version der Python-API, 4.21.0, die der vorherigen Version 3.20.1 folgt. Andere Sprach-APIs werden als 3.21.0 veröffentlicht.
Python-Updates
Wir haben einige Änderungen an der Python-Sprachunterstützung in Protocol Buffers vorgenommen. Version 4.21.0 ist eine neue Hauptversion, die auf 3.20.1 folgt. Die neue Version basiert auf der upb-Bibliothek und bietet eine deutlich bessere Parsing-Leistung als frühere Versionen, insbesondere für große Payloads. Sie enthält auch vorkompilierte Binärmodule für Apple Silicon zur Leistungssteigerung ohne manuelle Kompilierung.
Die neue Version enthält einige Breaking Changes. Insbesondere:
- Die Methode
UnknownFields(), die von einer implizit erstellten Klasse abhing, wird durch die explizit erstellte KlasseUnknownFieldSetersetzt. - Einige nicht-zentrale Merkmale können sich geändert haben, wie z. B. das spezifische Format bestimmter Zeichenketten oder Fehlermeldungen. Dies sind keine Breaking Changes, können aber dennoch Ihre bestehende Codebasis beeinflussen.
- Anwendungen, die auf dem Teilen von Nachrichten zwischen Python und C++ beruhen, brechen in der neuen Version. Die meisten Entwickler sind davon nicht betroffen, aber Benutzer von Nucleus und möglicherweise andere Bibliotheken sind es. Als Workaround können Sie eine Umgebungsvariable setzen, die die Bibliothek zwingt, die Kompatibilität beizubehalten.
- Python upb benötigt generierten Code, der aus protoc 3.19.0 oder neuer generiert wurde.
JavaScript-Unterstützung
Wir haben einige Dinge für die Protocol Buffer-Unterstützung von JavaScript verschoben, um JavaScript die unabhängige Weiterentwicklung und Veröffentlichung vom Haupt-Repository zu ermöglichen. Insbesondere haben wir die Sprachunterstützung vom Hauptprojekt entkoppelt und in ein eigenes Repository verschoben.
Wenn Sie Pull-Anfragen bezüglich der JavaScript-Unterstützung in Protocol Buffers erstellt haben, die Sie noch zusammenführen möchten, können Sie diese gerne gegen das JavaScript-Repository replizieren. GitHub-Probleme werden automatisch übertragen.