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

Protocol Buffers

Protocol Buffers 33.3

  -  3.3 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 33.3.


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!

Why is this app published on FileHorse? (More info)

What's new in this version:

- 25.x 202311012212
- merge 25.x to main
- Update utf8_range subtree
- Adds "Prototiller Requirements for Editions" to the GitHub code repository
- Support the profile proto analyzer to analyze some statistics of a profile
- upb: lock down upb_MiniTableExtension
- Cleanup "mergeable" types
- Fix typo in comment.
- upb: clean up and lock down the internal oneof accessors
- upb: inline upb_Message_New()
- Automated rollback of commit 3c75c33
- Internal change
- upb: implement upb_MiniTable_MapKey() and upb_MiniTable_MapValue()
- Remove unused headers.
- Fix DurationToMilliseconds mult overflow
- Cleanup mutable thunk usage in singular_message
- Add benchmark for 32 bit repeated fields
- Move repeated tests into their own file
- Internal changes
- Implement Maps for strings
- Extend the weak descriptor message feature to include extensions
- Add coverage for default_string and default_bytes in test_default_accessors
- Fix some of the reflection based algorithms to handle Map entries properly.
- Remove dead code.
- Breaking change: Remove deprecated syntax APIs
- Add a trivial 2023 edition test case for Rust
- Remove descriptor_legacy usage from C++ runtime
- Remove descriptor_legacy usage from compiler code
- Improve codegen for address pinning
- upb: delete upb::SymbolTable typedef
- [ObjC] Improve handing of the WKT ObjC Category additions
- Add some missing includes
- Make LazyField::ByteSizeLong consistent with eager message
- Internal change
- Remove iteration and item mutators from Repeated
- Remove PrimitiveMut::clear
- Fixed UTF-8 TextFormat output to protect against invalid UTF-8 in string fields
- Breaking change: Remove C++ legacy syntax descriptor APIs
- Breaking change: Promote ExtensionRange to a proper class
- Add submessage support for string_mut
- Breaking change in 26 release: Remove msg.UnknownFields() support in pure python and cpp extension.
- [Python/upb] Fixed SEGV when attempting to delete a message attribute
- upb: reverse the polarity of the MiniTableField untyped data accessors
- upb: tag _upb_Message_AddUnknown() as UPB_PRIVATE()
- Internal Code Change
- Bump rules_cc to 0.0.9 for Bazel 7 support
- upb: tighten up the upb_Arena code
- upb: implement upb_Message_FindExtensionByNumber()
- Minor cleanups to conform to clang-tidy, etc.
- Avoid copies in proto map reflection.
- Remove separate setters for singular scalars
- Add submsg support for bytes_mut
- Move the descriptor message part of ClassData into a subclass and keep a bool
- Add minimization for enum_type.
- Move the info about perfect derive to shared.rs
- Use short name for view primitive in the oneof enums (i32 instead of View<'msg, i32>)
- Slightly relax JSON integer parsing tests to handle a wider range of runtime behaviors around
- Breaking change: Remove deprecated std::string error collector overrides
- Internal change
- Replace the fake ParseMessage/ParseGroup function calls in with ones that accept a lambda. It allows the callers to drop the mock "message" types that only exist to have an _InternalParse function in them. It also gives more freedom to the caller to do things like force inlining when it matters.
- RepeatedPtrField clears elements lazily.
- Make the utf8_range implementation just in C
- Internal change
- Allow legacy_closed_enum feature on enum map fields.
- refactor: collapse submsg accessors for bytes and strings
- Automated rollback of commit 1db8ed4.
- Simplify the type bounds on PrimitiveMut via type erasure
- Add RepeatedMut::clear, free for owned Repeated
- Improve thread safety docs/bounds for PrimitiveMut
- Add Bazel 7 test points.
- Swap order of masks when assigning bytes to byte[] elements.
- Pin bundler version to 2.4.22 for Ruby 2.7 support.
- upb: stop generating hazzers for repeated fields
- Implement ExactSizeIterator and FusedIterator for repeated fields.
- Allow friendly use of Reflection::MutableRaw(), Reflection::MutableRawNonOneof().
- Automated rollback of commit 481c4fe.
- Remove unnecessary duplicative +Sized
- Expose primitive internals just enough for enums
- Expose repeated _unchecked accessors, interior accessor
- Remove uses of incompatible_use_toolchain_transition.
- Migrate all remaining instances of assert_eq! to googletest-rust sans strings
- Decouple Context from the Descriptor
- upb: tag upb_Array.size as UPB_ONLYBITS()
- lzcnt enabled varint size calculation for proto
- upb: upb_Message_Extension -> upb_Extension
- upb: tag upb_MiniTableField:offset as UPB_ONLYBITS()
- upb: simplify upb_Map_Insert() down to upb_Map_Set() where possible
- Add allow dead_code to the oneof case enum.
- Remove uses of incompatible_use_toolchain_transition.
- Allow NewStringElement inlining.
- [C#] Fix trimming warning in JSON formatter enum handling
- BREAKING CHANGE in v26: check if Timestamp is valid.
- Update lite_unittest to pad varints before calling internal::VarintParse()
- upb: add 'static' to several Python map functions
- upb: eliminate :mini_table_internal
- #cleanup Drop MapWithKeyOps::Value type in favor of Proxied::View.
- Change Thunks that take by ref to take by pointer.
- Remove dead code.
- Implement SettableValue[u8] for SerializedData
- Do not define a const static variable as constexpr. While this is legal it
- Implement v0.6 enum definitions
- Breaking change: remove support for PHP generic services
- Clarify error language for prefix-conflicting enum values
- Automated rollback of commit 1250d5f.
- Small improvements:
- upb: stop returning void from void functions
- upb: add more functions to bits/mini_table_field.h
- Optimized binary/JSON parsing to no longer copy input data into a temp buffer.
- upb: add a non-void typedef for upb_Message
- Fixed breaking ARM tests by properly aligning default options.
- TextFormat should always escape ASCII 127 (DEL).
- Bump major versions in version.json for C++, Java, Python, PHP, and Ruby in preparation for v26.x release in January.
- upb: tighten up and lock down upb/wire/
- In Ruby repeated fields, each_index actually iterates over the index
- upb: the triumphant return of upb/mem:internal
- upb: add :test_srcs targets for cmake on GH
- upb: make all mini_table/ includes unidirectional
- Added explicit to a single-arg constructor to fix a ClangTidy warning.
- upb: restore the mini_table:internal target
- Update Ruby GHA to test against Ruby 3.3.
- upb: start consolidating the upb/message/ build targets
- Enable Rust conformance test on proto3 message.
- Fix warning from missing (void) on a 0-arg function.
- Disable MacOS C++ Cmake test for now.
- Fixed compiler warnings in the Ruby C extension.
- BREAKING CHANGE in v26: check if Timestamp is valid.
- Update Ruby GHA to test against Ruby 3.3 in Linux / MacOS / Install and FFI combinations.
- upb: clean up some of the includes in upb/message/
- Hook up the edition2023 cases to Rust conformance test.
- Removed the unused "JSPB (internal)" from conformance the conformance test suite.
- Internal Code Change
- upb: delete the aliases for base:internal and mini_descriptor:internal
- Fix textfmt typo: vaid -> valid
- Fix some non-breaking issues with rust gencode.
- Added JSON parsing/serialization to benchmark
- Rename Thunk to ThunkName
- Automated rollback of commit 0bcc8ef.
- Fix layering check for usage of gtest
- Fixed non-conformance in upb JSON enum decoding when ignoring unknown enum values.
- upb: make :wire internal headers private
- Optimize AddAllocatedForParse function.
- upb: clean up and consolidate the upb/message/ build targets
- upb: factor out message internal data pointers
- upb: delete the aliases for upb:hash and upb:lex and upb:reflection_internal
- upb: lock down the internal headers for upb:wire_reader
- upb: implement _upb_Message_ClearOneofCase()
- Make Rust Conformance skip non-wire output test cases by using an overlay proto.
- impl SettableValue for MsgView
- Include JSON output tests with Proto2 messages in the conformance test suite.
- upb: fix Ruby bug which allowed map.delete(key) on a frozen map
- Fix begin iterator for empty arrays.
- Internal Code Change
- Fix typo in cache-clearing workflow
- Add inner verification code to detect accessors missing required annotations.
- Breaking Change: Dropped support for Ruby DSL, as previously announced.
- Add manual epilogue for vectorized loop, and use the SIMD loop for 64 bit ints when AVX2 is available.
- internal change
- Breaking change: make protobuf comply with the C++ layering check
- upb: move libupb.so from third_party/upb/ to third_party/dart/pb_runtime/
- Avoid dereferencing in operator->.
- IWYU and format fix.
- [Ruby] Fixed various weirdness with Message#to_h
- Fix lowerCamelCase to UpperCamelCase (per Cpp style guide)
- Breaking Change: freeze is now recursive, affecting all sub-messages, maps, and repeated fields.
- Skip or adjust tests to work with PROTOBUF_FORCE_SPLIT.
- BREAKING CHANGE in v26: Remove Deprecated APIs that add non top descriptor.
- BREAKING CHANGE in v26: Reject extend repeated field with none iterable (Raise TypeError)
- Automated Code Change
- Automated Code Change
- Automated Code Change
- BREAKING CHANGE in v26: Remove RegisterExtension in message class
- Extend Proto2 JSON test cases to cover more of the preexisting Proto3 JSON cases.
- Internal change
- Remove edition getter from python descriptor APIs
- Add "extend repeated with nothing" tests back for upb python
- Update comment of "lazy" field option to reflect eager verification.
- Breaking Change: fixed json_encode/json_decode to use the message's pool.
- Add to Proto2 JSON conformance test failure lists for C#, JRuby and PHP C
- Add self pinning on all message accessors for weak descriptor messages.
- Fix nested enum generation when enums are the sole nested types
- Change the ids used the unset field tracking to be Message+FieldDescriptor.
- IWYU cleanup.
- Automated Code Change
- Use raw string for Emit
- Remove unused PROTOBUF_FORCE_RESET_IN_CLEAR
- Annotate some Kotlin generated protobuf code.
- upb: fix some more compiler warnings in Ruby about missing return values
- upb: add 'static' to some mini_descriptor decoder functions
- #refactor Simplify maps through the new ProxiedInMapValue trait
- upb: distinguish between fields and extensions in the public clear() accessors
- upb: remove duplicate typedef for upb_TaggedMessagePtr
- Add SPLIT test coverage to :analyze_profile_proto_test and disable force_split.
- Add enum qualified path naming fns
- Expand PrimitiveRsTypeName to work with non-primitives, rename, refactor
- Move enum value name calculation
- Support enums in DefaultValue
- Breaking Change: Removed syntax and added has_presence/is_packed.
- Implement singular enum accessors
- Implement repeated enum accessors
- Change MsgMut's _mut() accessors to use (&mut self) instead of (&self)
- upb: tag upb_Array.data as UPB_ONLYBITS()
- Allow friendly use of Reflection::MutableRaw(), Reflection::MutableRawNonOneof().
- Print usage count if it's rarely used.
- Adds mutable extension accessors to the codegen for upb C and adds a ::protos::MutableExtension method to upb C++ for getting a mutable extension.
- Breaking change: disallow incorrect ctype usage
- Make upb::Status final
- upb: normalize some more function names
- upb: disable the Fast Table CI tests on GH
- Automated rollback of commit 0ce457f.
- Protobuf Java cross-domain Poison Pills.
- Add kUpb_DecodeOption_AlwaysValidateUtf8 decode option, to force UTF-8 validation of proto2 strings.
- Breaking change: remove const GetArena method on RepeatedPtrField
- Update to call descriptor outer class's getDescriptor() method instead of accessing internal descriptor variable directly.
- Remove public access to Java Edition APIs e.g. getEdition(), getEditionName().
- Remove deadcode GenerateDescriptorInitializationCodeForMutable from Java code generator.
- Mint Edition 2024.
- Add proto2::VisitFields() API.
- Fix typos in printer.h
- #rust #unsafe Fix unsound cast of RepeatedMut to RepeatedView
- Improve user friendliness of oneof mutator types
- Pass crate mapping from Bazel to protoc
- cleanup: reduce warnings on MSVC builds
- Fix missing ! making it so untyped_message would trigger a invalid Utf8 error IFF the string was valid UTF8.
- Add upb_Array_GetMutable accessor
- singular_message: rename prefix to msg_type for clarity
- Edit comment in empty_repeated suggesting it's a thread-local value
- Skip generating oneof message fields referencing other crates
- Disable linkage-monitor test in anticipation of a breaking (major version) java release: 4.26
- upb: finish locking down the upb_Array internals
- Temporarily turn off extension support for weak descriptor messages.
- upb: implement upb_Message
- upb: fix gencode bug with Map<*, bytes>
- Remove edition getter from C++ descriptor APIs
- Breaking Change: Validate UTF-8 in string setters, as previously announced.
- Minor cleanup: IWYU, etc.
- Breaking Change: remove unnecessary overloads of methods:
- Split off file from //src/google/protobuf/testing
- #rust #protobuf Refactor maps to make ProxiedInMapValue independent of the runtime
- Remove LegacyDescriptorsUtil.java and JRuby's use of legacy descriptor APIs
- Breaking Change: Remove obsolete runtime internalBuildGeneratedFileFrom which was for backwards compatibility with old gencode.
- Read crate mapping in protoc
- Breaking Change: Remove unused overload of AbstractMessageLite.addAll that worked on a Collection instead of a List.
- Internal changes.
- Internal versioning changes
- Make str(msg) in Python print raw UTF-8 strings. Only invalid UTF-8 is escaped.
- upb: delete upb:upb, upb:collections, upb/upb.hpp, upb/collections/
- Return RepeatedMut<c_int> for cpp cast_enum_repeated_mut
- Internal Protobuf changes
- Add Msg::as_{view,mut}()
- Internal versioning changes.
- upb: move upb_Message definition back into upb/message/
- Make rust_crate_mapping flag optional
- Remove redundant [[noinline]].
- Reuse Message's accessor definitions on Msg+MsgMut+MsgView
- Avoid integer-to-pointer cast in protobuf SerialArena
- #rust #protobuf Implement bytes as map values
- Update the r# prefixing logic:
- Also emit the oneof accessors into $Msg$Mut and $Msg$View
- Add rust bindings for upb_Array_GetMutable
- Shorten our license headers into an abbreviated form that references LICENSE instead of including it in full.
- Reserve and extension number in proto2.FeatureSet for Go
- Implement ProxiedInRepeated for Messages
- Move repeated_scalar.cc to repeated_field.cc
- Add Repeated accessors
- Fix indentation of a macro in simple_nested_test.rs
- Implement IntoIterator for &Repeated{View,Mut}
- Initialize scaffolding for ProxiedWithPresence for Messages
- upb: add upb_MiniTableExtension_CType()
- Use self for all methods on views, return 'msg
- Rename 'a to 'msg in message gencode
- Remove Deref from MapMut
- Simplify format variables in singular_string
- Allocate an editions FeatureSet extension for
- Add missing Protobuf Java version checks for enums and missing version info when separate Java files are generated.
- Use char indexOf rather than String, which can have a fast path implementation
- Change the way pinning and weak references are done in the Weak Descriptor
- Wrap C++ headers in #ifdef __cplusplus.
- Don't emit redundant enum name gencode when has_reflection is false.
- Make sure the pb_defaults section is never empty instead of using attribute((weak)). Not all platforms support having a never defined weak symbol.
- Raise minimum PHP version to 8.1, due to PHP 8.0 EOL per
- Update JSON parser to reject overlong UTF-8 encodings
- Use self accessors for accessing maps in views
- Add support for repeated strings/bytes
- Stop codegenning module for .proto package
- Bump python version to 3.9 for gcloud 460.0.0
- Correct raw identifier terminology in rust_keywords
- Proper fix utf8 command line arguments
- Breaking Change: Stop generating the "newInstance" method. This is not used anymore.
- Depend directly on cc_proto_aspect in rust_cc_proto_library
- Correct type_resolver_util to set syntax=proto3 instead of syntax=proto2 on proto3 files.
- Breaking Change: Use Editions features in Java full runtimes.
- Checks that only lite or full binding could exist in a process.
- Mark descriptor features as volatile to avoid data races in double-checked locking
- Add private constructor for JavaEditionDefaults template
- Update to latest absl release 20240116.0
- Turn on version checks for Java Lite enum in OSS.
- Breaking Change: Remove unused helper methods for creating new mutable arraylists.
- Refactored a few protos:: methods to no longer access upb_Extension directly.
- Internal changes.
- internal change
- upb: tag _upb_Message_Getext() as UPB_PRIVATE()
- upb: tag _upb_Message_GetOrCreateExtension() as UPB_PRIVATE()
- upb: upb_MiniTable_GetOrPromoteExtension() no longer returns a (upb_Extension*)
- Strip nonfunctional codegen diff from line number in Javadoc for deprecated fields, which may be shifted due to added features post-Editions transform
- Strip leading spaces from Java codegen doc comments. This is better for consistency, and prevents nonfunctional codegen diffs for editions transforms post-proto formatting.
- Rename IsOptional to IsExplicitPresence and make the types.proto impl match the preexisting descriptor.h impl in returning true for proto3 messages which are not explicitly marked 'optional'.
- upb: upb_Message_ExtensionByIndex() no longer returns a (upb_Extension*)
- upb: remove the last remaining direct upb-internal deps from upb/protos/
- Add TODO related to runtime dependency on Rake
- Fixed a SEGV when deep copying a non-reified sub-message.
- Breaking Change: Made text_format output default to UTF-8.
- upb: fix the map encoder to stop dying under ubsan
- Fixed a bug in cl/600990001 -- we need to propagate the as_utf8 parameter that was passed.
- Also apply r# prefix to crates whose names are reserved keywords
- Rollback version validations in Protobuf Java Lite.
- Fixed a bug when deep copying a map field with a closed enum value.
- Update minimum macOS to 10.15.
- Move MessageVTable to p b r from p b i
- Minor cleanup: IWYU, style guide, etc.
- upb: remove reflection:internal as a dep in upb_generator/
- Automated rollback of commit f7dbd38.
- upb: remove base:internal as a dep in upb/benchmarks/
- Fix bug number in a TODO
- Internal change
- #protobuf #rust Generate fields with imported types
- Support map field
- upb: upb_Message_FindExtensionByNumber() no longer returns a (upb_Extension*)
- Deduplicate vtables for mutators
- Remove the space before a comma in singular_string
- upb: add 'static' to UPB_FORCEINLINE()
- Update internalUpdateFileDescriptor() to synchronize setProto() and resolveAllFeatures() to avoid data races.
- Improve error message in the crate mapping code.
- Internal changes
- Small fixes for accessing upb from Kotlin/Native.
- Minor cleanup: IWYU, etc.
- [ObjC] Use a local to avoid warnings in 32bit builds.
- Re-enable watchOS cocoapods validations
- Minor cleanup: IWYU, clang-tidy, etc.
- Small fix for accessing upb from Kotlin/Native
- upb: attempt to reduce the direct use of UPB_PRIVATE() fields
- Remove unused mut specifiers
- Remove superfluous unsafe block
- Extension set uses (relatively) new RepeatedPtrField Message methods.
- Fix generation of HasExtension and ExtensionSize functions to restrict to the
- [ObjC] Add the privacy manifest to the ObjC CocoaPod.
- Fail building descriptors if ctype is used for fields other than string or bytes.
- [CPP] Add the privacy manifest to the C++ CocoaPod.
- Check ctype() in DescriptorBuilder for edition 2023 and beyond.
- Internal change
- Use consistent thunk prefix between generator and cpp.rs
- Add a new 'includingDefaultValueWithoutPresenceFields' option to the Java parser which is intended to replace the current 'includingDefaultValueFields'.
- Internal change
- Implement and use field entries for _mut
- Implement _opt for messages
- Fix descriptor build bug for cyclic extension references.
- Internal version check changes.
- upb: use upb_MessageValue in upb_Extension
- Add SettableValue for owned Msg.
- When using profiling information and weak descriptors use uniquely named
- Support proto_library targets that contain '-'
- Change Any::PackFrom to avoid bringing the full runtime.
- feat: more readable phpdoc escaping
- Fail to build descriptor if ctype is specified for non string/bytes fields
- Fix inconsistent timestamp json encode/decode
- Increased the size of the error message buffer by 4x, to 511 bytes.
- Add more test coverage exercising msg_mut and msg_opt
- Add new including_default_value_without_presence_fields to Python JSON serializer.
- Breaking Change: Removed obsolete/duplicate setup.py from Python.
- Automated rollback of commit 2b86c3d.
- upb: remove the default arg from upb_Message_GetMessage()
- Add new 'always_print_without_presence_fields' option to the C++ JSON serializer.
- Avoid unused-parameter warning in field accessor listeners.
- Add a new 'includingDefaultValueWithoutPresenceFields' option to the Java parser which is intended to replace the current 'includingDefaultValueFields'.
- Make map insert return if the value was newly inserted
- Turn on TDP table generation for messages with weak=true fields.
- Remove tags for arena cleanup nodes now that we have dedicated string cleanup blocks.
- Add "string_type" to CppFeatures.
- Simplify (and optimize) Descriptors.FileDescriptor.latin1Cat.
- Automated rollback of commit 531d437.
- Disable test that seems to be using pre-Java 8
- Automated rollback of commit 0ee34d3.
- Force descriptor initialization of dependencies before internalUpdateFileDescriptor().
- Don't break the trace
- Remove the overlay hack from Rust conformance test now that we can use the enum directly.
- Rename the 'includingDefaultValueWithoutPresenceFields' and 'always_print_without_presence_fields' to 'alwaysPrintFieldsWithNoPresence' in the Cpp, Py and Java JSON serializers for consistency.
- Internal change
- Prohibit lazy map fields.
- #protobuf #rust publicly export ParseError
- Add validation for string_type and ctype under edition 2024 and over.
- Move the RubyMessage.java JSON "include defaults" to use alwaysPrintFieldsWithNoPresence.
- use "proto3_optional" option as signal that a field has presence.
- Automated rollback of commit 690f100.
- Consolidate PhantomData in maps
- Fix crash found by fuzzer in descriptor.cc
- Improve field publicity for repeated/maps
- protobuf: Replace NULL with nullptr in terra cpp
- Add prefetching in arena blocks.
- Only consider scalar submessages eligible for explicit lazy.
- Implement map iteration
- Remove lazy=true from repeated fields.
- Minor cleanup: IWYU, shoud_split() instead of ShouldSplit(...).
- Internal change.
- Remove RepeatedIterMut
- Add RepeatedIter to public protobuf items
- Internal change
- Copy string/bytes in upb when pushing/setting/copying
- Correct ExactSizeIterator impl for RepeatedIter
- Validate that map keys are copied
- Adding Edition 2023 z_generated_example.
- Use the post-loop hook to invoke the tracker when parsing via TcParser.
- Updated freshness on several docs, and made some minor updates to the content.
- Fix unnecessary generation of PostLoopHandler when tracking is on, but
- Add a test that when using an Arena from a single thread, objects are destroyed in reverse order from construction.
- Rewrote the comment about the java_string_check_utf8 option to fix a few errors and omissions.
- Add missing alias targets for C++ util libraries
- Minor cleanup: IWYU, clang-tidy.
- C#: Ignore invalid enum string values in JSON, when invalid fields are being ignored.
- Remove rust proto libraries from the editions/BUILD file.
- upb: Simplify inline functions in mini_table/ and mem/ and wire/ and message/
- Minor cleanup: whitelist --> allowlist
- Escape _from_dir in install.cmake for regex special characters (e.g. c++) before REGEX REPLACE.
- Minor cleanup: IWYU, etc.
- Implement support for messages as map values
- Add direct-to-table support for MessageSet types.
- Protoc Internal changes.
- Fix msan issue in Map<bool,*>
- Rename use_cpp_toolchain in protos/bazel/cc_proto_library.bzl, for consistency.
- upb: implement _upb_Arena_Contains()
- Correct error message to indicate user should provide experimental-codegen=enabled to --rust_opt
- Fix CMake regex escaping.
- Removed obsolete TODO.
- Up the upb scratch space from 64000 bytes to 65536 bytes since 64 KiB is the maximum supported message size in upb.
- No longer allow minidescriptors to accept message fields tagged as proto3 scalar (implicit presence)
- Add a TcParseTable pointer in ClassData and implement the default
- Add 26.x to staleness checks
- Add zero-length deserialize unit test.
- Moved ObjectCache into an internal module.
- Avoid using ctype's isalpha.
- Add helper function to generate stub TcParse tables with only a single handler.
- Add edition_message_unittest.
- Ruby implement memsize functions for native types
- Use VIEW fields by default for edition_unittest.proto.
- Internal change
- Return a non_null::dangling() for 0-sized allocations.
- Replace ImplicitWeakMessage::_InternalParse with a TcParse table implementation.
- Tweak BUILD setup to make the layering check change less disruptive
- Internal
- Check if the number of seconds is valid for a timestamp before creating a
- Make PROTOBUF_TSAN_READ/WRITE into functions to reduce the cost of macros in large translation units.
- Verify more than one message set entities.
- Allow the dispatcher in DescriptorPool to be set to nullptr.
- Rolling back while figuring out why some tests failed.
- Add serialize(&self) on MsgView and MsgMut (in addition to the preexisting owned Message)
- #rust #protobuf #concurrency Make messages Send
- USAGE_CHECK stringifies the second argument and thus it doesn't need to be quoted.
- Avoid all leading/trailing doc comments during codegen tests.
- Avoid all leading/trailing doc comments during codegen tests.
- Add no-op support for the experimental_strip_nonfunctional_codegen parameter.
- Update error message to clarify what needs to happen for tests to run
- Fix unused 'use' warning in simple_nested_test.rs
- Internal change
- [ObjC] Small formatting tweaks.
- Prohibit unverified lazy repeated fields.
- Rename FieldBeneratorBase::descriptor_ to field_.
- Automated Code Change
- Remove spammy logging message from rust protobuf codegen
- Introduce a RustFieldType enum which captures the primitive types that a rust field can be.
- Improve pinning assembly when using a clang that supports it.
- Be less aggressive about prefetching in bytesizelong
- Remove the override for _InternalParse from Message and inject the custom
- Point to released versions in Java Protobuf (lite) READMEs instead of the the next, unreleased version.
- Use consistent name for the "get item from untyped map iterator" thunk
- Use a 64K static for zeroed scratch space in upb
- [ObjC] Fix potential -Wstrict-prototypes warning.
- Add C# to the list of codegen test languages for Editions.
- Replace call to proto2::Arena::CreateMessage with Create.
- Transpose the map thunk macros, relocate to header file
- Drop MapEntry::_InternalParse and use the TcParser generated version instead.
- Deprecate Arena::CreateMessage internally first.
- Fix comment error.
- Fix features inheritance of oneof fields and extensions and fix/move unit tests to actually run.
- Add states to support "ignore unparsed".
- Automated Code Change
- Automated Code Change
- Automated Code Change
- Internal change
- Optimize Reflection::ScratchSpace::CopyFromCord().
- Rename EagerParseLazyField to EagerParseLazyFieldIgnoreUnparsed
- Allow base64 encoding of embedded edition defaults.
- Enable C++ tests for Bazel 7 on mac
- 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.
- Make UnsafeByteOperations stable; removing experimental annotation.
- Actually fail if staleness fail
- Use parameterized testing.
- Force descriptor initialization of dependencies at the beginning of the static init block.
- Clean up another Rust protobuf logspam message
- Automated rollback of commit 5993e86.
- Workaround SERVICE_STOP macro definition on WIN32.
- Run C# tests with non-Bazel protobuf-ci actions.
- Runtime support for Protobuf Editions in C#.
- Enable Editions in the C# generator.
- Do not default to private visibility in rust_proto_library internal alias
- Make internal::EagerParseLazyFieldIgnoreUnparsed() internal to google3.
- EagerParseLazyField for const Message&
- Use parameterized tests for easier extension.
- Internal changes.
- Automated Code Change
- Internal change
- Update setup-php to 2.30.0 and re-enable macOS PHP 8.2 tests.
- Document the return value of upb_Message_SetField.
- Raw access to oneof LazyField must be LazyField*.
- Add "DO NOT SUBMIT" to Protobuf c++ gencode.
- Fix missing port_def/port_undef includes
- Fix descriptor to access type via getType() s.t. messages using delimited encoding are consistently treated as groups for Java lite.
- Add a unittest locking down presence behavior for proto3 extensions
- Adds mutable extension accessors to the codegen for upb C for getting mutable extension messages.
- Register Scalar/MessageMapContainerTypes as virtual subclasses of MutableMapping instead of inheriting directly.
- #protobuf #rust Build gencode files when building a rust_proto_library target
- #rust #protobuf Implement custom Debug for C++ kernel
- Introduce Python Protobuf runtime version.
- Put an explicit warning about the incovenience of working against main and a recommendation to use a supported release in the root readme.
- Generate an error early while parsing if the message nesting is too large. It
- Move Protobuf C++ versions out of port_def.inc to runtime_version.h so that the version can be used for preprocessing by users.
- Use the simpler set_x() instead of x_mut().set() in the Rust conformance test.
- upb: delete array_split64.h
- Add proto full name support for tracing.
- Automated rollback of commit 976a6eb.
- Enable profile_driven_cluster_aux_subtable.
- Fix has_presence to account for proto3 extensions in C++.
- Minor cleanup: IWYU, clang-tidy, etc.
- Fix has_presence to account for proto3 extensions in Python.
- Improve pinning assembly when using a clang that supports it.
- Fix has_presence to account for proto3 extensions in Java.
- Move EagerParseLazyField* APIs to proto2 namespace
- Add "NO CHECKED-IN PROTOBUF GENCODE" to Protobuf C++ gencode.
- Add api to trace message allocations.
- Fix upb_MiniTable_SetFullName signature.
- Fix dynamically generated MapEntry parser to have the same behavior as the
- Document upb_Message_SetMessage.
- Check in upb bootstrap gencode for future cmake usage
- Fix staleness regen script that now silently fails
- Include minitable codegen in checked-in cmake files
- internal change
- Exclude checked-in descriptor gencode from source wheels.
- Automated Code Change
- Automated Code Change
- upb: add 'options' arg to upb_Message_IsEqual()
- Release edition defaults CLI arguments.
- Enable Editions in preparation for 27.0 release.
- Make types for 'inner' (runtime-specific) owned Repeated and Maps
- Fix memory leak in the arena when interacting with a type that derives from
- Add basic upb cmake support.
- upb: delete upb_Map_Delete2()
- Automated rollback of commit ac6c541.
- Fix warnings about unnecessary 'use' due to Box, Send and Sync being defined in the language prelude.
- Add Arena tracing handlers.
- Remove the _mut() accessors from primitive fields (both explicit presence where they were FieldEntry and implicit presence where they were PrimitiveMut).
- Remove the public _mut() accessors from string fields.
- Change .submsg_mut() to return $Msg$Mut instead of FieldEntry<$Msg$>.
- Automated Code Change
- Remove remaining uses of ctype, which has locale issues.
- Add "NO CHECKED-IN PROTOBUF GENCODE" to Protobuf Java gencode.
- Disable TSAN tests due to what appears to be a sanitizer bug
- Fix incorrect definition of field label getter in FFI.
- IWYU, clang-tidy, etc.
- Automated Code Change
- Implement edition 2023 support in all Ruby runtimes.
- Remove extra whitespace line in JavaEditionDefaults template
- Fix locale issue with ::tolower in PHP generator
- Declare and define explicit template instantiations, since the required specializations are needed at a point where the primary template is not defined.
- Downgrade our sanitized builds to ubuntu-20.
- Internal changes
- Clear oneof message fields even on arena on non-OPT builds.
- upb: use mapentry() in the code generator
- C#: Avoid string concatenation when looking up enum values by name.
- Removed unused OneofMutEnumRsName function
- upb: add containing_type() methods to MessageDefPtr and EnumDefPtr
- Fix Rust Proto cpp-kernel map insertion behavior to better match Rust's std::HashMap and the upb-kernel behavior of "insert replaces the old value"
- Add a go/pytype annotation on Duration.toTimedelta.
- Suppress a warning about a class initializer cycle
- Change message-nesting namespacing to be some_msg:: instead of SomeMsg_::
- Add has_field() accessors for any field that supports presence.
- Internal change
- ci: add visionOS pod lib lint check
- Internal changes
- Enable Protobuf Python version check.
- Internal changes
- Add "NO CHECKED-IN PROTOBUF GENCODE" to Protobuf Python gencode.
- Internal change
- Fix syntax error in test_objectivec.yml
- Disallow all feature types except enum and boolean.
- Clear oneof message fields even on arena on non-OPT builds.
- Automated Code Change
- upb: add upb_FieldDef_LayoutIndex()
- C#: Optimize JSON parsing in JsonTokenizer
- Add an RAII ifndef helper for C++ codegen.
- upb: fix textformat encoder to print group name instead of field name
- Migrate direct callers of options().packed() to is_packed() helper.
- Add java_features.proto to kotlin_mvn release
- Minor cleanup: IWYU, clang-tidy, etc.
- Update to ads v16.
- fix upb python: DO NOT create empty optional field after sorting empty repeated field
- Move the IfnDefGuard from third_party/protobuf/io/cpp_utils to the existing third_party/protobuf/compiler/cpp, which is a more logical location.
- Implement Default::default() for owned messages.
- Use M s g ::parse() where sensible.
- Remove dead code leftover from previous change.
- Make NioByteString private member class of ByteString
- Apply the two phase extension registration approach to all extensions, not just
- Add an RAII namespace printer helper for C++ codegen.
- Rename PerConstSerialArenaInChunk() to VisitSerialArena() and include first_arena_.
- Automated Code Change
- Fix latent bug in upb editions implementation caught by python conformance tests.
- Close conformance test gaps for delimited encoding.
- internal chnge
- Fix validateFeatures to be called after resolved features are actually set to this.features
- Fix toproto behavior for groups and required under editions
- Update comment referencing removed CreateMaybeMessage API
- Internal change
- Ensure we allocate overaligned types with aligned operator new.
- Implement Extend for Repeated
- upb: fix the Dart conformance test
- upb: make upb_Array_Reserve() a public function
- Fix failure lists for JRuby and C#, which don't pass all of the new conformance tests.
- Change LazyField to use a flat char array when the unparsed payload is small. This array can easily be allocated in the arena avoiding separate heap usage of the Cord.
- Move all TDP parsing to use direct-to-table.
- Enable visionos tests after GH runner update
- Add edition lifetime options for feature specs.
- Allow string_type for Edition 2023.
- Internal change
- Nextgen Proto Pythonic API: Add 'in' operator
- upb:decode initialize int inside loop for upb_DecodeLongVarintReturn
- Automated rollback of commit b09b3e4.
- Automated rollback of commit 2f6982e.
- Automated Code Change
- Add Length-Delimited Encode and Decode functions to upb.
- Optimize the generation of TDP tables by replacing the provider virtual
- In debug mode, after clearing oneof messages on arenas, poison them if ASAN.
- Remove Arena definition in cpp.rs
- Update python_tag select to include python limited_api
- Internal change
- Optimize TDP table generation by calculating fast fields once at the acceptable maximum size and then shrinking the table.
- Create a CopyHeadingTo method for message descriptors.
- Internal changes to extensions.
- Add redirects for proto rules
- Add redirects for C++ and Java proto rules
- Remove unused dead code.
- Remove references to rules_proto
- Fix delimited field handling in code generators.
- Add editions-specific conformance tests
- Fix text-format delimited field handling
- Add missing test cases for IsGroupLike
- upb: define kUpb_CompareOption_IncludeUnknownFields flag for upb_Message_IsEqual()
- Add delimited field binary/json conformance tests.
- Fix C# handling of delimited fields.
- upb: reuse upb_Message_Internal buffer after a upb_Message_Clear()
- Internal changes
- Update reader.c to initialize i inside loop
- Fix typo in kUpb_EncodeOption_SkipUnkown.
- upb: extension/basefield setters are now public functions
- Check that size is non-negative when reading string or bytes in StreamDecoder.
- Copy py_proto_library from rules_python to protobuf
- Restore legacy edition enum value
- Minor refactoring in SerialArena:
- Optimize TDP table generation:
- Pull ouot MODULE.bazel module version into PROTOBUF_VERSION string variable for automation to update version numbers during release
- Implement feature lifetime validation in protoc and the C++ runtime.
- Define lifetimes of edition 2023 features
- Add bzl_libraries to protobuf
- Hook up staleness tests to non-bootstrap edition defaults
- Copybara import of the project:
- upb: implement named imports in Dart
- Create a upb rust directory.
- Internal Change
- Use the same set of exports as regular users in shared tests
- Reverse last-minute switch to edition-lifetimes design.
- Adds an initial version of the proto! macro to simplify construction of proto messages in Rust. Currently supports all field types except Repeated and Map
- Internal changes to versions
- Internal changes.
- Make LazyField correct on 32 bit platforms.
- Move the hook for RawMessage::SpaceUsedLong into ClassData to remove the
- upb: implement Dart public imports
- Add or to enum_type_wrapper so they can be used in type unions
- Refactor editions infrastructure to a top-level directory.
- Internal changes.
- Minor cleanup: IWYU, clang-tidy, etc.
- Internal change
- Use newly split feature defaults in plugins and runtimes.
- Automated rollback of commit 57772cd.
- Add test coverage for UTF-8 behavior
- Internal change.
- Use Emit instead of format.
- Internal change.
- Clean up feature lifetime enforcement prior to release.
- Internal changes
- Fix delimited encoding for lazy-initialized fields.
- Removed merged features from the edition defaults IR.
- Minor cleanup: IWYU, clang-tidy, etc.
- Add dedicated tests to lock down that overridable defaults never change.
- Upgrade tests to use Bazel 7.1.1.
- Infer string type feature from ctype pre-editions.
- Refactored the Java generator into separate packages and targets.
- Updating version.json and repo version numbers to: 28-dev
- proto! doc comment and copyright
- Publishes "Editions: Group Migration Issues" to GitHub.
- Move xcode setup out of protobuf-ci
- Move the windows path length workarounds out of protobuf-ci
- Migrate bazel tests to protobuf-ci.
- Use absl::bit_cast to implicitly check presence of float and double.
- Change upb::Arena to be Send (but still not Sync)
- Improve C++, Python, Java runtime version representations to avoid merge conflicts during release.
- Replace direct access to MiniTable subs with calls to the encapsulated functions.
- Avoid boxing when serializing primitive lists in CodedOutputStreamWriter
- C#: Fix discovery of oneof declarations in descriptor protos.
- Add IsFrozen checks to conformance_upb and upb_js
- Check IsFrozen for message/copy.c, experimental_jspb/decode.c, and json/decode.c
- Remove IsFrozen checks from upb/conformance
- Internal change.
- Check IsFrozen for internal/message.c and reflection/message.c
- Internal change.
- Add a collision-avoidance behavior to the Rust Proto codegen.
- upb: fix Dart empty imports
- Catch all the exceptions in python JSON ParseDict and raise
- Use the main/proper proto_common
- upb: begin to delete the old Dart v2 plugin code
- Remove obsolete logic related to cc_proto_library
- Change the arena.hpp ::Fuse return type to bool to surface whether the fuse failed.
- Ensure that the rust_proto_library is in the same package as proto_library
- upb: implement .mergeFromBuffer() on GeneratedMessage in Dart
- Java Proto Lite: Serialize repeated enums without allocating
- Fix unused warnings in Rust Proto
- Remove gencode that uses vtables for string/bytes field accessors
- Remove PrimitiveMut and related vtable types
- Remove MutProxied for bytes/string fields.
- Implement _mut() accessors for messages without FieldEntry
- Expose MiniDescriptorEncode for FieldDefPtr.
- Internal change.
- In the Kotlin DSL, reference builder methods with property syntax.
- Implement flat setters for map and repeated fields.
- Automated rollback of commit e9c9970.
- Java Proto lite: avoid boxing Integers accessing enum lists
- Add UPB_ASSUME(!IsExtension) on GetMutableMessage.
- Add more floating point cases to the validations.
- Change FieldDescriptor::type() to not have the call_once behavior.
- Add text format conformance tests for field separators.
- generated_message_tctable_impl typo fix: registeer -> register
- Automated rollback of commit f799af8.
- Add upb_Message_ClearOneof
- Add system_python to protobuf_deps.bzl.
- Cancel in-progress workflow runs for pull requests and dispatches
- Automated rollback of commit 7a09c45.
- Split bootstrapped java_features.proto to keep it from leaking out.
- Fix validation checks of implicit presence.
- Proto java full runtime: avoid allocating Integers accessing enum lists
- Java full runtime: Avoid allocating iterator if UnknownFieldSet's TreeMap is empty
- internal change
- Implement is_known method on the Enum trait
- Ensure overflow values for float/double map to inf/-inf.
- Internal change.
- upb: clean up message/accessors.h and message/internal/accessors.h
- Implement IntoProxied for repeated field setters
- upb: clean up the UPB_TRACING_ENABLED code
- In SerialArenaChunk, (a) avoid recomputing offset of ids/arenas on each element access in constructor, (b) add a no-arg Layout() function for convenience, (c) fix an incorrect construction type in new (&arena(i)) std::atomic<void*>, where std::atomic<void*> should be std::atomic<SerialArena*>.
- Clean up port_def.inc by inlining BSWAP macros that are only used once.
- Nextgen Proto Pythonic API: Add 'in' operator
- Put arena cleanup nodes on a separate chunked list instead of at the ends of arena blocks.
- Deprecate building from source with Maven to be removed in 4.28.x.
- Fix #10007: Propagate msvc-style link flags to clang-cl with Bazel
- Return the default instance when parsing from an empty byte[].
- Java full runtime: Avoid allocating when calling asMap on empty UnknownFieldSet
- use struct instead of ctype. allows the protobuf python library to work on cpython 3.11's new wasm target [1]
- Add UnknownFieldSet.isEmpty
- Internal changes to versions
- Add upb_Message_ClearOneof (and retain upb_Message_WhichOneofFieldNumber)
- Replace macro with constexpr function to reduce compile time cost of
- upb: finish cleaning up message/accessors.h and message/internal/accessors.h
- upb: implement most of the non-universal setters
- Add temporary alias for system_python.bzl at previous location .
- Replace the single user of PROTOBUF_ALIGNAS with alignas and remove the now
- Clarify that the input to proto2::DynamicMessageFactory::GetPrototype should be non-null
- Move upb/bazel/system_python.bzl (new alias file) to correct open source directory.
- Move casting functions to MessageLite and use ClassData as the uniqueness
- Enable textproto conformance tests for "-0" and "-0F".
- Generate extension and k[FieldName]FieldNumber as constexpr int(s).
- Add null to the list of reserved words.
- Nextgen Proto Pythonic API: “Add-on” proto
- Move system_python.bzl to the correct open source folder
- upb: remove the unused (upb_MiniTable*) arg from upb_Message_SetMessage()
- [php] Added a unit test that bad UTF-8 is rejected in the parser.
- Break out idx in upb_MiniTableSub computation for clarity
- Avoid allocating iterator in TextFormat printing UnknownFieldSet
- Avoid allocating TreeMap in UnknownFieldSet.Builder.asMap
- Add java to reserved names to escape extensions to java_. This may break existing references to gencode for extensions named java.
- Add a BUILD file under rust/accessors and rename helpers.h to default_value.h
- Add Nextgen python proto_test to github
- Clear repository cache between bazel runs
- upb: publish and start using the new non-universal setters out in the wild
- Make IntArrayList consistent with other primitive array lists, using code generator
- Add a reserve method on ProxiedInRepeated
- inline repeated field methods
- Work around windows path length limitations by moving immutable -> full in open source (new generator paths) and shortening long file names.
- Use bool HasHasbits(const FieldDescriptor*) instead of manual checks.
- Replace SmallSortedMap.EmptySet with equivalent Collections.emptySet()
- internal change
- Implement new Debug API with redaction.
- Internal change
- Make the underlying type of the enum by 8-bits instead of using bitfields for
- MODULE.bazel fixes for protobuf BCR release.
- Add extension declarations for known features.
- Internal changes/optimizations
- Remove obsolete msgmut::or_default()
- Remove dead VTableName function.
- Internal Change
- Verify rust_proto_library name
- Added C# unit tests verifying current UTF-8 behavior
- Reduce the cost of CheckTypeAndMergeFrom in LITE_RUNTIME objects when icf is
- Add legacy Java TextFormat APIs
- Extract crate name mangling function
- Introduce upb_EncodeStatus_String and upb_DecodeStatus_String
- Devirtualize CheckTypeAndMergeFrom and use the existing function from
- Use the name of the rust_proto_library as the crate name
- Internal change.
- Prohibit using features in the same file they're defined in.
- Internal chanegs
- Fix ClangTidy warnings
- Test if a tag with unknown wire type (0x6 or 0x7) causes parsing failures.
- Fix Ruby FFI to pass MiniTable to upb_Message_New() aka new_message_from_def()
- Fix warning about a bool==uint64 check
- Remove spurious 'return' in a void function of another void
- Mark deleted fields in descriptor.proto reserved
- Use lower_with_under for Python nextgen tests
- Port C++20 Requires to it's C++17 equivalent for reuse across protos
- Future-proof edition 2023 against feature value support windows
- internal changes to plugin
- Avoid allocating FieldSet iterator if FieldSet is empty
- Delete unused method SmallSortedSet.getOverflowEntriesDescending
- Remove field SmallSortedMap.maxArraySize
- Fix a rare crash from feature lifetime validation
- Internal Change
- Remove unused constructor argument "descriptor" from GeneratedMessage.RepeatedFieldAccessor.ReflectionInvoker
- Remove unused constructor argument "descriptor" from GeneratedMessage.SingularFieldAccessor.ReflectionInvoker
- Fixed printing of nan floats/doubles in Python
- Internal change
- rename upb_Message_WhichOneof to upb_Message_WhichOneofByDef
- Internal change
- Internal changes
- Fix latent bug disallowing certain MessageSet extensions
- Avoid allocating new ExtensionWriters when serializing messages with no extensions
- Accept MessageLite type instead of the Message type in SerializeMsg
- Nextgen Proto Pythonic API: “Add-on” proto for length prefixed serialize/parse
- Automated rollback of commit 05e5107.
- Remove unused constructor argument GeneratedMessage.RealOneofAccessor.oneOfIndex
- Update comment for message_type
- Reparse unknown features using extension registry containing Java features.
- Move back deprecation of java utf8 feature to 2024.
- Replace boxed boolean with primitive boolean
- Internal changes
- Full java runtime: Avoid allocating ArrayList iterators when serializing UnknownFieldSet