Releases: protocolbuffers/protobuf
Releases · protocolbuffers/protobuf
Protocol Buffers v26.1
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
- Expand cpp_features_proto_srcs visibility (2d3d8ba)
- Move java_features.proto to java/core/srce/main/resources (22f1170)
Java
- Fix validateFeatures to be called after resolved features are actually set to this.features (9bf69ec)
- Move java_features.proto to java/core/srce/main/resources (22f1170)
- Set label to REQUIRED for descriptors with LEGACY_REQUIRED feature. (4886a9c)
- Add java_features.proto to kotlin_mvn release (0e4abf9)
Kotlin
- Add java_features.proto to kotlin_mvn release (0e4abf9)
Ruby
Other
Protocol Buffers v26.0
Announcements
- This version includes breaking changes to: Java, PHP, C++, Ruby, Python.
- [Java] Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- [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.
- [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 deprecated legacy class aliases. (#15709) (096e127)
- [PHP] Remove support for PHP generic services (40ad3fa)
- [C++] Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- [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)
- [Ruby] Removed
syntax
and addedhas_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)
- [Python] Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- [Python] Removed obsolete/duplicate
setup.py
from Python. (#15708) (5722aef) - [Python] Made text_format output default to UTF-8. (bf00034)
- [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)
- [Python] Remove deprecated syntax accessor. (fd40c87)
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
- Add <shellapi.h> include for CommandLineToArgvW (2299e1d)
- Fix getting env variables on windows (#15518) (71b0b4e)
- Proper fix utf8 command line arguments (#14253) (1eff9d7)
- Allocate an editions FeatureSet extension for https://github.com/bufbuild/protobuf-es (fedd34d)
- Make rules_ruby a dev-only dependency. (571b727)
C++
- Remove rust proto libraries from the editions/BUILD file. (1f9d9fb)
- Fix CMake regex escaping. (3ad69cf)
- Escape _from_dir in install.cmake for regex special characters (e.g. c++) before REGEX REPLACE. (f740f52)
- Tweak BUILD setup to make the layering check change less disruptive (#15838) (52aa150)
- Add missing alias targets for C++ util libraries (#15783) (62e7a56)
- Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (fc41e78)
- Add new 'always_print_without_presence_fields' option to the C++ JSON serializer. (1f3bf1d)
- Remove use of mach_absolute_time (#15554) (#15662) (8b0f6fd)
- Check ctype() in DescriptorBuilder for edition 2023 and beyond. (0090f19)
- Fail building descriptors if
ctype
is used for fields other than string or bytes. (624d65d) - [CPP] Add the privacy manifest to the C++ CocoaPod. (#15664) (e7888a1)
- Correct type_resolver_util to set syntax=proto3 instead of syntax=pro...
Protocol Buffers v26.0-rc3
Announcements
- This version includes breaking changes to Ruby.
- Moved ObjectCache into an internal module. (9087337)
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
- Remove rust proto libraries from the editions/BUILD file. (1f9d9fb)
- Fix CMake regex escaping. (3ad69cf)
- Escape _from_dir in install.cmake for regex special characters (e.g. c++) before REGEX REPLACE. (f740f52)
- Tweak BUILD setup to make the layering check change less disruptive (#15838) (52aa150)
- Add missing alias targets for C++ util libraries (#15783) (62e7a56)
Rust
PHP
PHP C-Extension
- Updated amalgamations for PHP and Ruby. (c773dc9)
- See also UPB changes below, which may affect PHP C-Extension.
Ruby
- Ruby implement memsize functions for native types (#10291) (4902fc0)
- Moved ObjectCache into an internal module. (9087337)
Ruby C-Extension
- Updated amalgamations for PHP and Ruby. (c773dc9)
- Ruby implement memsize functions for native types (#10291) (4902fc0)
- Moved ObjectCache into an internal module. (9087337)
- See also UPB changes below, which may affect Ruby C-Extension.
UPB (Python/PHP/Ruby C-Extension)
Other
- Disabled macOS 8.2, to match main. (9dfa2b6)
Protocol Buffers v25.3
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Apple Privacy Manifest Requirement
- [CPP] Add the privacy manifest to the C++ CocoaPod. (9d1bc10)
- [ObjC] Add the privacy manifest to the ObjC CocoaPod. (cec08dc)
- Add PrivacyInfo.xcprivacy (#15557) (cf87faa)
C++
Objective-C
- [ObjC] Use a local to avoid warnings in 32bit builds. (9dc736d)
Python
- Bump python version to 3.9 for gcloud 460.0.0 (17ec19d)
Ruby
Protocol Buffers v26.0-rc2
Announcements
- This version includes breaking changes to: C++, Java, PHP, Python.
- [PHP] Remove deprecated legacy class aliases. (#15709) (096e127)
- [Java] Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- [Python] Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- [Python] Removed obsolete/duplicate
setup.py
from Python. (#15708) (5722aef) - [C++] Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
- Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (fc41e78)
- Add new 'always_print_without_presence_fields' option to the C++ JSON serializer. (1f3bf1d)
- Remove use of mach_absolute_time (#15554) (#15662) (8b0f6fd)
- Check ctype() in DescriptorBuilder for edition 2023 and beyond. (0090f19)
- Fail building descriptors if
ctype
is used for fields other than string or bytes. (624d65d) - [CPP] Add the privacy manifest to the C++ CocoaPod. (#15664) (e7888a1)
Java
- Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (fc41e78)
- Add a new 'includingDefaultValueWithoutPresenceFields' option to the Java parser which is intended to replace the current 'includingDefaultValueFields'. (043191b)
- Force descriptor initialization of dependencies before internalUpdateFileDescriptor(). (#15718) (4dec1a7)
- Correctly set maven-compiler-plugin to >= Java 1.8 per our minimum Java version (#15707) (6028cdb)
- Update internalUpdateFileDescriptor() to synchronize setProto() and resolveAllFeatures() to avoid data races. (#15659) (225b080)
Objective-C
- [ObjC] Use a local to avoid warnings in 32bit builds. (#15665) (394aec8)
- [ObjC] Add the privacy manifest to the ObjC CocoaPod. (#15663) (935fcb7)
Python
- Adhere to PEP 8 (#15127) (#15729) (3b92f4f)
- Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (06e7cab)
- Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (fc41e78)
- Add new including_default_value_without_presence_fields to Python JSON serializer. (c530216)
- Breaking change: Removed obsolete/duplicate
setup.py
from Python. (#15708) (5722aef)
PHP
- Don't break the trace (#11311) (#15727) (3e99024)
- Fix inconsistent timestamp json encode/decode (#12396) (#15726) (e99f27e)
- Breaking change: Remove deprecated legacy class aliases. (#15709) (096e127)
Ruby
- Increased the size of the error message buffer by 4x, to 511 bytes. (#15728) (ab6bcba)
- Move the RubyMessage.java JSON "include defaults" to use alwaysPrintFieldsWithNoPresence. (b5beba3)
UPB (Python/PHP/Ruby C-Extension)
Other
Protocol Buffers v26.0-rc1
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 addedhas_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
- Fix getting env variables on windows (#15518) (71b0b4e)
- Proper fix utf8 command line arguments (#14253) (1eff9d7)
- Allocate an editions FeatureSet extension for https://github.com/bufbuild/protobuf-es (fedd34d)
- Make rules_ruby a dev-only dependency. (571b727)
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...
Protocol Buffers v25.2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
Protocol Buffers v25.1
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
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
onInternalOutOfLineDeleteMessageLite()
(#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
- Implement proto2/proto3 with editions (3813b66)
- Remove synthetic oneofs from Java gencode field accessor tables. (https://github.com/protocolbuffers/protobuf...