Skip to content

Releases: protocolbuffers/protobuf

Protocol Buffers v30.2

26 Mar 18:45
Compare
Choose a tag to compare

Announcements

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

Compiler

  • Restore generator headers in cmake install until the next breaking C++ release (#20749) (b69f653)

C++

  • Remove dllexport attribute on variable definition. (#20833) (7831669)
  • Restore generator headers in cmake install until the next breaking C++ release (#20749) (b69f653)
  • Change how we decide which empty string implementation to use. (#20708) (221b2a0)

Java

  • Remove dllexport attribute on variable definition. (#20833) (7831669)
  • Add protobuf_maven artifacts to protobuf_maven_dev as well so they can still be referenced correctly using the dev namespace for dev-only targets. (#20771) (09b5078)
  • Add volatile to featuresResolved (#20766) (b7f06f1)
  • Restore generator headers in cmake install until the next breaking C++ release (#20749) (b69f653)
  • Restore custom protobuf maven namespaces to avoid polluting main maven namespace for non-dev dependencies as well. (#20739) (f4b0a79)
  • Fix Java concurrency issue in feature resolution for old <=3.25.x gencode using lazy feature resolution. (#20751) (2dc9f35)
  • Fix lite classes in the protobuf-java Maven release to be JDK8 compatible. (#20843) (7a4c63b)

Kotlin

  • Restore custom protobuf maven namespaces to avoid polluting main maven namespace for non-dev dependencies as well. (#20739) (f4b0a79)

Csharp

  • Restore generator headers in cmake install until the next breaking C++ release (#20749) (b69f653)

Objective-C

  • Restore generator headers in cmake install until the next breaking C++ release (#20749) (b69f653)

Python

  • Restore generator headers in cmake install until the next breaking C++ release (#20749) (b69f653)

Ruby

  • Restore generator headers in cmake install until the next breaking C++ release (#20749) (b69f653)

Other

  • Restore JDK8 compatibility in Bazel for libraries with dependencies from Maven (e.g. //java/util) (#20832) (da9cadc)

Protocol Buffers v29.4

19 Mar 21:36
Compare
Choose a tag to compare

Announcements

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

Java

  • Fix Java concurrency issue in feature resolution for old <=3.25.x gencode using lazy feature resolution. (#20750) (ce59907)

Protocol Buffers v30.1

13 Mar 21:17
Compare
Choose a tag to compare

Announcements

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

Bazel

  • Loosen py_proto_library check to be on the import path instead of full directory (i.e. excluding external/module-name prefix). (#20569) (3576a1f)

Compiler

  • Fix python codegen crash when C++ features are used. (#20577) (250c550)

C++

  • Fix python codegen crash when C++ features are used. (#20577) (250c550)

Java

  • Remove Java runtime classes from kotlin release. (#20607) (4747628)

Kotlin

  • Remove Java runtime classes from kotlin release. (#20607) (4747628)

Python

  • Fix python codegen crash when C++ features are used. (#20577) (250c550)

Other

  • Re-add system_python repo alias to MODULE.bazel (#20662) (ebb5224)

Protocol Buffers v30.0

04 Mar 23:42
Compare
Choose a tag to compare

Announcements

  • This version includes breaking changes to: Objective-C, Python, C++.
    • [Objective-C] Remove legacy WKT headers. (d9caebc)
    • [Objective-C] Remove deprecated apis. (2a52b90)
    • [Objective-C] Remove support for older generated code. (cffa590)
    • [Objective-C] Remove GPBUnknownFieldSet. (2b93422)
    • [Python] Fix closed enum validation under editions (72b3eda)
    • [Python] Remove deprecated GetDebugString() from protobuf python cpp extension. (721a452)
    • [Python] Remove deprecated reflection methods (292f964)
    • [Python] Remove deprecated GetPrototype MessageFactory.GetPrototype(), (c261b49)
    • [Python] Python nested message class qualname now contains the outer message name. (Previous qualname has the same result with name for nested message that outer message name was not included) (0720536)
    • [Python] Remove deprecated Python RPC Service Interfaces (5ba74b1)
    • [Python] Python setdefault behavior change for map field. (81da6b9)
    • [Python] Remove deprecated py_proto_library macro.
    • [C++] Prohibit using Bazel+MSVC to build protobuf (117e7bb)
    • [C++] Remove deprecated Arena::CreateMessage. (d83a536)
    • [C++] Remove CMake submodule support in favor of fetched or installed dependencies. (3f06ca4)
    • [C++] Flip default behavior for handling cmake dependencies. (9cc685e)
    • [C++] Add ASAN poisoning after clearing oneof messages on arena. (54d068e)
    • [C++] Upgrade return type of type_name() and cpp_type_name() from const char* to absl::string_view. (a9ad51f)
    • [C++] Remove deprecated RepeatedPtrField::ClearedCount(). (e8e3253)
    • [C++] Upgrade return type of several string returning functions to absl::string_view. (d1990d9)
    • [C++] Strip ctype from options in C++ (aebf8b9)
    • [C++] Remove MutableRepeatedFieldRef::Reserve() in reflection (913f7b0)
    • [C++] Remove deprecated JsonOptions alias. (e2eb0a1)
    • [C++] Remove deprecated Arena::GetArena. (30ed452)
  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.
  • Migration Guide includes migration instructions for breaking changes for this release.

Bazel

  • Remove reference to cc_proto_aspect (fa02f76)
  • Remove deprecated bazel/system_python.bzl alias. (00f108c)

Compiler

  • Add notices.h with information about our dependencies' licenses and add --notices flag to protoc to print the contents of that file. (a7df327)
  • Have the protoc CLI properly report any parser warnings. (cafeaa4)
  • Split protoc apart from libprotoc in our cmake configs. (b4b93b3)
  • Begin adding extension numbers to SourceCodeInfo and FileDescriptorSet for tooling purposes. (9d7236b)
  • Fix various unsigned to signed comparison warnings. (#17212) (67de087)

C++

  • Fixing staleness tests (6abaf77)
  • Add notices.h with information about our dependencies' licenses and add --notices flag to protoc to print the contents of that file. (a7df327)
  • Backport: Remove if_constexpr usage for future Abseil compatibility (#20488) (450ee76)
  • Add tests for older gcc versions we still support (#20463) (0778473)
  • Fix a bug in handling of implicit-presence string_view fields. (#20403) (81196ac)
  • Remove rules_rust dependency from MODULE.bazel for 30.x (#20310) (b8248f6)
  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)
  • Replace std::any with a custom solution. (#20251) (6250d09)
  • Make DebugString print debug output, enable debug markers for debug output (9a03332)
  • Fix missing port_undef (#20052) (0644388)
  • Use __builtin_expect_with_probability for proto field presence checks. (e958419)
  • Enable meta-tagging for redaction purposes (1f48795)
  • Breaking change: Prohibit using Bazel+MSVC to build protobuf (117e7bb)
  • Breaking change: Upgrade return type of several string returning functions to absl::string_view. (d1990d9)
  • Print the presence probability when analysis is enabled. (d4ba7ff)
  • Split protoc apart from libprotoc in our cmake configs. (b4b93b3)
  • Breaking change: Strip ctype from options in C++ (aebf8b9)
  • Breaking change: Remove MutableRepeatedFieldRef::Reserve() in reflection (913f7b0)
  • Remove stale references to C++14. (f4cc92c)
  • Breaking change: Upgrade return type of type_name() and cpp_type_name() from const char* to absl::string_view. (a9ad51f)
  • Update cmake minimum version to >=3.16. (21f535c)
  • Migrate coded output stream arguments from const std::string& to absl::string_view. (0361a59)
  • Breaking change: Remove deprecated Arena::GetArena. (30ed452)
  • Remove the time (or time-based) entropy being added to Map's seed. (a7875bb)
  • Don't use CLOCK_UPTIME_RAW if it won't be defined (#16951) (097dcda)
  • Fix DEPENDENCIES in protobuf_generate() to accept multiple values instead of silently dropping (52887e1)
  • Use ABSL_PREDICT_TRUE|FALSE instead of PROTOBUF_PREDICT_TRUE|FALSE. (fd47730)
  • Breaking change: Flip default behavior for handling cmake dependencies. (9cc685edf867acf5...
Read more

Protocol Buffers v30.0-rc2

27 Feb 01:44
Compare
Choose a tag to compare
Pre-release

Announcements

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

Bazel

Compiler

  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

C++

  • Add tests for older gcc versions we still support (#20463) (0778473)
  • Fix a bug in handling of implicit-presence string_view fields. (#20403) (81196ac)
  • Make php generator's header public for gRPC (#20320) (c07e854)
  • Remove rules_rust dependency from MODULE.bazel for 30.x (#20310) (b8248f6)
  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)
  • Replace std::any with a custom solution. (#20251) (6250d09)

Java

  • Run buildifier (bf712cc)
  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

Kotlin

Csharp

  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

Objective-C

  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

Rust

  • Run buildifier (bf712cc)
  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)
  • See also UPB changes below, which may affect Rust.

Python

  • Run buildifier (bf712cc)
  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

PHP

  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

PHP C-Extension

  • Upb: Update _upb_map_next signature to return a boolean and remove the _nextmutable Map iterator API. (#20467) (0913d39)
  • See also UPB changes below, which may affect PHP C-Extension.

Ruby

  • Run buildifier (bf712cc)
  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

Ruby C-Extension

  • Upb: Update _upb_map_next signature to return a boolean and remove the _nextmutable Map iterator API. (#20467) (0913d39)
  • See also UPB changes below, which may affect Ruby C-Extension.

UPB (Python/PHP/Ruby C-Extension)

  • Upb: Update _upb_map_next signature to return a boolean and remove the _nextmutable Map iterator API. (#20467) (0913d39)
  • Change upb C generated map iteration function to not hand out MapEntry pointers. (#20462) (503abcc)
  • Run buildifier (bf712cc)
  • Upgrade abseil-cpp to 20250127 and use @com_google_absl -> @abseil-cpp and com_google_googletest -> @googletest canonical BCR names. (#20295) (df849cc)

Other

  • Remove test platform specification from release config (#20475) (2b9b101)
  • Remove reference to rules_rust from .bazelrc (#20470) (90e893c)
  • Protobuf: add //:go_features_proto Bazel alias (#20419) (8892adc)
  • Fix redundant clang-cl and msvc platform constraint for Bazel 8 compatibility and enable Bazel 8 presubmits in BCR. (b025ac0)
  • Switch BCR presubmit to testing from example module (instead of default dummy module) so we can use .bazelrc and reference @local_config_cc. (8171744)

Protocol Buffers v30.0-rc1

04 Feb 22:59
Compare
Choose a tag to compare
Pre-release

Announcements

  • This version includes breaking changes to: C++, Objective-C, Python, Rust.
    • [C++] Remove deprecated JsonOptions alias. (e2eb0a1)
    • [C++] Remove CMake submodule support in favor of fetched or installed dependencies. (3f06ca4)
    • [C++] Prohibit using Bazel+MSVC to build protobuf (117e7bb)
    • [C++] Remove deprecated Arena::CreateMessage. (d83a536)
    • [C++] Upgrade return type of type_name() and cpp_type_name() from const char* to absl::string_view. (a9ad51f)
    • [C++] Strip ctype from options in C++ (aebf8b9)
    • [C++] Remove MutableRepeatedFieldRef::Reserve() in reflection (913f7b0)
    • [C++] Upgrade return type of several string returning functions to absl::string_view. (d1990d9)
    • [C++] Flip default behavior for handling cmake dependencies. (9cc685e)
    • [C++] Add ASAN poisoning after clearing oneof messages on arena. (54d068e)
    • [C++] Remove deprecated RepeatedPtrField::ClearedCount(). (e8e3253)
    • [C++] Remove deprecated Arena::GetArena. (30ed452)
    • [Objective-C] [ObjC] Remove legacy WKT headers. (d9caebc)
    • [Objective-C] Upgrade return type of several string returning functions to absl::string_view. (d1990d9)
    • [Python] Remove deprecated reflection methods (292f964)
    • [Python] Remove deprecated GetPrototype MessageFactory.GetPrototype(), (c261b49)
    • [Python] Remove deprecated Python RPC Service Interfaces (5ba74b1)
    • [Python] Remove deprecated GetDebugString() from protobuf python cpp extension. (721a452)
    • [Python] Upgrade return type of several string returning functions to absl::string_view. (d1990d9)
    • [Python] Fix closed enum validation under editions (72b3eda)
    • [Python] Python setdefault behavior change for map field. (81da6b9)
    • [Python] Python nested message class qualname now contains the outer message name. (Previous qualname has the same result with name for nested message that outer message name was not included) (0720536)
  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.

Bazel

  • Remove reference to cc_proto_aspect (fa02f76)
  • Remove deprecated bazel/system_python.bzl alias. (00f108c)

Compiler

  • Have the protoc CLI properly report any parser warnings. (cafeaa4)
  • Split protoc apart from libprotoc in our cmake configs. (b4b93b3)
  • Begin adding extension numbers to SourceCodeInfo and FileDescriptorSet for tooling purposes. (9d7236b)
  • Fix various unsigned to signed comparison warnings. (#17212) (67de087)

C++

  • Make DebugString print debug output, enable debug markers for debug output (9a03332)
  • Fix missing port_undef (#20052) (0644388)
  • Use __builtin_expect_with_probability for proto field presence checks. (e958419)
  • Enable meta-tagging for redaction purposes (1f48795)
  • Breaking change: Prohibit using Bazel+MSVC to build protobuf (117e7bb)
  • Breaking change: Upgrade return type of several string returning functions to absl::string_view. (d1990d9)
  • Print the presence probability when analysis is enabled. (d4ba7ff)
  • Split protoc apart from libprotoc in our cmake configs. (b4b93b3)
  • Breaking change: Strip ctype from options in C++ (aebf8b9)
  • Breaking change: Remove MutableRepeatedFieldRef::Reserve() in reflection (913f7b0)
  • Remove stale references to C++14. (f4cc92c)
  • Breaking change: Upgrade return type of type_name() and cpp_type_name() from const char* to absl::string_view. (a9ad51f)
  • Update cmake minimum version to >=3.16. (21f535c)
  • Migrate coded output stream arguments from const std::string& to absl::string_view. (0361a59)
  • Breaking change: Remove deprecated Arena::GetArena. (30ed452)
  • Remove the time (or time-based) entropy being added to Map's seed. (a7875bb)
  • Don't use CLOCK_UPTIME_RAW if it won't be defined (#16951) (097dcda)
  • Fix DEPENDENCIES in protobuf_generate() to accept multiple values instead of silently dropping (52887e1)
  • Use ABSL_PREDICT_TRUE|FALSE instead of PROTOBUF_PREDICT_TRUE|FALSE. (fd47730)
  • Breaking change: Flip default behavior for handling cmake dependencies. (9cc685e)
  • Use [[maybe_unused]] instead of PROTOBUF_UNUSED. (a7dd155)
  • Use [[nodiscard]] instead of PROTOBUF_NODISCARD (1ceedf8)
  • Breaking change: Remove deprecated JsonOptions alias. (e2eb0a1)
  • Generate internal hasbits for singular proto3 implicit presence fields. (3e82ed4)
  • Add name mangling to nested names that collide with known generated names, like (f2cf85c)
  • Breaking change: Remove deprecated RepeatedPtrField::ClearedCount(). (e8e3253)
  • Breaking change: Add ASAN poisoning after clearing oneof messages on arena. (54d068e)
  • Breaking change: Remove deprecated Arena::CreateMessage. (d83a536)
  • Change DynamicCastMessage to throw a std::bad_cast exception when exceptions (33bbbeb)
  • Fixed a missing check in wire format verification. (2ac862f)
  • Comment change: clarifies that the field/value order is based on textual order in the file, not the order of the enums. (f92335b)
  • ...
Read more

Protocol Buffers v25.6

24 Jan 20:21
Compare
Choose a tag to compare

Announcements

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

Java

  • Add poison pill to makeExtensionsImmutable method (see News for details) (#20084) (3f1df78)

Kotlin

  • Populate Kotlin Manifest Files. (610f378)

PHP

PHP C-Extension

  • Backport windows fixes with INFINITY/NAN (#19390) (65196bc)
  • See also UPB changes below, which may affect PHP C-Extension.

Ruby

Ruby C-Extension

  • Fixed compiler warnings in the Ruby C extension. (c6fcd39)
  • Backport windows fixes with INFINITY/NAN (#19390) (65196bc)
  • See also UPB changes below, which may affect Ruby C-Extension.

UPB (Python/PHP/Ruby C-Extension)

Other

  • Update artifact actions (#19701) (028200c)
  • Remove CMake downgrade workaround from Windows CI tests (#19633) (e2cc170)
  • Upgrade setup-ruby to get around 'Unsupported platform macos-13' (3f26684)
  • Remove continous-only tag which didn't exist in 25.x (5f9e57b)
  • Update remaining Python 3.8 upb macos tests to macos-13 (f122729)
  • Update GitHub Actions to use macOS-13 ahead of macOS-12 deprecation. (6fad18c)
  • Upgrade PHP mac runner to avoid slow PHP installs (#18972) (4212301)
  • Restore macOS CMake configuration. (31c5280)
  • Update staleness tests to only run over release branch (#18397) (78e1c09)

Protocol Buffers v29.3

08 Jan 21:06
Compare
Choose a tag to compare

Announcements

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

C++

  • Fix cmake installation location of java and go features (#19773) (1dc5842)

Other

  • Add .bazeliskrc for protobuf repo to tell bazelisk to use 7.1.2 by default. (#19884) (9a5d2c3)
  • Update artifact actions to v4 (#19703) (8e7e6b0)

Protocol Buffers v29.2

18 Dec 14:54
Compare
Choose a tag to compare

Announcements

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

C++

Java

Other

  • Export environment variables so bazelisk picks them up (#19690) (8b9d76c)
  • Pin staleness check to Bazel 7 (#19689) (a1c9b6a)
  • Remove CMake downgrade workaround from Windows CI tests (#19630) (3a7bb4a)

Protocol Buffers v29.1

04 Dec 16:42
Compare
Choose a tag to compare

Announcements

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

Java

Kotlin

Python

  • Revert "Remove deprecated service.py usages from test". For 29.x only (#19434) (5864b50)