Releases: protocolbuffers/protobuf
Releases · protocolbuffers/protobuf
Protocol Buffers v29.0
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Add missing line to docstring after Args (#19213) (6f310d5)
- Fix proto_info_bzl (#18918) (083de5f)
- Use rules_cc everywhere in protobuf (ddadd0b)
- Upgrade rules_cc to 0.0.13 (3dd4835)
- Convert proto toolchain string to Label (aa181e2)
- Prepare supporting targets for testing (a748b10)
- 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
- Begin adding extension numbers to SourceCodeInfo and FileDescriptorSet for tooling purposes. (07e489d)
- Update protoc release to include editions language features proto for Go (#19013) (63d966b)
- 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
- Remove deprecation warnings for Timestamp and Duration add/subtract/between that we do not yet have alternatives to. (f606c13)
- [29.x] Add missing java load (#19016) (bb287be)
- Give Kotlin jars an OSGi Manifest (#18812) (0c51eba)
- Re-export includingDefaultValueFields in deprecated state for important Cloud customer. (7321b2f)
- Restore compatibility with 3.22 gencode by re-adding mutableCopy helpers (1b1e90b)
- 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. (https://github.com/protocolbuffers/protobuf/com...
Protocol Buffers v29.0-rc3
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
Compiler
- Begin adding extension numbers to SourceCodeInfo and FileDescriptorSet for tooling purposes. (07e489d)
- Update protoc release to include editions language features proto for Go (#19013) (63d966b)
Java
- Remove deprecation warnings for Timestamp and Duration add/subtract/between that we do not yet have alternatives to. (f606c13)
- [29.x] Add missing java load (#19016) (bb287be)
Csharp
- Begin adding extension numbers to SourceCodeInfo and FileDescriptorSet for tooling purposes. (07e489d)
Python
- Fix a python bug when assign an empty Struct at creation. (#18977) (bb0d575)
- Add a deprecation warning to py_proto_library (#19032) (53cde64)
PHP
PHP C-Extension
- Fixed non-conformance in JSON parsing for empty strings in numeric fields. (#19259) (b69ea96)
- See also UPB changes below, which may affect PHP C-Extension.
Ruby
Ruby C-Extension
- Fixed non-conformance in JSON parsing for empty strings in numeric fields. (#19259) (b69ea96)
- See also UPB changes below, which may affect Ruby C-Extension.
UPB (Python/PHP/Ruby C-Extension)
Other
Protocol Buffers v29.0-rc2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Fix proto_info_bzl (#18918) (083de5f)
- Use rules_cc everywhere in protobuf (ddadd0b)
- Upgrade rules_cc to 0.0.13 (3dd4835)
- Convert proto toolchain string to Label (aa181e2)
- Prepare supporting targets for testing (a748b10)
Java
- Give Kotlin jars an OSGi Manifest (#18812) (0c51eba)
- Re-export includingDefaultValueFields in deprecated state for important Cloud customer. (7321b2f)
- Restore compatibility with 3.22 gencode by re-adding mutableCopy helpers (1b1e90b)
Kotlin
Python
- Load Python rules everywhere in protobuf (a18f0de)
UPB (Python/PHP/Ruby C-Extension)
- Load Python rules everywhere in protobuf (a18f0de)
Other
- Upgrade rules_java and remove experimental_google_legacy_api flag (#18889) (f25389b)
- Replace use of C++17 with disabling a warning (111584f)
- Load Shell rules everywhere in protobuf (1822c8a)
- Fix Bazel dependency cycle issue affecting Kythe (#18768) (6df33a4)
- Remove rules_rust dependency (4329b89)
- Remove release branch staleness tests. (3551ee3)
- Remove javaopts requiring java8 in non-release builds. (98beac0)
Protocol Buffers v28.3
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
Java
- Mute the minor version warning #18096 (#18923) (fe30f9a)
- Populate Kotlin Manifest Files (#18859) (d82fb47)
- Re-export includingDefaultValueFields in deprecated state for important Cloud customer. (3b62d78)
- Cherrypick restoration of mutableCopy helpers (3ea568a)
- Fix packed reflection handling bug in edition 2023. (#18405) (c4124f9)
Kotlin
Python
- Mute the minor version warning #18096 (#18923) (fe30f9a)
- Fix packed reflection handling bug in edition 2023. (#18405) (c4124f9)
Other
Protocol Buffers v29.0-rc1
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. (https://github.com/protocolbuffers/protobuf/comm...
Protocol Buffers v28.2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
Java
- Add recursion check when parsing unknown fields in Java. (ac9fb5b)
Protocol Buffers v27.5
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
Java
Other
Protocol Buffers v25.5
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
Java
- Add recursion check when parsing unknown fields in Java. (4728531)
Python
- Fixed a SEGV when deep copying a non-reified sub-message. (94a2663)
Protocol Buffers v28.1
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
- Fix compiler error with
StrongReferenceToType()
(8ea3bb1)
PHP
PHP C-Extension
- Upb: fix uninitialized upb_MessageValue buffer bugs (#18160) (9deedf0)
- See also UPB changes below, which may affect PHP C-Extension.
Ruby
Ruby C-Extension
- Fix a potential Ruby-upb use of uninitialized memory. (70b77de)
- Upb: fix uninitialized upb_MessageValue buffer bugs (#18160) (9deedf0)
- See also UPB changes below, which may affect Ruby C-Extension.
UPB (Python/PHP/Ruby C-Extension)
Protocol Buffers v28.0
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- UPB text encoder without using reflection for Rust (used for a message's Debug trait) that will print out field number to value entries instead of field name to value entries of a message like how it's expected for the usual text format using reflection. (f9dd9ce)
- Enable MessageLite::DebugString to use Message::DebugString where possible. (f810cc5)
- Always report plugin support errors from protoc. (986ef8d)
- Stop supporting EDITION_PROTO2 as an alias for EDITION_LEGACY. (35b3425)
- Rename
DynamicCastToGenerated
/DownCastToGenerated
to (18da465) - Mark deleted fields in descriptor.proto reserved (44c409d)
- Protoc: support inf, -inf, nan, and -nan in option values (#15017) (3c03e93)
C++
- Move -Werror to our test/dev bazelrc files. (#17938) (f5a1b17)
- Introduce FieldDescriptor::cpp_string_type() API to replace direct ctype inspection which will be removed in the next breaking change (72b0b7a)
- Removed specific MSVC settings when installing (#17285) (770090e)
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (79c55cb) - Enable MessageLite::DebugString to use Message::DebugString where possible. (f810cc5)
- Fix a bug in which proto code uses ctype instead of string_type internally. (dfbe987)
- Add an optimization that prevents an exponential number of comparisons on deeply (594a71f)
- Replace FindHelper() with BucketNumber() when only the bucket number is required. (8c7b1ec)
- Stop supporting EDITION_PROTO2 as an alias for EDITION_LEGACY. (35b3425)
- Rename
DynamicCastToGenerated
/DownCastToGenerated
to (18da465) - Prohibit using features in the same file they're defined in. (24b91a7)
- Implement new Debug API with redaction. (bb68eb2)
- Use bool HasHasbits(const FieldDescriptor*) instead of manual checks. (448e326)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (c99cf4b) - Put arena cleanup nodes on a separate chunked list instead of at the ends of arena blocks. (f70d90b)
- Fix validation checks of implicit presence. (d6c2833)
- Clarify map behaviors in editions. (0dbd99a)
- Protoc: support inf, -inf, nan, and -nan in option values (#15017) (3c03e93)
Java
- 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. (6bf01c5)
- Remove unused pom.xml files. (aaf5f79)
- Add overload for LazyStringArrayList.add(String): boolean (761d49a)
- Hoist SmallSortedMap.getNumArrayEntries() outside loops over array entries (229c958)
- Omit the
_raw_default_instance_
declaration when using DLL linkage. (79c55cb) - Java: Deprecate newExtensionWriter. (7122ba1)
- Immutable java: Use new lower-allocation extension serialization APIs from gencode (4151486)
- Reserialize all unresolved features using java features from the generated pool in case of descriptors from the custom pool. (415a147)
- Fix delimited inheritance in all languages. (8beb970)
- Full java runtime: Avoid allocating ArrayList iterators when serializing UnknownFieldSet (fac847c)
- Move back deprecation of java utf8 feature to 2024. (bd7078d)
- Reparse unknown features using extension registry containing Java features. (68d9087)
- Remove field SmallSortedMap.maxArraySize (16e0a63)
- Delete unused method SmallSortedSet.getOverflowEntriesDescending (c05be32)
- Avoid allocating FieldSet iterator if FieldSet is empty (3ba7280)
- Lazily resolve features for proto2 and proto3 for compatibility with old open source gencode that does not invoke feature resolution from gencode static init. (11c27df)
- Implement new Debug API with redaction. (bb68eb2)
- Replace SmallSortedMap.EmptySet with equivalent Collections.emptySet() (c6e2778)
- Add
java
to reserved names to escape extensions tojava_
. This may break existing references to gencode for extensions namedjava
. (c99cf4b) - Avoid allocating TreeMap in UnknownFieldSet.Builder.asMap (4b7c2d4)
- Avoid allocating iterator in TextFormat printing UnknownFieldSet (8c6e5b7)
- Add
null
to the list of reserved words. (510c143) - Add UnknownFieldSet.isEmpty (c56bddd)
- Java full runtime: Avoid allocating when calling asMap on empty UnknownFieldSet (d0b016f)
- Return the default instance when parsing from an empty byte[]. (f597991)
- Deprecate building from source with Maven to be removed in 4.28.x. (4c8da99)
- Java full runtime: Avoid allocating iterator if UnknownFieldSet's TreeMap is empty (4f12891)
- Proto java full runtime: avoid allocating Integers accessing enum lists (cc79f77)
- Split bootstrapped java_features.proto to keep it from leaking out. (2257232)
- Java Proto lite: avoid boxing Integers accessing enum lists (fb054c8)
- In the Kotlin DSL, reference builder methods with property syntax. (e9c9970)
- Java Proto Lite: Serialize repeated enums without allocating (de6aba9)
- Avoid boxing when ser...