Skip to content

Protocol Buffers v3.16.0

Compare
Choose a tag to compare
@acozzette acozzette released this 07 May 00:13
· 24 commits to 3.16.x since this release
2dc747c

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)