News-Ankündigungen für Version 25.x

Ankündigungen für die Änderungen an Protocol Buffers Version 25.x.

Die folgenden Ankündigungen sind spezifisch für Version 25.x, die am 1. November 2023 veröffentlicht wurde. Informationen, die chronologisch präsentiert werden, finden Sie unter News.

Python Breaking Change

In v25 wird message.UnknownFields() in reinem Python und C++-Erweiterungen als veraltet markiert. Es wird in v26 entfernt. Verwenden Sie die neue UnknownFieldSet(message)-Unterstützung in unknown_fields.py als Ersatz.

μpb zieht in das Protobuf Git-Repository um

Ab der v25-Version lebt μpb nun im protobuf Repo anstelle seines bisherigen Standorts in einem separaten Repo. Alle zukünftigen μpb-Entwicklungen werden nur an diesem neuen Standort stattfinden.

Die Zusammenführung der beiden Repos wird unseren Entwicklungsprozess vereinfachen und beschleunigen, indem die Notwendigkeit entfällt, gepinnte Versionen von Abhängigkeiten zwischen protobuf und μpb zu aktualisieren. Änderungen an μpb wirken sich nun sofort auf protobuf-Code aus und umgekehrt, ohne dass ein manueller Upgrade-Schritt erforderlich ist.

Wir gehen davon aus, dass die meisten Benutzer nicht viel oder gar keine Maßnahmen ergreifen müssen, um sich an die Änderung anzupassen. μpb ist die Engine hinter unseren Ruby-, PHP- und Python-Implementierungen, aber Sie werden die Änderung höchstwahrscheinlich nicht bemerken, es sei denn, Sie haben Code, der direkt auf μpb verweist.

Wenn Sie von einem Bazel-Projekt auf μpb verweisen, müssen Sie die μpb-Referenzen aktualisieren, um stattdessen auf protobuf zu verweisen (z. B. ersetzen Sie @upb durch @com_google_protobuf). Wir behalten die μpb-Dateipfade und Bazel-Ziele bei, um die Notwendigkeit zusätzlicher Änderungen zu minimieren, aber es gibt zwei Ausnahmen:

  • Das Verzeichnis upbc wurde in upb_generator umbenannt.
  • Die Top-Level-BUILD-Datei für μpb wurde in das upb-Verzeichnis verschoben. So sollten beispielsweise Referenzen auf @upb//:reflection jetzt als @com_google_protobuf//upb:reflection geschrieben werden.

Poison Java gencode

Wir patchen eine Änderung in den 25.x-Branch ein, die Java gencode vergiftet, das vor der Veröffentlichung 3.21.7 erstellt wurde. Wir werden dann alle Versionen von Java protobuf von 3.21.7 bis 3.25.5 als anfällig für die footmitten CVE kennzeichnen.

Nachdem diese Änderung eingespielt wurde, wird protobuf eine UnsupportedOperationException von der Methode makeExtensionsImmutable auslösen, es sei denn, Sie setzen die System-Eigenschaft „-Dcom.google.protobuf.use_unsafe_pre22_gencode“. Die Verwendung dieser System-Eigenschaft kann Ihnen etwas Zeit verschaffen, wenn Sie Ihren Code nicht sofort aktualisieren können, sollte aber als kurzfristige Übergangslösung betrachtet werden.