Protocol Buffers v23.0-rc1 (Incomplete)
Pre-release
Pre-release
Announcements
- This RC was abandoned before artifact publishing due to unintended breaking changes:
- 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)
- Implements upb_Message_DeepClone. (protocolbuffers/upb@3286f94)
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)