Skip to content

Protocol Buffers v23.0-rc1 (Incomplete)

Pre-release
Pre-release
Compare
Choose a tag to compare
@deannagarcia deannagarcia released this 26 Apr 23:16
· 8190 commits to main since this release

Announcements

  • This RC was abandoned before artifact publishing due to unintended breaking changes:
    • [Cpp] lock down visibility for FileDescriptor syntax APIs. (8b1be51)
    • [Java] Lock down visibility for FileDescriptor.getSyntax(). (8c8b2be)
    • [Ruby] Lock down visibility for FileDescriptor.getSyntax(). (8c8b2be)
  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

Compiler

  • Implement a retain_options flag in protoc. (83507c7)
  • Make protoc --descriptor_set_out respect option retention (ae2531d)
  • Modify release artifacts for protoc to statically link system libraries. (723bd4c)
  • Extension declaration: Enforce that if the extension range has a declaration then all extensions in that range must be declared. This should prevent non-declared extensions from being added. (5dc171f)
  • Implement "reserved" for extension declaration. (41287bd)
  • Open-source extension declaration definition. (145900f)

C++

  • Breaking change: lock down visibility for FileDescriptor syntax APIs. (8b1be51)
  • Remove PROTOBUF_DEPRECATED in favor of [[deprecated]]. (5c59290)
  • Add assert to the list of keywords for C++. (a75c1a2)
  • Added Reflection::GetCord() method in C++ (6ecb5d0)
  • Support C++ protobuf ctype=CORD for bytes field (generated code). (714f975)
  • Expand LazySerializerEmitter to cover proto3 cases. (fab7f92)
  • Unconditionally generate unknown field accessors. (dd8a3cf)
  • Introduce proto filter for inject_field_listener_events. (2dc5338)
  • Add ParseFromCord to TextFormat (055a6c6)
  • Mark proto2::Arena::GetArena as deprecated. (9f95958)

Java

  • Adds Timestamps.now(). (295f112)
  • Breaking change: Lock down visibility for FileDescriptor.getSyntax(). (8c8b2be)
  • Added Reflection::GetCord() method in C++ (6ecb5d0)
  • Re-attach OSGI headers to lite,core, and util. This information was dropped in the move from maven to bazel. (4b5652b)
  • Add Java FileDescriptor.copyHeadingTo() which copies file-level settings (e.g. syntax, package, file options) to FileDescriptorProto.Builder (6e6d0bc)
  • Remove unnecessary has bits from proto2 Java. (c440da9)
  • Add casts to make protobuf compatible with Java 1.8 runtime. (d40aadf)
  • Fix mutability bug in Java proto lite: sub-messages inside of oneofs were not (fa82155)
  • Document known quirks of EnumDescriptor::is_closed() when importing across files with different syntaxes. (1de344f)

Kotlin

  • Remove errorprone dependency from kotlin protos. (7b6e828)

Csharp

  • Make json_name take priority over name (fully) in C# parsing (#12262) (4326e0f)
  • Add C# presence methods to proto3 oneof fields. (affadac)

Objective-C

  • Enforce the max message size when serializing to binary form. (e6d01b2)
  • mark mergeFromData:extensionRegistry: as deprecated. (e3b0051)

Python

  • Make numpy/pip_deps a test-only dependency. (fe038fc)
  • Mark sequence containers as Py_TPFLAGS_SEQUENCE, enabling pattern matching (a05c57d)
  • Fix Python bug with required fields (579f4ab)
  • Mark deprecated SupportsUnknownEnumValues on Message reflection. Use FieldDescriptor or EnumDescriptor instead. (0b9134b)
  • Raise warnings for MessageFactory class usages (dd9dd86)
  • Add Python support for retention attribute (63389c0)
  • Document known quirks of EnumDescriptor::is_closed() when importing across files with different syntaxes. (1de344f)

Python C-Extension (Default)

  • Fix Python bug with required fields (protocolbuffers/upb@ea4cb79)
  • See also UPB changes below, which may affect Python C-Extension (Default).

PHP

PHP C-Extension

  • RepeatedField: unset by index (#11425) (363fa89)
  • See also UPB changes below, which may affect PHP C-Extension.

Ruby

  • Change the Ruby code generator to emit a serialized proto instead of the DSL (#12319) (bd52d04)
  • Breaking change: Lock down visibility for FileDescriptor.getSyntax(). (8c8b2be)
  • Feat(6178): emit ruby enum as integer (#11673) (8aa2b17)

Ruby C-Extension

  • Feat(6178): emit ruby enum as integer (#11673) (8aa2b17)
  • Ruby: Implement Write Barriers (#11793) (d82d8a4)
  • See also UPB changes below, which may affect Ruby C-Extension.

UPB (Python/PHP/Ruby C-Extension)

Other

  • Fix btree issue in map tests. (9898418)
  • Fix declared dependencies for pkg-config (#12518) (f79e35c)
  • Fix build for newlib (#12501) (945bf3c)
  • Update usage disclaimer on FieldOptions.ctype (b8e7192)
  • Add config option to print 64-bit integers in JSON as unquoted ints if they can be losslessly converted into a 64-bit float. (330e10d)
  • Version protoc according to the compiler version number. (e67136d)
  • Fix shared object ABI exports (#5144) (#11032) (462964e)
  • Ensure VarintParseSlowArm{32,64} are exported with PROTOBUF_EXPORT (2ce5639)
  • Update the min required CMake version to 3.10 (bcb20bb)