Protocol Buffers v3.16.0
C++
- Fix compiler warnings issue found in conformance_test_runner #8189 (#8190)
- Fix MinGW-w64 build issues. (#8286)
- [Protoc] C++ Resolved an issue where NO_DESTROY and CONSTINIT are in incorrect order (#8296)
- Fix PROTOBUF_CONSTINIT macro redefinition (#8323)
- Delete StringPiecePod (#8353)
- Fix gcc error: comparison of unsigned expression in '>= 0' is always … (#8309)
- Fix cmake install on iOS (#8301)
- Create a CMake option to control whether or not RTTI is enabled (#8347)
- Fix endian.h location on FreeBSD (#8351)
- Refactor util::Status (#8354)
- Make util::Status more similar to absl::Status (#8405)
- Fix -Wsuggest-destructor-override for generated C++ proto classes. (#8408)
- Refactor StatusOr and StringPiece (#8406)
- Refactor uint128 (#8416)
- The ::pb namespace is no longer exposed due to conflicts.
- Allow MessageDifferencer::TreatAsSet() (and friends) to override previous
calls instead of crashing. - Reduce the size of generated proto headers for protos with
string
or
bytes
fields. - Move arena() operation on uncommon path to out-of-line routine
- For iterator-pair function parameter types, take both iterators by value.
- Code-space savings and perhaps some modest performance improvements in
RepeatedPtrField. - Eliminate nullptr check from every tag parse.
- Remove unused _$name$cached_byte_size fields.
- Serialize extension ranges together when not broken by a proto field in the
middle. - Do out-of-line allocation and deallocation of string object in ArenaString.
- Streamline ParseContext::ParseMessage to avoid code bloat and improve
performance. - New member functions RepeatedField::Assign, RepeatedPtrField::{Add, Assign}.
- Fix undefined behavior warning due to innocuous uninitialization of value
on an error path. - Avoid expensive inlined code space for encoding message length for messages
= 128 bytes and instead do a procedure call to a shared out-of-line routine.
- util::DefaultFieldComparator will be final in a future version of protobuf.
Subclasses should inherit from SimpleFieldComparator instead.
C#
- Add .NET 5 target and improve WriteString performance with SIMD (#8147)
Java
- deps: update JUnit and Truth (#8319)
- Detect invalid overflow of byteLimit and return InvalidProtocolBufferException as documented.
- Exceptions thrown while reading from an InputStream in parseFrom are now
included as causes. - Support potentially more efficient proto parsing from RopeByteStrings.
- Clarify runtime of ByteString.Output.toStringBuffer().
- Added UnsafeByteOperations to protobuf-lite (#8426)
JavaScript
- Make Any.pack() chainable.
Python
- Fix some constness / char literal issues being found by MSVC standard conforming mode (#8344)
- Switch on "new" buffer API (#8339)
- Enable crosscompiling aarch64 python wheels under dockcross manylinux docker image (#8280)
- Fixed a bug in text format where a trailing colon was printed for repeated field.
- When TextFormat encounters a duplicate message map key, replace the current
one instead of merging.
Objective-C
- Move the class map to a CFDictionary. (#8328)
PHP
- read_property() handler is not supposed to return NULL (#8362)
- Changed parameter type from long to integer (#7613)
- fix: README supported PHP version for C extension (#8236)
Ruby
- Fixed quadratic memory usage when appending to arrays. (#8364)
- Fixed memory leak of Ruby arena objects. (#8461)
- Add support for proto3 json_name in compiler and field definitions. (#8356)
Other
- Some doc on AOT compilation and protobuf (#8294)
- [CMake] Ability to pass options to protoc executable from cmake (#8374)
- Add --fatal_warnings flag to treat warnings as errors (#8131)
- [bazel] Remove deprecated way to depend on googletest (#8396)
- add error returns missing from protoc to prevent it from exiting with… (#8409)