Releases: protocolbuffers/protobuf
Releases Β· protocolbuffers/protobuf
Protocol Buffers v30.2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Compiler
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
Objective-C
Python
Ruby
Other
Protocol Buffers v29.4
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Java
Protocol Buffers v30.1
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
C++
Java
Kotlin
Python
Other
Protocol Buffers v30.0
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()
andcpp_type_name()
fromconst char*
toabsl::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()
andcpp_type_name()
fromconst char*
toabsl::string_view
. (a9ad51f) - Update cmake minimum version to >=3.16. (21f535c)
- Migrate coded output stream arguments from
const std::string&
toabsl::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...
Protocol Buffers v30.0-rc2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Run buildifier (bf712cc)
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
- Run buildifier (bf712cc)
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
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()
andcpp_type_name()
fromconst char*
toabsl::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()
andcpp_type_name()
fromconst char*
toabsl::string_view
. (a9ad51f) - Update cmake minimum version to >=3.16. (21f535c)
- Migrate coded output stream arguments from
const std::string&
toabsl::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)
- ...
Protocol Buffers v25.6
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Java
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
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
Other
Protocol Buffers v29.2
Protocol Buffers v29.1
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.