Protocol Buffers v29.0-rc1
Pre-release
Pre-release
mkruskal-google
released this
30 Sep 22:55
·
1019 commits
to main
since this release
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Support --incompatible_enable_proto_toolchain_resolution (372ddb3)
- Move ProtoInfo and ProtoLangToolchainInfo from Bazel (426ca8a)
- Move java_{lite_}proto_library from Bazel repository (d77bdac)
- Move proto_toolchain from rules_proto to protobuf (9f9cb7a)
- Move proto_library from Bazel repository (3ff2cf0)
- Move proto_common implementation from Bazel binary (b19fbe6)
Compiler
- Introduce lifetimes for individual feature values. (0b6e768)
- Windows - Fix handling of utf8 command line arguments (#17854) (b9d1800)
- Limit feature deprecation warnings to reduce noise. (5cd9a46)
C++
- Fix C++ ifndef_guard printer to also convert "-" to "_". (7331b77)
- Fix C++ codegen namespace printer to print closing namespaces in reverse order. (3bf9c40)
- Fix raw_ptr.cc on exotic architectures (#18193) (63f6262)
- Fix cord handling in DynamicMessage and oneofs. (9e8b30c)
- Fix packed reflection handling bug in edition 2023. (4c92328)
- Add JsonStreamToMessage method (0259cc3)
- Introduce lifetimes for individual feature values. (0b6e768)
- Insert software prefetches into merge functions. This improves performance when hardware prefetchers are disabled on AMD machines. (d993365)
- Insert software prefetches into proto parsing functions. This improves performance when hardware prefetchers are disabled on AMD platforms. (8aa0add)
- Add prefetching of subsequent extensions in ExtensionSet::ForEach. (9b019ee)
- Remove the AnyMetadata class and use free functions instead. (920d5c3)
- Add
[[deprecated]]
attribute when generating enums and classes. (23aada2) - Use linear search instead of binary search in flat mode of ExtensionSet. (0ed61f0)
- Prepare
MessageLite::GetTypeName
to be upgraded to return (30a8ef5) - Limit feature deprecation warnings to reduce noise. (5cd9a46)
- Add Compiler Condition to use inline assembly optimizations with ARM64 for Compatibility with MSVC (#17671) (c5f6231)
- Enable small object optimization (SOO) for RepeatedField in order to reduce data indirections. (e2525e6)
- Return backing array memory to arena in ExtensionSet. (5ac8ee1)
- In edition 2024,
Enum_Name(value)
functions returnabsl::string_view
by default. (e3fa6aa) - Add Prefetchers to Proto Copy Construct to help address load misses (cdb7238)
- Reduced nesting in GenerateByteSize: slight readability improvements in generated code. (162a740)
- Introduce FieldDescriptor::cpp_string_type() API to replace direct ctype inspection which will be removed in the next breaking change (d0e49df)
- Update the comment of TextFormat::Printer::RegisterMessagePrinter that the method takes ownerhip of the
printer
pointer. (d911161) - Prepare the code for migrating return types from
const std::string&
to (e13b8e9)
Java
- Speed up CodedOutputStream by extracting rarely-executed string formatting code (f8f5136)
- Return constant Value objects for true, false, and "" (4fbb0c5)
- Optimise CodedOutputStream.ArrayEncoder.writeFixed32NoTag/writeFixed64NoTag (a51f98c)
- CodedOutputStream: avoid updating position to go beyond end of array. (76ab5f2)
- Convert IndexOutOfBoundsException to OutOfSpaceException in UnsafeDirectNioEncoder (0e75d92)
- Suppress ReturnValueIgnored errorprone issues (bbbc7b9)
- Fix packed reflection handling bug in edition 2023. (4c92328)
- Move cc_proto_library from Bazel repository (5254448)
- Protobuf Lite ArrayLists: Defer allocating backing array until we have some idea how much to allocate. (05a8a40)
- Allocate correct-sized array when parsing packed fixed-width primitives (4e8469c)
- Bugfix: Make extensions beyond n=16 immutable. (ee419f2)
- Reserve capacity in ProtobufArrayList when calling Builder.addAllRepeatedMessage(Collection) (e3cc31a)
- Avoid allocating iterators when calling Message.Builder.addAllFoo(RandomAccess List) (bd1887e)
- Remove the AnyMetadata class and use free functions instead. (920d5c3)
- Add
[[deprecated]]
attribute when generating enums and classes. (23aada2) - Binary compatibility shims for GeneratedMessageV3, SingleFieldBuilderV3, RepeatedFieldBuilderV3, and their nested classes to restore binary compatibility with <=v3.x.x generated code built against v3.x.x prior to v4.26.0 breaking release. (df8a11e)
- Implement a mechanism to control the output format of Message.toString within a Runnable instance. (737803e)
- Fix
TextFormat.Parser
to appropriately handle unknown values for open enums (df1aad4) - Inline ArrayList's array into SmallSortedMap (910f627)
- Deprecated unused/obsolete mutable APIs, to be removed in next breaking change. (e889b0b)
Kotlin
- Support building //java with bzlmod (507ba36)
- Replace deprecated use of
toBytes()
withCharacter
property.code
(#18236) (5d9deab)
Objective-C
- [ObjC] Make debug runtime tell developers to update their generated code. (cdd3cf7)
- [ObjC] Issue stderr warnings for deprecated generation options. (e9140a1)
- [ObjC] Deprecate GPBUnknownFieldSet and related apis. (d794139)
- [ObjC] Deprecate GPBTextFormatForUnknownFieldSet(). (55e997e)
Python
- Fix cord handling in DynamicMessage and oneofs. (9e8b30c)
- Fix packed reflection handling bug in edition 2023. (4c92328)
- Fix ContainerBase::DeepCopy to not modify the source object. (9fa1f4f)
- Introduce lifetimes for individual feature values. (0b6e768)
- Nextgen Proto Pythonic API: Add any.py (dd95e5b)
- Add test that tries to parse a JSON string that exceeds the recursion limit. (5a22455)
- Raise warnings for deprecated python cpp extension GetDebugString(). (b70c4b0)
- Nextgen Proto Pythonic API: Add duration.py (903c3f1)
- Nextgen Proto Pythonic API: Add timestamp.py (ee26f27)
- -Remove service.py usages in builder (2967c52)
- Raise warnings for deprecated google/protobuf/reflection.py APIs. (55705f8)
PHP
Ruby
- Remove codes for unsupported Ruby (#17353) (184f3a3)
- [Ruby] Warn if assigning a "UTF-8" string with invalid UTF-8. (#17253) (b07e4b1)
Ruby C-Extension
- Fix a potential Ruby-upb use of uninitialized memory. (4d75c82)
- [Ruby] Warn if assigning a "UTF-8" string with invalid UTF-8. (#17253) (b07e4b1)
- See also UPB changes below, which may affect Ruby C-Extension.
UPB (Python/PHP/Ruby C-Extension)
- Fix a potential Ruby-upb use of uninitialized memory. (4d75c82)
- Fixed
NAN
/INFINITY
definitions to work on Windows 11 SDK. (0309d86)