Skip to content

Releases: protocolbuffers/protobuf

Protocol Buffers v3.18.0-rc1

19 Aug 22:26
1a1710b
Compare
Choose a tag to compare
Pre-release

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

  • [csharp] ByteString.CreateCodedInput should use ArraySegment offset and count (#8740)
  • [ObjC] Add support for using the proto package to prefix symbols. (#8760)
  • field_presence.md: fix Go example (#8788)

Protocol Buffers v3.17.3

08 Jun 14:24
909a0f3
Compare
Choose a tag to compare

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

Protocol Buffers v3.17.2

02 Jun 21:20
70db61a
Compare
Choose a tag to compare

Kotlin

  • Fix duplicate class error (#8653)

PHP

  • Fixed SEGV in sub-message getters for well-known types when message is unset
    (#8670)

Protocol Buffers v3.17.1

24 May 17:24
367e469
Compare
Choose a tag to compare

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

13 May 01:10
652d99a
Compare
Choose a tag to compare

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

11 May 00:12
f807c02
Compare
Choose a tag to compare
Pre-release
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

07 May 20:40
e211ad3
Compare
Choose a tag to compare
Pre-release

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

  • Opensourcing kotlin protos (#8272)
  • Use a newer version of rules_proto, with the new rule proto_descriptor_set (#8469)

Protocol Buffers v3.16.0

07 May 00:13
2dc747c
Compare
Choose a tag to compare

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

05 May 22:22
debc03d
Compare
Choose a tag to compare
Pre-release

Ruby

  • Fixed memory leak of Ruby arena objects. (#8462)
  • Add support for proto3 json_name in compiler and field definitions. (#8356)

Protocol Buffers v3.15.8

08 Apr 16:52
436bd78
Compare
Choose a tag to compare

Ruby

  • Fixed memory leak of Ruby arena objects (#8461)