Releases: protocolbuffers/protobuf
Releases · protocolbuffers/protobuf
Protocol Buffers v3.18.0-rc1
C++
- Fix warnings raised by clang 11 (#8664)
- Make StringPiece constructible from std::string_view (#8707)
- Add missing capability attributes for LLVM 12 (#8714)
- Stop using std::iterator (deprecated in C++17). (#8741)
- Move field_access_listener from libprotobuf-lite to libprotobuf (#8775)
- Fix #7047 Safely handle setlocale (#8735)
- Remove deprecated version of SetTotalBytesLimit() (#8794)
- Support arena allocation of google::protobuf::AnyMetadata (#8758)
- Fix undefined symbol error around SharedCtor() (#8827)
- Fix default value of enum(int) in json_util with proto2 (#8835)
- Better Smaller ByteSizeLong
- Introduce event filters for inject_field_listener_events
- Reduce memory usage of DescriptorPool
- For lazy fields copy serialized form when allowed.
- Re-introduce the InlinedStringField class
- v2 access listener
- Reduce padding in the proto's ExtensionRegistry map.
- GetExtension performance optimizations
- Make tracker a static variable rather than call static functions
- Support extensions in field access listener
- Annotate MergeFrom for field access listener
- Fix incomplete types for field access listener
- Add map_entry/new_map_entry to SpecificField in MessageDifferencer. They
record the map items which are different in MessageDifferencer's reporter. - Reduce binary size due to fieldless proto messages
- TextFormat: ParseInfoTree supports getting field end location in addition to
start. - Fix repeated enum extension size in field listener
- Enable Any Text Expansion for Descriptors::DebugString()
- Switch from int{8,16,32,64} to int{8,16,32,64}_t
Java
- Fix errorprone conflict (#8723)
- Removing deprecated TimeUtil class. (#8749)
- Optimized FieldDescriptor.valueOf() to avoid array copying.
- Removing deprecated TimeUtil class.
- Add Durations.parseUnchecked(String) and Timestamps.parseUnchecked(String)
- FieldMaskUtil: Add convenience method to mask the fields out of a given proto.
JavaScript
- Optimize binary parsing of repeated float64
- Fix for optimization when reading doubles from binary wire format
- Replace toArray implementation with toJSON.
PHP
- Migrate PHP & Ruby to ABSL wyhash (#8854)
Ruby
- Move DSL implementation from C to pure Ruby (#8850)
Other
Protocol Buffers v3.17.3
Python
- Note: This is the last release to support Python 2.7. Future releases will require Python >= 3.5.
C++
- Introduce FieldAccessListener.
- Stop emitting boilerplate {Copy/Merge}From in each ProtoBuf class
- Fixed some uninitialized variable warnings in generated_message_reflection.cc.
Kotlin
- Fix duplicate proto files error (#8699)
Java
- Fixed parser to check that we are at a proper limit when a sub-message has
finished parsing.
General
- Support M1 (#8557)
Protocol Buffers v3.17.2
Protocol Buffers v3.17.1
PHP
- Fixed PHP memory leaks and arginfo errors. (#8614)
- Fixed JSON parser to allow multiple values from the same oneof as long as all but one are null.
Ruby
- Fixed memory bug: properly root repeated/map field when assigning. (#8639)
- Fixed JSON parser to allow multiple values from the same oneof as long as all but one are null.
Protocol Buffers v3.17.0
Protocol Compiler
- Fix the generated source information for reserved values in Enums.
C++
- Fix -Wunused-parameter in map<string, int> fields (fixes #8494) (#8500)
- Use byteswap.h when building against musl libc (#8503)
- Fix -Wundefined-inline error when using SharedCtor() or SharedDtor() (#8532)
- Fix bug where
Descriptor::DebugString()
printed proto3 synthetic oneofs. - Provide stable versions of
SortAndUnique()
. - Make sure to cache proto3 optional message fields when they are cleared.
- Expose UnsafeArena methods to Reflection.
- Use std::string::empty() rather than std::string::size() > 0.
Kotlin
- Introduce support for Kotlin protos (#8272)
- Restrict extension setter and getter operators to non-nullable T.
Java
- updating GSON and Guava to more recent versions (#8524)
- Reduce the time spent evaluating isExtensionNumber by storing the extension
ranges in a TreeMap for faster queries. This is particularly relevant for
protos which define a large number of extension ranges, for example when
each tag is defined as an extension. - Fix java bytecode estimation logic for optional fields.
- Optimize Descriptor.isExtensionNumber.
Python
- Add MethodDescriptor.CopyToProto() (#8327)
- Remove unused python_protobuf.{cc,h} (#8513)
- Start publishing python aarch64 manylinux wheels normally (#8530)
- Fix constness issue detected by MSVC standard conforming mode (#8568)
- Make JSON parsing match C++ and Java when multiple fields from the same
oneof are present and all but one is null.
Ruby
- Add support for proto3 json_name in compiler and field definitions (#8356)
- Fixed memory leak of Ruby arena objects. (#8461)
- Fix source gem compilation (#8471)
- Fix various exceptions in Ruby on 64-bit Windows (#8563)
- Fix crash when calculating Message hash values on 64-bit Windows (#8565)
Conformance Tests
- Added a conformance test for the case of multiple fields from the same
oneof.
Other
- Use a newer version of rules_proto, with the new rule
proto_descriptor_set
(#8469)
Protocol Buffers v3.17.0-rc2
Update protobuf version to 3.17.0-rc2 (#8586) * Update protobuf version * Updated Kotlin versions and updated script to handle them
Protocol Buffers v3.17.0-rc1
Protocol Compiler
- Fix the generated source information for reserved values in Enums.
C++
- Fix -Wunused-parameter in map<string, int> fields (fixes #8494) (#8500)
- Use byteswap.h when building against musl libc (#8503)
- Fix -Wundefined-inline error when using SharedCtor() or SharedDtor() (#8532)
- Fix bug where
Descriptor::DebugString()
printed proto3 synthetic oneofs. - Provide stable versions of
SortAndUnique()
. - Make sure to cache proto3 optional message fields when they are cleared.
- Expose UnsafeArena methods to Reflection.
- Use std::string::empty() rather than std::string::size() > 0.
Kotlin
- Restrict extension setter and getter operators to non-nullable T.
Java
- updating GSON and Guava to more recent versions (#8524)
- Reduce the time spent evaluating isExtensionNumber by storing the extension
ranges in a TreeMap for faster queries. This is particularly relevant for
protos which define a large number of extension ranges, for example when
each tag is defined as an extension. - Fix java bytecode estimation logic for optional fields.
- Optimize Descriptor.isExtensionNumber.
Python
- [python-runtime] Add MethodDescriptor.CopyToProto() (#8327)
- Remove unused python_protobuf.{cc,h} (#8513)
- Start publishing python aarch64 manylinux wheels normally (#8530)
- Fix constness issue detected by MSVC standard conforming mode (#8568)
- Make JSON parsing match C++ and Java when multiple fields from the same
oneof are present and all but one is null.
Ruby
- Ruby: Add support for proto3 json_name in compiler and field definitions (#8356)
- Fixed memory leak of Ruby arena objects. (#8461)
- Fix source gem compilation (#8471)
- fix(ruby): Fix various exceptions in Ruby on 64-bit Windows (#8563)
- fix(ruby): Fix crash when calculating Message hash values on 64-bit Windows (#8565)
Conformance Tests
- Added a conformance test for the case of multiple fields from the same
oneof.
Other
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)
Protocol Buffers v3.16.0-rc2
Protocol Buffers v3.15.8
Ruby
- Fixed memory leak of Ruby arena objects (#8461)