Skip to content

Releases: protocolbuffers/protobuf

Protocol Buffers v29.0-rc1

30 Sep 22:55
Compare
Choose a tag to compare
Pre-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 return absl::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() with Character property .code (#18236) (5d9deab)

Objective-C

Read more

Protocol Buffers v28.2

18 Sep 21:10
Compare
Choose a tag to compare

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

C++

  • Fix cord handling in DynamicMessage and oneofs. (#18373) (5b0e543)

Java

  • Add recursion check when parsing unknown fields in Java. (ac9fb5b)

Protocol Buffers v27.5

18 Sep 22:38
Compare
Choose a tag to compare

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

C++

  • Fix cord handling in DynamicMessage and oneofs. (#18374) (6fa3f2d)

Java

  • Add recursion check when parsing unknown fields in Java. (#18388)
    (8bfa80b)

Other

Protocol Buffers v25.5

18 Sep 22:07
Compare
Choose a tag to compare

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

C++

  • Fix cord handling in DynamicMessage and oneofs. (#18375) (e673479)

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

11 Sep 17:21
Compare
Choose a tag to compare

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)

  • Fix a potential Ruby-upb use of uninitialized memory. (70b77de)
  • Upb: fix uninitialized upb_MessageValue buffer bugs (#18160) (9deedf0)

Protocol Buffers v28.0

28 Aug 19:53
Compare
Choose a tag to compare

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 to java_. This may break existing references to gencode for extensions named java. (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 to java_. This may break existing references to gencode for extensions named java. (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...
Read more

Protocol Buffers v27.4

27 Aug 20:57
Compare
Choose a tag to compare

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

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. (8dd83da)

Protocol Buffers v28.0-rc3

22 Aug 18:05
Compare
Choose a tag to compare
Pre-release

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

C++

  • Introduce FieldDescriptor::cpp_string_type() API to replace direct ctype inspection which will be removed in the next breaking change (72b0b7a)

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)

Objective-C

  • [ObjC] Add api to add a field to another collection of unknown fields. (0790ab4)
  • [ObjC] Fix GPBUnknownField/GPBUnknownFields copy. (b3b9888)
  • [ObjC] Raise an exception for a nil message. (35bd2be)
  • [ObjC] Deprecate GPBUnknownFieldSet and related apis. (9f6ee72)
  • [ObjC] More tests around unknown to known failure cases. (e822dce)

Rust

  • Add visibility for rust public aliases for '@protobuf//:protobuf_rust' (2cee142)

Python

  • Raise warnings for deprecated python cpp extension GetDebugString(). (5fc5558)

Other

  • Remove protobuf rust from BCR presubmits for now. (92552d3)

Protocol Buffers v28.0-rc2

08 Aug 20:17
Compare
Choose a tag to compare
Pre-release

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

Java

  • Remove unused pom.xml files. (aaf5f79)

Kotlin

  • Remove unused pom.xml files. (aaf5f79)

Objective-C

  • [ObjC] Support errors when merging unknown fields to a message. (c46340e)
  • [ObjC] Add apis for removing things from GPBUnknownFields. (c5c9c89)
  • [ObjC] Collect unknown fields as data (a6b3535)
  • [ObjC] Internal helper for getting the unknown field data from a message (bf2d4e7)
  • [ObjC] Update tests to use both unknown fields apis. (0832b52)
  • [ObjC] Deprecate GPBTextFormatForUnknownFieldSet(). (d1b6f8c)
  • [ObjC] Parsing helper and tests around unknown fields. (9b16ee4)
  • [ObjC] Add test around enum unknown values. (fad7b78)
  • [ObjC] Expose a helper for stream error. (cf7abf6)
  • [ObjC] Support MessageSet with GPBUnknownFields. (ddf9b76)
  • [ObjC] Update MessageSet Parsing. (5fa8cd9)
  • [ObjC] Validate MessageSet expectations. (3aa491c)
  • [ObjC] Improve parsing validations (ef4898f)

Python

  • Remove service.py usages in builder (902a68a)
  • Raise warnings for deprecated google/protobuf/reflection.py APIs. (38140ac)

Ruby

  • [Ruby] Warn if assigning a "UTF-8" string with invalid UTF-8. (#17253) (fe9a53c)

Ruby C-Extension

  • [Ruby] Warn if assigning a "UTF-8" string with invalid UTF-8. (#17253) (fe9a53c)

Other

  • Set -ex in test_java.yml (6a7e215)
  • Refactor java maven GHA test to use our generated jars. (671ef8b)
  • Remove /utf-8 flag added in #14197 (440dc83)
  • Downgrade CMake to 3.29 to workaround Abseil issue. (cd75dd5)

Protocol Buffers v27.3

31 Jul 16:09
Compare
Choose a tag to compare

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

Compiler

  • Revert workaround for std::mutex issues on github windows runners. (ba3e7d7)

C++

  • Update staleness (b7ef2ca)
  • Omit the _raw_default_instance_ declaration when using DLL linkage. (22d9a03)
  • Refactor the way we turn on the optimization in StrongPointer. (a15c9c5)

Java

  • Omit the _raw_default_instance_ declaration when using DLL linkage. (22d9a03)

PHP

PHP C-Extension

  • Fix segmentation faults with enabled keep_descriptor_pool_after_request (#16993) (ca3b732)

Ruby

Ruby C-Extension

Other

  • Remove /utf-8 flag added in #14197 (e20cb7a)
  • Downgrade CMake to 3.29 to workaround Abseil issue. (8a579c1)
  • Upgrade macos-11 tests to macos-12 (aec8a76)
  • Use explicit names of our large runners (4e3b4f0)
  • Upgrade our C++ release tests to large runners. (fa2b2d6)