Skip to content

Releases: protocolbuffers/protobuf

Protocol Buffers v27.0-rc3

14 May 18:44
Compare
Choose a tag to compare
Pre-release

Announcements

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

Compiler

  • Add extension declarations for known features. (f8d0a5b)

Java

  • Add java to reserved names to escape extensions to java_. This may break existing references to gencode for extensions named java. (c18cb95)

Python

  • Add temporary alias for system_python.bzl at previous location . (#16787) (ffd753f)

Other

  • Work around windows path length limitations by moving immutable -> full in open source (new generator paths) and shortening long file names. (#16825) (615e704)

Protocol Buffers v27.0-rc2

08 May 22:58
Compare
Choose a tag to compare
Pre-release

Announcements

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

Compiler

  • Refactored the Java generator into separate packages and targets. (bd81fd9)

C++

  • Fix validation checks of implicit presence. (bdf6b10)
  • Clarify map behaviors in editions. (61c9187)

Java

  • Deprecate building from source with Maven to be removed in 4.28.x. (51b48a4)
  • Split bootstrapped java_features.proto to keep it from leaking out. (d56cb7d)
  • Refactored the Java generator into separate packages and targets. (bd81fd9)

Other

  • Move the windows path length workarounds out of protobuf-ci (9d715cb)
  • Update src/file_lists.cmake for staleness (cd337dd)
  • Add system_python to protobuf_deps.bzl. (65ee123)
  • Migrate bazel tests to protobuf-ci. (1ee203b)
  • Fix bazel cache issues in 7.0.0 (16acf7e)

Protocol Buffers v27.0-rc1

18 Apr 18:31
Compare
Choose a tag to compare
Pre-release

Announcements

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

Compiler

  • Officially release Editions in 27.0. (baa83b6)
  • Define lifetimes of edition 2023 features (77f62de)
  • Implement feature lifetime validation in protoc and the C++ runtime. (b3b4497)
  • Add edition lifetime options for feature specs. (b09b3e4)
  • Enable editions support for Java Lite. (500c953)
  • Release edition defaults CLI arguments. (7a0e10e)
  • Update protoc release to include editions language features protos for Java and C++ (6483c47)

C++

  • [C++] Ensure we allocate overaligned types with aligned operator new. (11ef0ff)
  • Fix text-format delimited field handling (29c69ff)
  • In debug mode, after clearing oneof messages on arenas, poison them if ASAN. (8826baf)
  • Allow string_type for Edition 2023. (d8251eb)
  • Breaking change: Ensure we allocate overaligned types with aligned operator new. (11ef0ff)
  • Python JSON parser: Ignore invalid enum string values if ignore_unknown_fields is set (#15887) (86abf35)
  • Move java_features.proto to java/core/srce/main/resources (274bc7f)
  • Add an RAII namespace printer helper for C++ codegen. (8599ab5)
  • Enable editions support for Java Lite. (500c953)
  • Add an RAII ifndef helper for C++ codegen. (1087274)
  • Clear oneof message fields even on arena on non-OPT builds. (5c183bd)
  • Implement edition 2023 support in all Ruby runtimes. (bca8fb6)
  • Release edition defaults CLI arguments. (7a0e10e)
  • Deprecate Arena::CreateMessage for OSS. (d4bfe52)
  • Open sourcing reflection_visit_fieds. (cfc07df)
  • Fixed the use of c++ keywords within namespace names (#15954) (988194a)
  • Fix pkg-config metadata for shared abseil on windows (#15888) (fe6edca)
  • Add GetStringView() and GetRepeatedStringView() with scratch. (a3f5af0)
  • Avoid a 'may be used uninitialized' warning when built with '-c opt'. (#15846) (eb70b34)
  • Add software prefetch to ByteSizeLong (948ca2e)
  • Add prefetching in arena blocks. (9e57b8e)
  • Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (2699579)
  • Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (7d43131)
  • Remove tags for arena cleanup nodes now that we have dedicated string cleanup blocks. (202b106)
  • Avoid unused-parameter warning in field accessor listeners. (f4d5c2c)
  • Add new 'always_print_without_presence_fields' option to the C++ JSON serializer. (671b61b)
  • Fail to build descriptor if ctype is specified for non string/bytes fields (8b4c7a1)
  • Check ctype() in DescriptorBuilder for edition 2023 and beyond. (307aeac)
  • Fail building descriptors if ctype is used for fields other than string or bytes. (403e207)
  • Fix generation of HasExtension and ExtensionSize functions to restrict to the (9f5be07)
  • Add the privacy manifest to the C++ CocoaPod. (982ea24)

Java

  • Define lifetimes of edition 2023 features (77f62de)
  • Check that size is non-negative when reading string or bytes in StreamDecoder. (a94f57b)
  • Fix text-format delimited field handling (29c69ff)
  • Move java_features.proto to java/core/srce/main/resources (274bc7f)
  • Add java_features.proto to kotlin_mvn release (369732a)
  • Enable editions support for Java Lite. (500c953)
  • Fix descriptor to access type via getType() s.t. messages using delimited encoding are consistently treated as groups for Java lite. (9f001a9)
  • Make UnsafeByteOperations stable; removing experimental annotation. (0070ac1)
  • Fix features inheritance of oneof fields and extensions and fix/move unit tests to actually run. (eb10ebd)
  • Add software prefetch to ByteSizeLong (948ca2e)
  • Breaking change: Remove the deprecated always_print_primitive_fields option from Java, Python and C++ JSON parsers. (2699579)
  • Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency. (7d43131)
  • Add a new 'includingDefaultValueWithoutPresenceFields' option to the Java parser which is intended to replace the current 'includingDefaultValueFields'. (58baeb4)

Kotlin

  • Add java_features.proto to kotlin_mvn release (369732a)

Csharp

  • C#: Optimize JSON parsing in JsonTokenizer (68e6e3e)
  • C#: Avoid string concatenation when looking up enum values by name. (e6684ac)
  • Cache StringBuilder instances in the .NET JsonTextTokenizer. (fac929d)
  • Enable Editions in the C# generator. (421040b)
  • Runtime support for Protobuf Editions in C#. (450022d)
  • Tweak "group to property name" mapping for C#. Under editions, where fields using a delimited encoding have independent field names from type names, we want to use the specified field name. (139ea4d)
  • C#: Ignore invalid enum string values in JSON, when invalid fields are being ignored. (55e50ba40679eb82269c62872116b...
Read more

Protocol Buffers v26.1

27 Mar 20:28
Compare
Choose a tag to compare

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

  • Cherry-pick required label handling in JRuby field descriptor from bca8fb6 (2e51ff6)

Other

  • Update protoc release to include editions language features protos for Java and C++ (7f45773)
  • Fix Android platforms constraint (#16246) (#16271) (b4e1870)
  • Add back android config_setting that looks for //external:android/crosstool (#16127) (#16264) (a97c927)

Protocol Buffers v26.0

13 Mar 17:09
Compare
Choose a tag to compare

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 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)
    • [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

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...
Read more

Protocol Buffers v26.0-rc3

28 Feb 23:49
Compare
Choose a tag to compare
Pre-release

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

  • Tweak BUILD setup to make the layering check change less disruptive (#15838) (52aa150)

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)

  • Ruby implement memsize functions for native types (#10291) (4902fc0)

Other

  • Disabled macOS 8.2, to match main. (9dfa2b6)

Protocol Buffers v25.3

15 Feb 23:20
Compare
Choose a tag to compare

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

  • Update Ruby GHA to test against Ruby 3.3. (25b1e81)
  • Pin bundler version to 2.4.22 for Ruby 2.7 support. (80b4586)

Protocol Buffers v26.0-rc2

06 Feb 19:04
Compare
Choose a tag to compare
Pre-release

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

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)

  • Increased the size of the error message buffer by 4x, to 511 bytes. (#15728) (ab6bcba)

Other

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)