Protocol Buffers

Frameworks & Libraries

Language-neutral, platform-neutral extensible serialization.

Latest v36.1 · by GoogleWritten in C++Websiteprotocolbuffers/protobufRSS

Branches

36
v36.1
35
v35.1
34
v34.2
33
v33.6
25
v25.9

Release activity

Release activity — 12 releases across 12 days since Mar 18, 2026. Each cell is one day; darker means more releases that day. Nothing is recorded before Mar 18, 2026. Older weeks are hidden at this screen width.
JunJulAugSep
SundayNo releases on May 24, 2026No releases on May 31, 2026No releases on Jun 7, 2026No releases on Jun 14, 2026No releases on Jun 21, 2026No releases on Jun 28, 2026No releases on Jul 5, 2026No releases on Jul 12, 2026No releases on Jul 19, 2026No releases on Jul 26, 2026No releases on Aug 2, 2026No releases on Aug 9, 2026No releases on Aug 16, 2026No releases on Aug 23, 2026No releases on Aug 30, 2026No releases on Sep 6, 2026
MondayNo releases on May 25, 2026No releases on Jun 1, 2026No releases on Jun 8, 2026No releases on Jun 15, 2026No releases on Jun 22, 2026No releases on Jun 29, 2026No releases on Jul 6, 2026No releases on Jul 13, 2026No releases on Jul 20, 2026No releases on Jul 27, 20261 release on Aug 3, 2026No releases on Aug 10, 2026No releases on Aug 17, 2026No releases on Aug 24, 20261 release on Aug 31, 2026
TuesdayNo releases on May 26, 2026No releases on Jun 2, 2026No releases on Jun 9, 2026No releases on Jun 16, 2026No releases on Jun 23, 2026No releases on Jun 30, 2026No releases on Jul 7, 2026No releases on Jul 14, 2026No releases on Jul 21, 2026No releases on Jul 28, 2026No releases on Aug 4, 2026No releases on Aug 11, 2026No releases on Aug 18, 2026No releases on Aug 25, 2026No releases on Sep 1, 2026
WednesdayNo releases on May 27, 2026No releases on Jun 3, 2026No releases on Jun 10, 2026No releases on Jun 17, 2026No releases on Jun 24, 2026No releases on Jul 1, 2026No releases on Jul 8, 2026No releases on Jul 15, 2026No releases on Jul 22, 2026No releases on Jul 29, 2026No releases on Aug 5, 2026No releases on Aug 12, 2026No releases on Aug 19, 2026No releases on Aug 26, 2026No releases on Sep 2, 2026
ThursdayNo releases on May 28, 2026No releases on Jun 4, 20261 release on Jun 11, 2026No releases on Jun 18, 2026No releases on Jun 25, 2026No releases on Jul 2, 20261 release on Jul 9, 2026No releases on Jul 16, 2026No releases on Jul 23, 2026No releases on Jul 30, 2026No releases on Aug 6, 2026No releases on Aug 13, 20261 release on Aug 20, 2026No releases on Aug 27, 2026No releases on Sep 3, 2026
FridayNo releases on May 29, 2026No releases on Jun 5, 2026No releases on Jun 12, 2026No releases on Jun 19, 2026No releases on Jun 26, 2026No releases on Jul 3, 2026No releases on Jul 10, 2026No releases on Jul 17, 2026No releases on Jul 24, 2026No releases on Jul 31, 2026No releases on Aug 7, 2026No releases on Aug 14, 2026No releases on Aug 21, 2026No releases on Aug 28, 2026No releases on Sep 4, 2026
SaturdayNo releases on May 30, 2026No releases on Jun 6, 2026No releases on Jun 13, 2026No releases on Jun 20, 2026No releases on Jun 27, 2026No releases on Jul 4, 2026No releases on Jul 11, 2026No releases on Jul 18, 2026No releases on Jul 25, 2026No releases on Aug 1, 2026No releases on Aug 8, 2026No releases on Aug 15, 2026No releases on Aug 22, 2026No releases on Aug 29, 2026No releases on Sep 5, 2026

12 releases since Mar 18, 2026

Changelog

What changed from 35 to 36
Filter releases by branch
12 of 12 releases
v36.1Latest

Protocol Buffers v36.1

Added 1
  • Add additional unit tests for Python handling of custom JSON enum names
Changed 4
  • Allow later enum aliases to overwrite in C# custom JSON enum mapping
  • Optimize pure Python parse path for custom JSON enum names
  • Include runtime version details in assertion error messages in Rust
  • Invert the relationship between Rust crates
Removed 1
  • Drop special treatment of Rust versions below 4.33

From Protocol Buffers

Announcements

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

Csharp

Rust

Python

View originalPermalink
How v36.1 went
v36.0

Protocol Buffers v36.0

Added 6
  • Add Bazel 9 test coverage for csharp, hpb, objc, php, python, rust and upb
  • Add bazel targets for standalone plugin binaries
  • Add --<lang>_prefix CLI option
  • Add enforce_proto_limits feature for Edition 2026
  • Add json_options.proto and json_enumvalue_options.proto to release artifacts
  • Add json_name enumval support in Java JSON
Changed 6
  • Make default_symbol_visibility STRICT in edition 2026
  • Enforce proto limits in the descriptor by default for EDITION_2026
  • Validate Duration/Timestamp in TimeUtil::FromString against spec limits
  • Align C++ Proto JSON behavior on the type.proto path with the descriptor.proto path
  • JavaProto no longer uses sun.misc.Unsafe in standard generated code
  • Make Timestamps.parse() attempt non-lenient parsing first with warning if it fails
Fixed 6
  • Disallow reserving field number INT_MAX
  • Apply path traversal guard to WriteAllToZip() matching WriteAllToDisk()
  • Disable option sub-location mapping in open-source builds
  • Use direct map reflection API when converting message to JSON if repeated field reflection is not valid
  • Stop TextFormat iteration if output stream fails
  • Fix confusing error message for map value type name conflicts
Deprecated 2
  • Add deprecation warnings for py_generic_service, cc_generic_service, and java_generic_service
  • Add deprecation warning for Reflection::GetEnum() and Reflection::GetRepeatedEnum()

From Protocol Buffers

Announcements

  • Protobuf News may include additional announcements or pre-announcements for upcoming changes.
  • Migration Guide may include additional guidance for breaking changes.

Bazel

Compiler

C++

Java

With this release JavaProto no longer uses sun.misc.Unsafe as long as you are utilizing the standard generated code. You should no longer see warnings printed about sun.misc.Unsafe. If you see any issues, please let us know on https://github.com/protocolbuffers/protobuf/issues/20760

Note that the runtime itself still contains references to sun.misc.Unsafe in paths which are exclusively to support Lite generated code. Lite is emitted by a separate code generator which creates generated code optimized for mobile clientside contexts, especially alongside R8 optimizations. Android does not have a timeline to removing sun.misc.Unsafe, and we have found the performance regression too significant to consider removing these paths at this time. It is still TBD for how we can best navigate this mobile vs JVM split on this topic.

Csharp

Objective-C

Rust

Python

PHP

PHP C-Extension

Ruby

UPB (Python/PHP/Ruby C-Extension)

Other

View originalPermalink
How v36.0 went
v36.0-rc2Pre-release

Protocol Buffers v36.0-rc2

Added 3
  • Add json_options.proto and json_enumvalue_options.proto and gencode derived from them to release artifacts
  • Implement json EnumValueName for upb
  • Add json_name enumval support in Java
Changed 2
  • Disable option sub-location mapping in open-source builds
  • Reject Edition 2026 in the PHP generator
Deprecated 3
  • Add deprecation warning for Reflection::GetEnum() and Reflection::GetRepeatedEnum()
  • Emit future warning when mutating GetOptions() in OSS
  • Emit deprecation warning when comparing descriptor containers with unrecognized types in OSS

From Protocol Buffers

Announcements

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

C++

Java

Python

PHP

UPB (Python/PHP/Ruby C-Extension)

View originalPermalink
How v36.0-rc2 went
v36.0-rc1Pre-release

Protocol Buffers v36.0-rc1

Added 6
  • Add bazel targets for standalone plugin binaries
  • Add --<lang>_prefix cli option
  • Add an enforce_proto_limits feature which will be implemented in Edition 2026
  • Add Bazel 9 tests for csharp, hpb, objc, php, python, rust and upb
  • Support assigning repeated scalar fields using Python Buffer API
  • Add a warning for potential OneofDescriptor collisions prior to Q1 2027 breaking changes
Changed 6
  • Make default_symbol_visibility STRICT in edition 2026
  • Enforce proto limits in the descriptor by default for EDITION_2026
  • Use the direct map reflection API when converting message to JSON if the repeated field reflection is not valid
  • Make GetOptions() return immutable options for scalar type in py/upb
  • Align C++Proto JSON behavior on the type.proto path with the descriptor.proto path
  • Make Timestamps.parse() attempt non-lenient parsing first and warning if this fails
Fixed 7
  • Disallow reserving field number INT_MAX
  • Apply path traversal guard to WriteAllToZip() matching WriteAllToDisk()
  • Validate Duration/Timestamp in TimeUtil::FromString against spec limits
  • Stop TextFormat iteration if output stream fails
  • Workaround for attribute handling bug in gcc < 13
  • Fix confusing error message for map value type name conflicts
  • Reject negative size in mergeDelimitedFrom
Deprecated 1
  • Add deprecation warnings for (py|cc|java)_generic_service

From Protocol Buffers

Announcements

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

Bazel

Compiler

C++

Java

Csharp

Objective-C

Rust

Python

PHP

PHP C-Extension

Ruby

UPB (Python/PHP/Ruby C-Extension)

Other

View originalPermalink
How v36.0-rc1 went
v35.1

Protocol Buffers v35.1

Added 1
  • Add cord setters to repeated string fields in C++
Changed 1
  • Break protobuf dependency on Bazel's proto fragment and only respect the Starlark versions of --proto_toolchain_for*
Fixed 1
  • Avoid undefined behavior in upb by switching to the XCT section to run constructors before compiler-generated initializers

From Protocol Buffers

Announcements

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

Bazel

C++

UPB (Python/PHP/Ruby C-Extension)

View originalPermalink
How v35.1 went
v34.2

Protocol Buffers v34.2

Fixed 3
  • Workaround for attribute handling bug in gcc < 13
  • Avoid theoretical overflow of uintptr_t in AddAllLinkedExtensions
  • Fixed two GCC-only issues around upb's generated extension registry
Removed 1
  • Remove unused dependency on aspect_bazel_lib

From Protocol Buffers

Announcements

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

Bazel

C++

upb

View originalPermalink
How v34.2 went
v35.0

Protocol Buffers v35.0

Added 7
  • Implement the Edition 2026 naming style enforcement feature to help prevent field name collisions
  • Add enum to enforce_naming_style feature to avoid field naming collisions in Edition 2026
  • Add proto2::sort and stable_sort utilities optimized for Protobuf containers
  • Add proto2::erase and erase_if utilities optimized for Protobuf containers
  • Add native Abseil flag support to protobuf message types
  • Introduce Arena::UniquePtr and Arena::Ptr smart pointers to better manage memory
  • Introduce Singular trait for types which are allowed as simple fields
Changed 7
  • Move protocopt flag out of the cc dir since it is not a c++-specific flag
  • Change @protobuf//bazel/flags:prefer_prebuilt_proto flag to True
  • Change _opt() accessors to return an std::Option instead of protobuf::Optional
  • Make Message's trait bounds much better for generic use
  • Improve the namespacing selected by rustc used for gencode types in errors
  • Fully qualify scalar types in Kotlin/Native proto generator
  • Extend Abseil flag support for enums to include std::vector<Enum>
Fixed 7
  • Mangle types named XyzView if there is any direct sibling named Xyz
  • Fail writing files in protoc CLI if any file output path is relative
  • Enhance ParseInfoTree to provide location of names and values
  • Add integer overflow check to RepeatedPtrField::MergeFrom
  • Add sanity check for ListFields reflection call
  • Fix edition 2024 visibility checking for service method input and output types
  • Fix data race in Python Free Threading by removing unnecessary SetHasBitForRepeated() call
Removed 1
  • Drop support for Bazel 7

From Protocol Buffers

Announcements

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

Bazel

Compiler

C++

Java

Csharp

Objective-C

Rust

Python

PHP

PHP C-Extension

Ruby

Ruby C-Extension

UPB (Python/PHP/Ruby C-Extension)

View originalPermalink
How v35.0 went
v35.0-rc2Pre-release

Protocol Buffers v35.0-rc2

Changed 1
  • Upgrade Bazel tests to support Bazel 9
Fixed 3
  • Workaround for attribute handling bug in gcc < 13
  • Fixed two GCC-only issues around upb's generated extension registry
  • Avoid theoretical overflow of uintptr_t in AddAllLinkedExtensions

From Protocol Buffers

Announcements

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

Bazel

C++

UPB (Python/PHP/Ruby C-Extension)

View originalPermalink
How v35.0-rc2 went
v35.0-rc1Pre-release

Protocol Buffers v35.0-rc1

Added 7
  • Add support for Bazel 9.x
  • Implement the Edition 2026 naming style enforcement feature to help prevent field name collisions
  • Add enum to enforce_naming_style feature to avoid field naming collisions which will be implemented in Edition 2026
  • Introduce Singular trait for types which are allowed as simple fields
  • Add integer overflow check to RepeatedPtrField::MergeFrom
  • Add sanity check for ListFields reflection call
  • Introduce Arena::UniquePtr and Arena::Ptr as smart pointers to better manage memory
Changed 12
  • Change @protobuf//bazel/flags:prefer_prebuilt_proto flag to True
  • Move protocopt flag out of the cc dir since it is not a C++-specific flag
  • Fail writing files in protoc CLI if any file output path is relative
  • Mangle types named XyzView if there is any direct sibling named Xyz
  • Improve the namespacing selected by rustc used for gencode types in errors
  • Fully qualify scalar types in Kotlin/Native proto generator
Removed 1
  • Drop support for Bazel 7

From Protocol Buffers

Announcements

Bazel

Compiler

C++

Java

Csharp

Objective-C

Rust

Python

PHP

PHP C-Extension

Ruby

Ruby C-Extension

UPB (Python/PHP/Ruby C-Extension)

View originalPermalink
How v35.0-rc1 went
v25.9

Protocol Buffers v25.9

Changed 2
  • Switch the pre22 warning to use CopyOnWriteArraySet
  • Extend gencode compatibility support back to 3.20.0
Fixed 2
  • Avoid toBigIntegerExact in JsonFormat to avoid degenerate parse behavior in the face of large exponents
  • Fix breakage in users of Python protobufs under NumPy 2.3rc1

From Protocol Buffers

Announcements

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

Java

Python

Other

View originalPermalink
How v25.9 went
v34.1

Protocol Buffers v34.1

Added 2
  • Add support for bazel 9.x
  • Add cc_proto_library for MessageSet in //src/google/protobuf/bridge
Changed 2
  • Moved protocopt flag out of the cc dir, since it is not a c++-specific flag
  • Updated CMake dependencies
Fixed 2
  • Avoid toBigIntegerExact in JsonFormat to avoid degenerate parse behavior in the face of large exponents
  • Fixed release_prep.sh script mkdir command to follow INTEGRITY_FILE location

From Protocol Buffers

Announcements

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

Bazel

C++

Java

Python

Other

View originalPermalink
How v34.1 went
v33.6

Protocol Buffers v33.6

Added 1
  • Add cc_proto_library for MessageSet in //src/google/protobuf/bridge
Fixed 4
  • Avoid toBigIntegerExact in JsonFormat to avoid degenerate parse behavior in the face of large exponents
  • Check that readRaw does not accept negative length value
  • Fix that recursion limit is not enforced in PHP
  • Fix PHP 8.5 deprecations

From Protocol Buffers

Announcements

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

C++

Java

PHP

View originalPermalink
How v33.6 went
View all

Discussion

If you publish Protocol Buffers, you can claim this product by proving you administer its repository.