Open-source cross-platform data format used to serialize structured data

Protocol Buffers

Protocol Buffers 24.0

  -  2.8 MB  -  Freeware

Sometimes latest versions of the software can cause issues when installed on older devices or devices running an older version of the operating system.

Software makers usually fix these issues but it can take them some time. What you can do in the meantime is to download and install an older version of Protocol Buffers 24.0.


For those interested in downloading the most recent release of Protocol Buffers or reading our review, simply click here.


All old versions distributed on our website are completely virus-free and available for download at no cost.


We would love to hear from you

If you have any questions or ideas that you want to share with us - head over to our Contact page and let us know. We value your feedback!

What's new in this version:

Announcements:
- Protobuf News may include additional announcements or pre-announcements for upcoming changes

Compiler:
- Drop support for Bazel 5
- Allow code generators to specify whether or not they support editions
- Release prototype of Protobuf Editions
- Compiler: Correct depfile generation when there are no outputs
- Add dllexport_decl for generated default instance
- In TSan mode, detect concurrent mutations of repeated/map fields
- Add a workaround for GCC constexpr bug
- Turn on the table-driven parser by default, as it is no longer experimental
- Shrink code size of generated protocol buffer code via a few
- Implement enforcement of target constraints
- Fix(libprotoc): export useful symbols from .so

C++:
- In OSS mode omit some extern template specializations. We have seen reports of compilers falling over due to the size of translation units.
- Automated rollback of
- Fix building shared libraries on MinGW-w64
- Enable TSan validation to detect when a mutable accessor of a message is called concurrently with another accessor on the same message, which is a data race.
- Release prototype of Protobuf Editions.
- Enable TSan validation to detect when a mutable accessor of a message is called concurrently with another accessor on the same message, which is a data race.
- Fix case of locality optimizer being wrong for split repeated fields and add a check that the optimized order has the same size as the unoptimized order.
- Enable TSan validation to detect when a mutable accessor of a message is called concurrently with another accessor on the same message, which is a data race.
- Mark single arg ctor explicit in DynamicMessageFactory.
- Enable TSan validation to detect when a mutable accessor of a message is called concurrently with another accessor on the same message, which is a data race.
- Let ParseRepeatedStringOnce call AllocateFromStringBlock()
- Check next tag in MpRepeatedMessage
- When parsing repeated primitives, append to a tmp array on stack
- Add dllexport_decl for generated default instance
- TextFormat::ParseFieldValueFromString now takes absl::string_view as input instead of const std::string &
- In TSan mode, detect concurrent mutations of repeated/map fields
- Use the same ABI for static and shared libraries on non-Windows platforms
- Replace ColdChunkSkipper with iterator-based approach
- Check invalid type_id after casting it to uint32_t.
- Strengthen assertions on reflection methods.
- Add assertions to reflection methods.
- Fail to parse message sets if type_id is zero.
- Enable the use of [SU]Int32Size and EnumSize templates for AArch64
- Add a workaround for GCC constexpr bug
- Add ABSL_ATTRIBUTE_LIFETIME_BOUND attribute on Map, RepeatedField and RepeatedPtrField
- Turn on the table-driven parser by default, as it is no longer experimental
- Fix: avoid warnings on MSVC
- Fix: avoid warnings on Windows
- Shrink code size of generated protocol buffer code via a few
- Fix(libprotoc): export useful symbols from .so
- Forbid embedded nulls in json_name
- Implement option retention for C#
- Implement enforcement of target constraints
- Make RepeatedField and RepeatedPtrField be destructor skippable for proto arenas.
- Update MessageDifferencer to conditionally force comparing additional fields while doing PARTIAL comparison
- CMake: Use the correct jsoncpp target name in static builds
- Fix: missing -DPROTOBUF_USE_DLLS in pkg-config
- Avoid using string(JOIN..., which requires cmake 3.12

Java:
- Put a 4k limit on preallocation to prevent OOM from malformed inputs
- Mark OneofDescriptor.isSynthetic() deprecated
- Use ProtobufArrayList for repeated bytes field. Presize primitive arrays for fixed-length primitives.
- Add protobuf-kotlin into protobuf-bom
- Handle clear for Java proto3 optionals
- Deps: Update Guava to 32.0.0
- Migrate repeated numeric fields to use bit field to track presence instead of using it to indicate the field mutability to potentially skip work on the field during build operations.
- Automated rollback of commit

Csharp:
- [C#] Replace regex that validates descriptor names