Skip to content

Releases: protocolbuffers/protobuf

Protocol Buffers v26.0-rc1

25 Jan 18:55
Compare
Choose a tag to compare
Pre-release

Announcements

  • This version includes breaking changes to: C++, Java, PHP, Python, Ruby.
    • [C++] Make protobuf comply with the C++ layering check (a7b0421)
    • [C++] Remove const GetArena method on RepeatedPtrField (748ab16)
    • [C++] Disallow incorrect ctype usage (755b690)
    • [C++] Remove deprecated std::string error collector overrides (543fbcd)
    • [C++] Promote ExtensionRange to a proper class (5b12bc8)
    • [C++] Remove deprecated clear APIs on repeated fields (229906f)
    • [C++] Remove C++ legacy syntax descriptor APIs (cf2d696)
    • [C++] Remove deprecated syntax APIs (715b543)
    • [C++] Remove deprecated SupportsUnknownEnumValues method (0a6a516)
    • [Java] Remove unused helper methods for creating new mutable arraylists. (7874474)
    • [Java] Use Editions features in Java full runtimes. (65c65c2)
    • [Java] Stop generating the "newInstance" method. This is not used anymore. (c0d08bd)
    • [Java] Remove unused overload of AbstractMessageLite.addAll that worked on a Collection instead of a List. (3b9bd6d)
    • [Java] Remove obsolete runtime internalBuildGeneratedFileFrom which was for backwards compatibility with old gencode. (9310d2e)
    • [Java] Remove unnecessary overloads of methods: (94a2a44)
    • [Java] Remove unnecessary generated overrides for GeneratedMessage.Builder methods: (7bff169)
    • [Java] The base class for generated messages will be GeneratedMessage, not GeneratedMessageV3.
      (5df0387)
    • [Java] Remove deprecated runtime methods for compatibility with old v2.x.x gencode. (e555bd2)
    • [Java] Remove deprecated TextFormat print methods. These should be replaced by corresponding TextFormat.printer() methods. (dfb8a4c)
    • [Java] Lock down visibility for descriptor syntax APIs. (1aeacd4)
    • [Java] Make deprecated Java gencode PARSER variable private. (b4858b2)
    • [PHP] Validate UTF-8 in string setters, as previously announced. (d14dbbc)
    • [PHP] Remove support for PHP generic services (40ad3fa)
    • [Python] Made text_format output default to UTF-8. (bf00034)
    • [Python] Remove deprecated syntax accessor. (fd40c87)
    • [Python] Remove RegisterExtension in message class (4ebba68)
    • [Python] Reject extend repeated field with none iterable (Raise TypeError) (1658213)
    • [Python] Remove Deprecated APIs that add non top descriptor. (c51f111)
    • [Python] check if Timestamp is valid. (4f77929)
    • [Python] Remove msg.UnknownFields() support in pure python and cpp extension. (0eac77c)
    • [Ruby] Removed syntax and added has_presence?/is_packed?. (dbd4dce)
    • [Ruby] Fixed json_encode/json_decode to use the message's pool. (a8b8ea0)
    • [Ruby] Freeze is now recursive, affecting all sub-messages, maps, and repeated fields. (31313b1)
    • [Ruby] Fixed inconsistencies in Message#to_h, as previously announced. (fd69938)
    • [Ruby] Dropped support for Ruby DSL, as previously announced. (5cfc9e7)
    • [Ruby] Lock down visibility for descriptor syntax APIs. (1aeacd4)
    • [Ruby] Fixed json_encode/json_decode to use the message's pool. (a8b8ea0)
  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

Compiler

C++

  • Correct type_resolver_util to set syntax=proto3 instead of syntax=proto2 on proto3 files. (040dde7)
  • Remove edition getter from C++ descriptor APIs (93b219f)
  • Breaking change: Remove const GetArena method on RepeatedPtrField (748ab16)
  • Breaking change: Disallow incorrect ctype usage (755b690)
  • Breaking change: Remove deprecated std::string error collector overrides (543fbcd)
  • Breaking change: Promote ExtensionRange to a proper class (5b12bc8)
  • Breaking change: Remove deprecated clear APIs on repeated fields (229906f)
  • Breaking change: Remove C++ legacy syntax descriptor APIs (cf2d696)
  • Fixed UTF-8 TextFormat output to protect against invalid UTF-8 in string fields. (1ac8c04)
  • Breaking change: Remove deprecated syntax APIs (715b543)
  • Fix DurationToMilliseconds mult overflow (17b8dd6)
  • Breaking change: Remove deprecated SupportsUnknownEnumValues method (0a6a516)
  • Have Arena::Create support arena constructible types (578e07e)
  • Enforce stricter version checks for Protobuf C++ by removing the notion of "minimal version of protoc/headers"; exact version match is required. (6eed7a2)
  • Compare explicit zeroes from prototext in partially. (8c24163)
  • Move the declarations in SerialArena to more closely match the style guide. (349122f)

Java

  • Drop Protobuf support for Android KitKat per EOL and add existing minimum Java 1.8 in Maven pom.xmls (303239d)
  • Breaking change: Remove unused helper met...
Read more

Protocol Buffers v25.2

09 Jan 23:52
Compare
Choose a tag to compare

Announcements

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

C++

  • Only substitute prefixes during installation setup. (05ad652)
  • Register a shutdown delete for C++ feature defaults (3d5c709)

Protocol Buffers v25.1

15 Nov 22:34
Compare
Choose a tag to compare

Announcements

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

Python

  • Raise warnings for deprecated python syntax usages (74f5cf4)

Ruby

Protocol Buffers v25.0

01 Nov 22:50
Compare
Choose a tag to compare

Announcements

  • This release fixes CVE-2024-2410 (note: there may be a delay in the publication of this CVE number), a minor vulnerability in the C++ JSON parser. In certain situations, a malicious JSON input could cause the parser to copy data that has already been freed into an error message. This can only happen if the code is parsing from a stream with separate chunks rather than a contiguous array. The bug was introduced in 4.22.0 and was fixed with b955165 in 4.25.0 and up.
  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

Compiler

  • Implement proto2/proto3 with editions (3813b66)
  • Defines Protobuf compiler version strings as macros and separates out suffix string definition. (3c59585)
  • Add utf8_validation feature back to the global feature set. (153028d)
  • Setting up version updater to prepare for poison pills and embedding version info into C++, Python and Java gencode. (4322e00)
  • Merge the protobuf and upb Bazel repos (7286ffc)
  • Editions: Introduce functionality to protoc for generating edition feature set defaults. (4019e25)
  • Editions: Migrate edition strings to enum in C++ code. (f083ebf)
  • Create a reflection helper for ExtensionIdentifier. (4d5ab73)
  • Editions: Provide an API for C++ generators to specify their features. (e897bcf)
  • Editions: Refactor feature resolution to use an intermediate message. (57d8049)
  • Publish extension declarations with declaration verifications. (e72b0e1)
  • Editions: Stop propagating partially resolved feature sets to plugins. (b66ef4c)
  • Editions: Migrate string_field_validation to a C++ feature (1f95830)
  • Editions: Include defaults for any features in the generated pool. (15863ff)
  • Protoc: parser rejects explicit use of map_entry option (#13479) (8f59292)
  • Protoc: validate that reserved range start is before end (#13474) (3be00f7)
  • Protoc: support identifiers as reserved names in addition to string literals (only in editions) (#13471) (e701f4f)
  • Drop support for Bazel 5. (a80daa2)
  • Allow code generators to specify whether or not they support editions. (2176a14)

C++

  • Set PROTOBUF_EXPORT on InternalOutOfLineDeleteMessageLite() (#14434) (db89a51)
  • Update stale checked-in files (#14431) (ada0be8)
  • Apply PROTOBUF_NOINLINE to declarations of some functions that want it. (6e848b0)
  • Implement proto2/proto3 with editions (3813b66)
  • Make JSON UTF-8 boundary check inclusive of the largest possible UTF-8 character. (e80b8ec)
  • Reduce Map::size_type to 32-bits. Protobuf containers can't have more than (95d2b2e)
  • Defines Protobuf compiler version strings as macros and separates out suffix string definition. (3c59585)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated oneof accessors. (e33e0d2)
  • Fix bug in reflection based Swap of map fields. (bef5b75)
  • Add utf8_validation feature back to the global feature set. (153028d)
  • Setting up version updater to prepare for poison pills and embedding version info into C++, Python and Java gencode. (4322e00)
  • Add prefetching to arena allocations. (fbdeb5a)
  • Merge the protobuf and upb Bazel repos (7286ffc)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated repeated and map field accessors. (9a0a3cf)
  • Editions: Migrate edition strings to enum in C++ code. (f083ebf)
  • Workaround ICE on gcc 7.5 by not having one overload call the other one with a (0522054)
  • Create a reflection helper for ExtensionIdentifier. (4d5ab73)
  • Editions: Provide an API for C++ generators to specify their features. (e897bcf)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated string field accessors. (18c338a)
  • Editions: Refactor feature resolution to use an intermediate message. (57d8049)
  • Fixes for 32-bit MSVC. (66cf6b1)
  • Publish extension declarations with declaration verifications. (e72b0e1)
  • Export the constants in protobuf's any.h to support DLL builds. (fd24b1b)
  • Implement AbslStringify for the Descriptor family of types. (230232a)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated message field accessors. (064035c)
  • Editions: Stop propagating partially resolved feature sets to plugins. (b66ef4c)
  • Editions: Migrate string_field_validation to a C++ feature (1f95830)
  • Editions: Include defaults for any features in the generated pool. (15863ff)
  • Introduce C++ feature for UTF8 validation. (c7119e6)
  • Protoc: validate that reserved range start is before end (#13474) (3be00f7)
  • Remove option to disable the table-driven parser in protoc. (6d03f9b)
  • Lock down ctype=CORD in proto file. (b359e50)
  • Support split repeated fields. (5b5e5bf)
  • In OSS mode omit some extern template specializations. We have seen reports of (ab96824)
  • Automated rollback of commit adb2c4b. (0ea0052)
  • Allow code generators to specify whether or not they support editions. (2176a14)
  • Handle conflicting macros for FreeBSD (#13303) (2a95295)

Java

Read more

Protocol Buffers v25.0-rc2

18 Oct 19:13
Compare
Choose a tag to compare
Pre-release

Announcements

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

C++

PHP

PHP C-Extension

  • Bump minimum PHP to 8.0 (b4abcef)

Protocol Buffers v25.0-rc1

16 Oct 21:40
Compare
Choose a tag to compare
Pre-release

Announcements

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

Compiler

  • Implement proto2/proto3 with editions (3813b66)
  • Defines Protobuf compiler version strings as macros and separates out suffix string definition. (3c59585)
  • Add utf8_validation feature back to the global feature set. (153028d)
  • Setting up version updater to prepare for poison pills and embedding version info into C++, Python and Java gencode. (4322e00)
  • Merge the protobuf and upb Bazel repos (7286ffc)
  • Editions: Introduce functionality to protoc for generating edition feature set defaults. (4019e25)
  • Editions: Migrate edition strings to enum in C++ code. (f083ebf)
  • Create a reflection helper for ExtensionIdentifier. (4d5ab73)
  • Editions: Provide an API for C++ generators to specify their features. (e897bcf)
  • Editions: Refactor feature resolution to use an intermediate message. (57d8049)
  • Publish extension declarations with declaration verifications. (e72b0e1)
  • Editions: Stop propagating partially resolved feature sets to plugins. (b66ef4c)
  • Editions: Migrate string_field_validation to a C++ feature (1f95830)
  • Editions: Include defaults for any features in the generated pool. (15863ff)
  • Protoc: parser rejects explicit use of map_entry option (#13479) (8f59292)
  • Protoc: validate that reserved range start is before end (#13474) (3be00f7)
  • Protoc: support identifiers as reserved names in addition to string literals (only in editions) (#13471) (e701f4f)
  • Drop support for Bazel 5. (a80daa2)
  • Allow code generators to specify whether or not they support editions. (2176a14)

C++

  • Apply PROTOBUF_NOINLINE to declarations of some functions that want it. (6e848b0)
  • Implement proto2/proto3 with editions (3813b66)
  • Make JSON UTF-8 boundary check inclusive of the largest possible UTF-8 character. (e80b8ec)
  • Reduce Map::size_type to 32-bits. Protobuf containers can't have more than (95d2b2e)
  • Defines Protobuf compiler version strings as macros and separates out suffix string definition. (3c59585)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated oneof accessors. (e33e0d2)
  • Fix bug in reflection based Swap of map fields. (bef5b75)
  • Add utf8_validation feature back to the global feature set. (153028d)
  • Setting up version updater to prepare for poison pills and embedding version info into C++, Python and Java gencode. (4322e00)
  • Add prefetching to arena allocations. (fbdeb5a)
  • Merge the protobuf and upb Bazel repos (7286ffc)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated repeated and map field accessors. (9a0a3cf)
  • Editions: Migrate edition strings to enum in C++ code. (f083ebf)
  • Workaround ICE on gcc 7.5 by not having one overload call the other one with a (0522054)
  • Create a reflection helper for ExtensionIdentifier. (4d5ab73)
  • Editions: Provide an API for C++ generators to specify their features. (e897bcf)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated string field accessors. (18c338a)
  • Editions: Refactor feature resolution to use an intermediate message. (57d8049)
  • Fixes for 32-bit MSVC. (66cf6b1)
  • Publish extension declarations with declaration verifications. (e72b0e1)
  • Export the constants in protobuf's any.h to support DLL builds. (fd24b1b)
  • Implement AbslStringify for the Descriptor family of types. (230232a)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated message field accessors. (064035c)
  • Editions: Stop propagating partially resolved feature sets to plugins. (b66ef4c)
  • Editions: Migrate string_field_validation to a C++ feature (1f95830)
  • Editions: Include defaults for any features in the generated pool. (15863ff)
  • Introduce C++ feature for UTF8 validation. (c7119e6)
  • Protoc: validate that reserved range start is before end (#13474) (3be00f7)
  • Remove option to disable the table-driven parser in protoc. (6d03f9b)
  • Lock down ctype=CORD in proto file. (b359e50)
  • Support split repeated fields. (5b5e5bf)
  • In OSS mode omit some extern template specializations. We have seen reports of (ab96824)
  • Automated rollback of commit adb2c4b. (0ea0052)
  • Allow code generators to specify whether or not they support editions. (2176a14)
  • Handle conflicting macros for FreeBSD (#13303) (2a95295)

Java

  • Implement proto2/proto3 with editions (3813b66)
  • Remove synthetic oneofs from Java gencode field accessor tables. (9ad2268)
  • Timestamps.parse: Add error handling for invalid hours/minutes in the timezone offset. (8f85138)
  • Defines Protobuf compiler version strings as macros and separates out suffix string definition. (3c59585)
  • Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on generated oneof accessors. (e33e0d2)
  • Automated rollback of commit 2a55706. (30b6251)
  • Add missing debugging version info to Protob...
Read more

Protocol Buffers v24.4

04 Oct 16:55
Compare
Choose a tag to compare

Announcements

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

C++

  • Add dependency on absl::layout, and explicitly include absl layout includes (#14042) (96c1a7d)
  • Include Abseil's str_cat.h for absl::AlphaNum (#14054) (955d371)

Java

  • Rolled back breaking change to gencode before 3.15 (#14246) (b9cf19b)

Python

  • Fix python code generation compatibility with Cython (#14240) (fe87c90)

Protocol Buffers v24.3

07 Sep 18:26
Compare
Choose a tag to compare

Announcements

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

C++

  • Workaround ICE on gcc 7.5 by not having one overload call the other one with a (#13808) (398a84c)

Python

Python C-Extension (Default)

UPB (Python/PHP/Ruby C-Extension)

Protocol Buffers v24.2

25 Aug 21:24
Compare
Choose a tag to compare

C++

Protocol Buffers v24.1

18 Aug 19:55
Compare
Choose a tag to compare

Announcements

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

Python

Python C-Extension (Default)

Ruby

Ruby C-Extension