Änderungen angekündigt am 11. April 2023

Angekündigte Änderungen für Protocol Buffers am 11. April 2023.

Syntax-Reflection-Veralterung

Version 23 wird die Fähigkeit zur Überprüfung der Syntaxversion mittels Reflection veralten lassen. Die Veralterung wird als Warnungen zur Build-Zeit enthalten sein. Die Funktion wird in einer zukünftigen Version entfernt.

Unterstützung für ctype=CORD in C++ hinzufügen

Version 23 wird die Unterstützung für ctype=CORD für singuläre bytes-Felder, einschließlich oneof-Felder, hinzufügen, um anzugeben, dass Daten mit absl::cord anstelle von string gespeichert werden sollen. Unterstützung für singuläre string-Feldtypen und für repeated string- und byte-Felder kann in zukünftigen Versionen hinzugefügt werden, wenn ausreichend Interesse von der Open-Source-Community besteht.

ctype=CORD hat keine Auswirkung auf Erweiterungen.

Sie können die Unterstützung über Feldoptionen hinzufügen.

optional bytes foo = 25 [ctype=CORD];

Option-Aufbewahrung

Optionen haben jetzt einen Begriff von *Retention* (Beibehaltung), der steuert, ob eine Option im generierten Code beibehalten wird. Optionen hatten standardmäßig immer *Runtime-Retention*, was bedeutet, dass sie im generierten Code beibehalten und somit zur Laufzeit im generierten Deskriptorpool sichtbar sind. Sie können jedoch jetzt retention = RETENTION_SOURCE einstellen, um anzugeben, dass eine Option (oder ein Feld innerhalb einer Option) zur Laufzeit nicht beibehalten werden darf. Dies wird als *Source-Retention* bezeichnet.

Die Einstellung der Retention sieht wie folgt aus:

extend google.protobuf.FileOptions {
  optional int32 source_retention_option = 1234
      [retention = RETENTION_SOURCE];
}

Sie kann auch auf einem einfachen Feld gesetzt werden, in diesem Fall tritt sie nur in Kraft, wenn dieses Feld innerhalb einer Option vorkommt.

message OptionsMessage {
  optional int32 source_retention_field = 1 [retention = RETENTION_SOURCE];
}

Weitere Informationen finden Sie unter Option Retention.

Unterstützung für Bazel <5.3 wird eingestellt

Version 23 wird die Unterstützung für Bazel 4 einstellen. Protobuf wird die Bazel 5 LTS weiterhin mit Bazel 5.3 als Mindestanforderung unterstützen. Dies geschieht gemäß der Build-Support-Richtlinie, die in Foundational C++ Support Policy beschrieben ist, und wie in den Versionen in Foundational C++ Support widergespiegelt.