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

Protocol Buffers

Protocol Buffers 27.0

  -  3.1 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 27.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:

Compiler:
- Future-proof edition 2023 against feature value support windows
- Mark deleted fields in descriptor.proto reserved
- Add extension declarations for known features
- Refactored the Java generator into separate packages and targets
- Officially release Editions in 27.0
- Define lifetimes of edition 2023 features
- Implement feature lifetime validation in protoc and the C++ runtime
- Add edition lifetime options for feature specs
- Enable editions support for Java Lite
- Release edition defaults CLI arguments
- Update protoc release to include editions language features protos for Java and C++

C++:
- Future-proof edition 2023 against feature value support windows
- Prohibit using features in the same file they're defined in
- Fix validation checks of implicit presence
- Clarify map behaviors in editions
- Ensure we allocate overaligned types with aligned operator new
- Fix text-format delimited field handling.(29c69ff)
- In debug mode, after clearing oneof messages on arenas, poison them if ASAN
- Allow string_type for Edition 2023
- Breaking change: Ensure we allocate overaligned types with aligned operator new
- Python JSON parser: Ignore invalid enum string values if ignore_unknown_fields is set
- Move java_features.proto to java/core/srce/main/resources
- Add an RAII namespace printer helper for C++ codegen
- Enable editions support for Java Lite
- Add an RAII ifndef helper for C++ codegen
- Clear oneof message fields even on arena on non-OPT builds
- Implement edition 2023 support in all Ruby runtimes
- Release edition defaults CLI arguments
- Deprecate Arena::CreateMessage for OSS
- Open sourcing reflection_visit_fieds
- Fixed the use of c++ keywords within namespace names
- Fix pkg-config metadata for shared abseil on windows
- Add GetStringView() and GetRepeatedStringView() with scratch
- Avoid a 'may be used uninitialized' warning when built with '-c opt'
- Add software prefetch to ByteSizeLong
- Add prefetching in arena blocks
- Rename the includingDefaultValueWithoutPresenceFields and always_print_without_presence_fields to alwaysPrintFieldsWithNoPresence in the C++, Py and Java JSON serializers for consistency
- Remove tags for arena cleanup nodes now that we have dedicated string cleanup blocks
- Avoid unused-parameter warning in field accessor listeners
- Add new always_print_without_presence_fields option to the C++ JSON serializer
- Fail to build descriptor if ctype is specified for non string/bytes fields
- Check ctype() in DescriptorBuilder for edition 2023 and beyond
- Fail building descriptors if ctype is used for fields other than string or bytes
- Fix generation of HasExtension and ExtensionSize functions to restrict to the
- Add the privacy manifest to the C++ CocoaPod

Java:
- Lazily resolve features for proto2 and proto3 for compatibility with old open source gencode that does not invoke feature resolution from gencode static init
- Add java to reserved names to escape extensions to java_. This may break existing references to gencode for extensions named java
- Deprecate building from source with Maven to be removed in 4.28.x
- Split bootstrapped java_features.proto to keep it from leaking out
- Refactored the Java generator into separate packages and targets
- Define lifetimes of edition 2023 features
- Check that size is non-negative when reading string or bytes in StreamDecoder
- Fix text-format delimited field handling
- Move java_features.proto to java/core/srce/main/resources
- Add java_features.proto to kotlin_mvn release
- Enable editions support for Java Lite
- Fix descriptor to access type via getType() s.t. messages using delimited encoding are consistently treated as groups for Java lite
- Make UnsafeByteOperations stable; removing experimental annotation
- Fix features inheritance of oneof fields and extensions and fix/move unit tests to actually run
- Add software prefetch to ByteSizeLong
- Rename the includingDefaultValueWithoutPresenceFields and always_print_without_presence_fields to alwaysPrintFieldsWithNoPresence in the C++, Py and Java JSON serializers for consistency
- Add a new includingDefaultValueWithoutPresenceFields option to the Java parser which is intended to replace the current includingDefaultValueFields

Kotlin:
- Add java_features.proto to kotlin_mvn release

Csharp:
- Regenerate stale files
- Optimize JSON parsing in JsonTokenizer
- Avoid string concatenation when looking up enum values by name
- Cache StringBuilder instances in the .NET JsonTextTokenizer
- Enable Editions in the C# generator
- Runtime support for Protobuf Editions in C#
- Tweak "group to property name" mapping for C#. Under editions, where fields using a delimited encoding have independent field names from type names, we want to use the specified field name
- Ignore invalid enum string values in JSON, when invalid fields are being ignored

Objective-C:
- Optimize startup be reducing selector lookup
- Add the privacy manifest to the ObjC CocoaPod

Python:
- Add temporary alias for system_python.bzl at previous location
- Implement feature lifetime validation in protoc and the C++ runtime
- Fix text-format delimited field handling
- Python JSON parser: Ignore invalid enum string values if ignore_unknown_fields is set
- Fix upb python: DO NOT create empty optional field after sorting empty repeated field
- Enable Protobuf Python version check
- Register Scalar/MessageMapContainerTypes as virtual subclasses of MutableMapping instead of inheriting directly
- Rename the includingDefaultValueWithoutPresenceFields and always_print_without_presence_fields to alwaysPrintFieldsWithNoPresence in the C++, Py and Java JSON serializers for consistency
- Add new including_default_value_without_presence_fields to Python JSON serializer
- Adhere to PEP 8

PHP:
- Don't break the trace
- Fix inconsistent timestamp json encode/decode
- Feat: more readable phpdoc escaping

PHP C-Extension:
- Regenerate stale files
- See also UPB changes below, which may affect PHP C-Extension

Ruby:
- Add bigdecimal to dependencies
- Implement service & method descriptor lookup in Ruby
- Implement edition 2023 support in all Ruby runtimes
- Ruby implement memsize functions for native types
- Moved ObjectCache into an internal module
- [Ruby] Delegate difference, intersection, union from RepeatedField to Array
- Move the RubyMessage.java JSON "include defaults" to use alwaysPrintFieldsWithNoPresence
- Increased the size of the error message buffer by 4x, to 511 bytes

Ruby C-Extension:
- Regenerate stale files
- Implement service & method descriptor lookup in Ruby
- Implement edition 2023 support in all Ruby runtimes
- Ruby implement memsize functions for native types
- Moved ObjectCache into an internal module
- See also UPB changes below, which may affect Ruby C-Extension.
- UPB
- Regenerate stale files
- Setup upb installation with cmake
- Fix text-format delimited field handling
- Print non-extension fields by field number order instead of .proto file order
- Implement service & method descriptor lookup in Ruby
- Implement edition 2023 support in all Ruby runtimes
- Adds mutable extension accessors to the codegen for upb C for getting mutable extension messages
- Ruby implement memsize functions for native types
- Increased the size of the error message buffer by 4x, to 511 bytes

Other:
- MODULE.bazel fixes for protobuf BCR release
- Fix whitespace merge issue in gencode
- Work around windows path length limitations by moving immutable -> full in open source
- Move the windows path length workarounds out of protobuf-ci
- Update src/file_lists.cmake for staleness
- Add system_python to protobuf_deps.bzl
- Migrate bazel tests to protobuf-ci
- Fix bazel cache issues in 7.0.0
- Add redirects for C++ and Java proto rules
- Add redirects for proto rules
- Feat: automate publishing releases to Bazel Central Registry
- Add PrivacyInfo.xcprivacy