Releases: protocolbuffers/protobuf
Releases · protocolbuffers/protobuf
Protocol Buffers v35.0-rc1
Announcements
- This version includes potential breaking changes without a major version bump to: Bazel.
- [Bazel] Change @protobuf//bazel/flags:prefer_prebuilt_proto flag to True. (f9f32d2)
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Moved
protocoptflag out of theccdir, since it is not a c++-specific flag. (325d8dc) - Add support for bazel 9.x (#26201) (f08d703)
- Breaking change: Change @protobuf//bazel/flags:prefer_prebuilt_proto flag to True. (f9f32d2)
- Dropped support for Bazel 7. (1816758)
Compiler
- Implement the Edition 2026 naming style enforcement feature. This will help prevent field name collisions. (ae0d964)
- Add enum to
enforce_naming_stylefeature to avoid field naming collisions which will be implemented in Edition 2026. (e4911a1) - Fail writing files in protoc CLI if any file output path is relative. (3bf2b07)
- Mangle types named
XyzViewif there is any direct sibling namedXyz(63d6ef0) - Improve the namespacing selected by rustc used for gencode types in errors. (ce2eb73)
- Fully qualify scalar types in Kotlin/Native proto generator. (adc8d22)
- Change _opt() accessors to return an std::Option instead of protobuf::Optional (6ced612)
- Make Message's trait bounds much better for generic use (be1292f)
- Support more chars in type URLs in the C++ text-format parser. (3a87c6c)
- Validate Feature Support on Custom Options (34c1110)
- Trait clarity effort: introduce
Singulartrait, for types which are allowed as simple fields (cdbfaf1) - Trait clarity improvement on Map traits (a8daa95)
C++
- Implement the Edition 2026 naming style enforcement feature. This will help prevent field name collisions. (ae0d964)
- Add enum to
enforce_naming_stylefeature to avoid field naming collisions which will be implemented in Edition 2026. (e4911a1) - Enhance ParseInfoTree to provide location of names and values. (1cb4fdb)
- Add integer overflow check to RepeatedPtrField::MergeFrom. (cb5fe97)
- Adding sanity check for
ListFieldsreflection call (555360e) - Introduce
Arena::UniquePtrandArena::Ptras smart pointers to better manage (bb00218) - Bug fix for edition 2024 visibility checking. Visibility checking was not properly applied to service method input and output types. This is now applied properly and will error if method input/output types do not have visibility to those messages. (5a56dee)
- Fixed data race in Python Free Threading by removing unnecessary
SetHasBitForRepeated()call. (8c1a9a4) - Add support for bazel 9.x (#26201) (f08d703)
- Add
proto2::sort/stable_sortutilities that behave as the standard ones but are optimized for Protobuf containers. (252281f) - Add
proto2::erase/erase_ifutilities that behave as the standard ones but are optimized for Protobuf containers. (dc9fb35) - Extend Abseil flag support for enums to include std::vector. (bd42ac6)
- Dropped support for Bazel 7. (1816758)
- Add native Abseil flag support to protobuf message types. (ec42e19)
- Support more chars in type URLs in the C++ text-format parser. (3a87c6c)
- Stripping empty options (d5d6d4c)
- Creating generic MaybeAddError helper function (4bcf773)
- Validate Feature Support on Custom Options (34c1110)
- Add bounds checks to
UnsafeArenaExtractSubrange,ReleaseLastandSwapElements. (d124c2d) - Fix UTF-8 Validation of string extensions in C++ (0936f33)
- Remove first implementation of protobuf out of bounds enforcement. (507f86b)
- Add native Abseil flag support to protobuf enums. (a203388)
- Improve EINTR handling for close in
zero_copy_stream_impl.h(a904af9) - Add cc_proto_library for MessageSet in //src/google/protobuf/bridge (6d23e8e)
Java
- Add BytecodeClassName functions, matching helpers in the java GeneratorNames utility. (514aceb)
- Add enum to
enforce_naming_stylefeature to avoid field naming collisions which will be implemented in Edition 2026. (e4911a1) - Avoid toBigIntegerExact in JsonFormat to avoid degenerate parse behavior in the face of large exponents. (57093a8)
- Dropped support for Bazel 7. (1816758)
- Add native Abseil flag support to protobuf enums. (a203388)
Csharp
- Implement WriteDelimitedTo(BufferWriter) (#21325) (407f457)
- Add an "include" directory containing WKTs for Google.Protobuf.Tools nuget package. (6029d17)
Objective-C
- ObjC: Block Roots from being created. (8274114)
- Fix naming convention in c_function extension syntax (e3bee07)
- Modify unit tests to use c_function extension syntax via ifdefs (e1f2f52)
Rust
- Mangle types named
XyzViewif there is any direct sibling namedXyz(63d6ef0) - Improve the namespacing selected by rustc used for gencode types in errors. (ce2eb73)
- Allow ProtoStr to be used in const contexts. (7f7b974)
- Make any &T impl AsView if T impl AsView (d787869)
- Change _opt() accessors to return an std::Option instead of protobuf::Optional (6ced612)
- Add some common methods to ProtoStr to make it more ergonomic to use without dropping down to &[u8] (f8daf2f)
- Ffi_11: Define basic arithmetic operations and comp...
Protocol Buffers v25.9
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Java
- Avoid toBigIntegerExact in JsonFormat to avoid degenerate parse behavior in the face of large exponents. (#26435) (f125aa5)
- Switch the pre22 warning to use CopyOnWriteArraySet. (#23976) (9822fb5)
Python
Other
- Remove python from UPB / Windows tests (#26497) (73be936)
- Fix failing tests in 25.x (#25198) (2418c40)
- Change setup-ruby and add new xcode version to build (9717aac)
- Protobuf: update php from macos-13 to macos-15-intel (1d18bbd)
- Update GitHub Actions to use macOS-14 (again). (3c282a4)
- Update GitHub Actions to use macOS-14. (2e1a0cc)
- Disable php tests (56f2fd2)
- Fix merge conflict annotations (b7abd06)
- Don't ignore platform requirements (a53de52)
- Upgrade setup-php to speed up PHP tests (#24408) (0f2128f)
- Extend gencode compatibility support back to 3.20.0 (#22424) (6fbcb87)
- Update github major version tags to be formatted v..<MI… (#22359) (974b235)
- Drop windows-2019 runners from CI (#22185) (9910104)
Protocol Buffers v34.1
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Moved
protocoptflag out of theccdir, since it is not a c++-specific flag. (3db9fd1) - Add support for bazel 9.x (#26201) (763c5da)
C++
- Updated CMake dependencies. (5583485)
- Add cc_proto_library for MessageSet in //src/google/protobuf/bridge (523a6a4)
- Add support for bazel 9.x (#26201) (763c5da)
Java
- Avoid toBigIntegerExact in JsonFormat to avoid degenerate parse behavior in the face of large exponents. (ab3d7f0)
Python
Other
Protocol Buffers v33.6
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
- Add cc_proto_library for MessageSet in //src/google/protobuf/bridge (56be356)
Java
- Avoid toBigIntegerExact in JsonFormat to avoid degenerate parse behavior in the face of large exponents. (e515811)
PHP
Protocol Buffers v34.0
Announcements
- This version includes potential breaking changes with major version bump to: Objective-C, Python, PHP, C++. Bazel
- [Objective-C] Remove
-[GPBFieldDescriptor optional](3414dc1) - [Objective-C] Fix nullability annotations on some
GPB*Dictionarytypes. (ea67d6d) - [Objective-C] Remove
generate_minimal_importsgeneration option warning (45b1297) - [Python] Raise errors in OSS when assign bool to int/enum field in Python Proto. (5b116fe)
- [Python] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts() (c301c2c)
- [Python] Remove deprecated FieldDescriptor.label (0a8ff55)
- [Python] Remove float_format/double_format from python proto text_format (e4854a1)
- [Python] Remove deprecated FieldDescriptor::label() in OSS. Use is_repeated() or is_required() instead (b76faa9)
- [Python] Raise TypeError when convert non-timedelta to Duration, or convert non-datetime to Timestamp in python proto. (Original code may raise ArributeError) (00aaca1)
- [Python] Remove float_precision from python proto json_format (f027f1f)
- [PHP] Remove deprecated PHP APIs FieldDescriptor getLabel, use IsRepeated or isRequired instead. (4208121)
- [PHP] Remove deprecated PHP APIs (9c45014)
- [PHP] Add PHP typehints for setters and remove redundant GPBUtil checks (aee03b7)
- [PHP] support default values for editions/proto2 (b01099d)
- [C++] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts() (c301c2c)
- [C++] Add a debug check that the target of CopyFrom is not a descendant of the source. (7a75898)
- [C++] Add [[nodiscard]] to many APIs. (a70115f)
- [C++] Make generator headers private (3a2af35)
- [C++] Remove deprecated FieldDescriptor::has_optional_keyword() in OSS. Use is_repeated() or has_presence() instead (68346ec)
- [C++] Remove deprecated FieldDescriptor::label() in OSS. Use is_repeated() or is_required() instead (b76faa9)
- [C++] Remove deprecated FieldDescriptor::is_optional() in OSS. Use (!is_required() && !is_repeated()) instead (9dbc5d4)
- [C++] Remove AddUnusedImportTrackFile() and ClearUnusedImportTrackFiles(). Remove PROTOBUF_FUTURE_RENAME_ADD_UNUSED_IMPORT (837a2cd)
- [C++] Removes proto2::util::MessageDifferencer::AddIgnoreCriteria that takes a raw pointer as an argument in favor of the overload that takes a unique_ptr. Remove macro PROTOBUF_FUTURE_REMOVE_ADD_IGNORE_CRITERIA (b115358)
- [C++] Make the arena-enabled constructors of
RepeatedField,RepeatedPtrField, andMapprivate. (ef890c3) - [C++] All entity names have length limit (2afb0dc)
- [Other] Remove deprecated flag for enabling MSVC support (97c979b)
- [Bazel] Remove deprecated ProtoInfo.transitive_imports. Use equivalent transitive_sources instead (0a5c2f6)
- [Bazel] Change @protobuf//bazel/flags:prefer_prebuilt_proto flag to True. (84a30b5)
- [Bazel] Only respect the Starlark versions of --proto_toolchain_for*(b5685c4)
- [Objective-C] Remove
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Only respect the Starlark versions of --proto_toolchain_for*. This is a breaking change. (#26090) (#26091) (b5685c4)
- Breaking change: Change @protobuf//bazel/flags:prefer_prebuilt_proto flag to True. (84a30b5)
- Dropped support for Bazel 7. (304c9ba)
- Don't check for native protobuf flags if the proto fragment doesn't exist. (#25803) (5975f13)
- Fix the prefer_prebuilt_protoc alias to use the correct originally announced location (732ed49)
- Actually fix breaking change related to
upb_proto_reflection_library(86d434b) - Fix breaking change related to
upb_c_proto_libraryandupb_proto_reflection_library(b0150c0) - Add an alias to undo accidental unannounced breaking change (e71d379)
- Moved prebuilt-related Bazel files to standard locations. (cfe8991)
- Refactored and rearranged Bazel rules. (d7dd1e1)
- Removed the
third_party/upb/upb/bazeldirectory. (7efbfe1) - Introduce Starlark versions of Protobuf flags. (d1f4b2f)
- Fix: cc_toolchain should prefer protoc when prebuilt flag is flipped. (#25168) (8c857c3)
- Breaking change: Remove deprecated ProtoInfo.transitive_imports. Use equivalent transitive_sources instead (0a5c2f6)
- Feat(bazel): wire up prebuilt protoc toolchain (#24115) (cc23698)
- Migrate
proto_descriptor_set(#23369) (8d4dfdd)
Compiler
- Removed the
third_party/upb/upb/bazeldirectory. (7efbfe1) - Validate Feature Support on Custom Options (2985930)
- Ruby codegen: support generation of rbs files (#15633) (6ebdf85)
- Avoid collision name problems between a message named
Xyzand a direct sibling enum namedXyzView(eba53e8) - Generalizing and implementing ValidateFeatureSupport for both Options and Features during proto parsing (ed3c571)
- Fix a bug with custom features outside of the
pbpackage. (872d3ce) - Fix import option handling when include_imports isn't set. (9ef9e80)
- Fix a bug in STRICT check of namespaced enums to properly check for 'reserved 1 to max' (1229d4a)
- Prevent accidental stripping of
debug_redactoptions via import option. (f58b098)
C++
- Regenerated files. (a9bbf7a)
- Dropped support for Bazel 7. (304c9ba)
- Remove direct dependency on rules_apple (#25708) (https://github...
Protocol Buffers v34.0-rc2
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Bazel
- Fix the prefer_prebuilt_protoc alias to use the correct originally announced location (732ed49)
- Actually fix breaking change related to
upb_proto_reflection_library(86d434b) - Fix breaking change related to
upb_c_proto_libraryandupb_proto_reflection_library(b0150c0) - Add an alias to undo accidental unannounced breaking change (e71d379)
- Moved prebuilt-related Bazel files to standard locations. (cfe8991)
- Refactored and rearranged Bazel rules. (d7dd1e1)
- Removed the
third_party/upb/upb/bazeldirectory. (7efbfe1) - Introduce Starlark versions of Protobuf flags. (d1f4b2f)
Compiler
- Removed the
third_party/upb/upb/bazeldirectory. (7efbfe1) - Validate Feature Support on Custom Options (2985930)
C++
- Fix broken
field_mask_upb_protoandfield_mask_upb_reflection_protoaliases (d808a97) - Removed the
third_party/upb/upb/bazeldirectory. (7efbfe1) - Validate Feature Support on Custom Options (2985930)
- Auto-generate files after PR #25437 (8be64ea)
- Update rules_apple dependency to support rules_swift 3.x (#25437) (c0e15f2)
- Fix UTF-8 Validation of string extensions in C++ (35ba5cf)
- Improve wire compatibility of
TestAllTypeswithTestAllExtensions. (08355bd)
Python
- Use the toolchain protoc by default in internal rules. (41ad19a)
- Removed the
third_party/upb/upb/bazeldirectory. (7efbfe1)
PHP
- Bump version dependencies on phpunit/phpunit to ">=11.5.0 <12.0.0" (4e82ce4)
Ruby
- Bump gem dependencies (659e0f3)
UPB (Python/PHP/Ruby C-Extension)
- Fix breaking change related to
upb_c_proto_libraryandupb_proto_reflection_library(b0150c0) - Removed the
third_party/upb/upb/bazeldirectory. (7efbfe1)
Other
- Add missing
timestamp_upb_reflection_protoalias (e9d6bcb) - Update Ruby 4.0 test Docker image and enable continuous tests. (0ecc6fe)
- Auto-generate files after cl/862026607 (978b556)
- Roll forward generate_release_notes = false (b6e3802)
- Revert release_ruleset version (88d2062)
- Fix generate_changelog -> generate_release_notes (#25442) (68ac7b9)
- Update release_bazel_module.yaml (#25441) (1add73b)
Protocol Buffers v29.6
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
C++
Python
- Fix Any recursion depth bypass in Python json_format.ParseDict (#25239) (#25587) (5ebddcb)
- Extend gencode compatibility support back to 3.20.0 (#22423) (a532f52)
- [numpy] Fix breakage in users of Python protobufs under NumPy 2.3rc1. (#22171) (c6c8a17)
PHP
- Bump version dependencies on phpunit/phpunit to ">=10.5.62 <11.0.0" (#25589) (f340323)
- Protobuf: update php from macos-13 to macos-15-intel (#24776) (1ca37de)
- Upgrade setup-php to speed up PHP tests (#24405) (bc64ed9)
Python
Other
Protocol Buffers v33.5
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
Python
Other
Protocol Buffers v34.0-rc1
Announcements
- This version includes breaking changes to: C++, Objective-C, PHP, Python.
- [Bazel] Remove deprecated ProtoInfo.transitive_imports. Use equivalent transitive_sources instead (0a5c2f6)
- [C++] Make generator headers private (3a2af35)
- [C++] Add a debug check that the target of CopyFrom is not a descendant of the source. (7a75898)
- [C++] Add [[nodiscard]] to many APIs. (a70115f)
- [C++] Make the arena-enabled constructors of
RepeatedField,RepeatedPtrField, andMapprivate. (ef890c3) - [C++] Remove deprecated FieldDescriptor::label() in OSS. Use is_repeated() or is_required() instead (b76faa9)
- [C++] Removes proto2::util::MessageDifferencer::AddIgnoreCriteria that takes a raw pointer as an argument in favor of the overload that takes a unique_ptr. Remove macro PROTOBUF_FUTURE_REMOVE_ADD_IGNORE_CRITERIA (b115358)
- [C++] Remove deprecated FieldDescriptor::has_optional_keyword() in OSS. Use is_repeated() or has_presence() instead (68346ec)
- [C++] Remove AddUnusedImportTrackFile() and ClearUnusedImportTrackFiles(). Remove PROTOBUF_FUTURE_RENAME_ADD_UNUSED_IMPORT (837a2cd)
- [C++] Remove deprecated FieldDescriptor::is_optional() in OSS. Use (!is_required() && !is_repeated()) instead (9dbc5d4)
- [C++] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts() (c301c2c)
- [C++] All entity names have length limit (2afb0dc)
- [ObjC] Remove
generate_minimal_importsgeneration option warning (45b1297) - [ObjC] Fix nullability annotations on some
GPB*Dictionarytypes. (ea67d6d) - [ObjC] Remove
-[GPBFieldDescriptor optional](3414dc1) - [Other] Remove deprecated flag for enabling MSVC support (97c979b)
- [PHP] Remove deprecated PHP APIs (9c45014)
- [PHP] Remove deprecated PHP APIs FieldDescriptor getLabel, use IsRepeated or isRequired instead. (4208121, cd76e67, 4208121)
- [PHP] Add PHP typehints for setters and remove redundant GPBUtil checks (#25296) (aee03b7)
- [PHP] support default values for editions/proto2 (#25161) (b01099d)
- [Python] Raise errors in OSS when assign bool to int/enum field in Python Proto. (5b116fe)
- [Python] Remove float_format/double_format from python proto text_format (e4854a1)
- [Python] Raise TypeError when convert non-timedelta to Duration, or convert non-datetime to Timestamp in python proto. (Original code may raise ArributeError) (00aaca1)
- [Python] Remove float_precision from python proto json_format (f027f1f)
- [Python] Remove deprecated FieldDescriptor::label() in OSS. Use is_repeated() or is_required() instead (b76faa9)
- [Python] Remove deprecated FieldDescriptor.label (0a8ff55)
- [Python] Remove deprecated UseDeprecatedLegacyJsonFieldConflicts() (c301c2c)
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.
- Migration Guide may include additional guidance for breaking changes.
Bazel
- Fix: cc_toolchain should prefer protoc when prebuilt flag is flipped. (#25168) (8c857c3)
- Breaking change: Remove deprecated ProtoInfo.transitive_imports. Use equivalent transitive_sources instead (0a5c2f6)
- Feat(bazel): wire up prebuilt protoc toolchain (#24115) (cc23698)
- Migrate
proto_descriptor_set(#23369) (8d4dfdd)
Compiler
- Ruby codegen: support generation of rbs files (#15633) (6ebdf85)
- Avoid collision name problems between a message named
Xyzand a direct sibling enum namedXyzView(eba53e8) - Generalizing and implementing ValidateFeatureSupport for both Options and Features during proto parsing (ed3c571)
- Fix a bug with custom features outside of the
pbpackage. (872d3ce) - Fix import option handling when include_imports isn't set. (9ef9e80)
- Fix a bug in STRICT check of namespaced enums to properly check for 'reserved 1 to max' (1229d4a)
- Prevent accidental stripping of
debug_redactoptions via import option. (f58b098)
C++
- Add EnumerateEnumValues function. (397d5d9)
- Add conformance tests for utf8 validation. (e8923a8)
- Disable constinit on MSVC for static library builds (783da0a)
- Breaking change: Make generator headers private (3a2af35)
- Add bounds checking to ExtractSubrange. (5687acc)
- This CL starts failing on
[unverified_lazy = true]on extensions, which have been (d2a42e7) - Refine the conditions for the MSVC constinit workaround (38927bf)
- Add conformance test cases about handling of google.protobuf.Empty inside any Any in JSON. (0f3dd06)
- Remove PROTOBUF_CONSTEXPR to unconditionally use constexpr (7f431bb)
- Add bounds checking to
DeleteSubrange, create new helper,RuntimeAssertInBoundsGE, and modifyLogIndexOutOfBoundsAndAbortto customize the message being logged. (71cc97c) - Breaking change: Remove deprecated UseDeprecatedLegacyJsonFieldConflicts() (c301c2c)
- Fix issue where BinaryToJson a Skip()'s failure on unknown fields was ignored instead of resulting in a parse failure. (2ec322e)
- Breaking change: Add [[nodiscard]] to many APIs. (a70115f)
- Abort on out of bounds accesses. (3acf23c)
- Fix JSON printing of Any of an empty message in C++Proto. (014f676)
- FieldMaskUtil::TrimMessage: Handle repeated messages. (0f109cb)
- Breaking change...
Protocol Buffers v33.4
Announcements
- Protobuf News may include additional announcements or pre-announcements for upcoming changes.