Skip to content

Protocol Buffers v3.2.0

Compare
Choose a tag to compare
@TeBoring TeBoring released this 17 Feb 19:53

General

  • Added protoc version number to protoc plugin protocol. It can be used by
    protoc plugin to detect which version of protoc is used with the plugin and
    mitigate known problems in certain version of protoc.

C++

  • The default parsing byte size limit has been raised from 64MB to 2GB.
  • Added rvalue setters for non-arena string fields.
  • Enabled debug logging for Android.
  • Fixed a double-free problem when using Reflection::SetAllocatedMessage()
    with extension fields.
  • Fixed several deterministic serialization bugs:
  • MessageLite::SerializeAsString() now respects the global deterministic
    serialization flag.
  • Extension fields are serialized deterministically as well. Fixed protocol
    compiler to correctly report importing-self as an error.
  • Fixed FileDescriptor::DebugString() to print custom options correctly.
  • Various performance/codesize optimizations and cleanups.

Java

  • The default parsing byte size limit has been raised from 64MB to 2GB.
  • Added recursion limit when parsing JSON.
  • Fixed a bug that enumType.getDescriptor().getOptions() doesn't have custom
    options.
  • Fixed generated code to support field numbers up to 2^29-1.

Python

  • You can now assign NumPy scalars/arrays (np.int32, np.int64) to protobuf
    fields, and assigning other numeric types has been optimized for
    performance.
  • Pure-Python: message types are now garbage-collectable.
  • Python/C++: a lot of internal cleanup/refactoring.

PHP (Alpha)

  • For 64-bit integers type (int64/uint64/sfixed64/fixed64/sint64), use PHP
    integer on 64-bit environment and PHP string on 32-bit environment.
  • PHP generated code also conforms to PSR-4 now.
  • Fixed ZTS build for c extension.
  • Fixed c extension build on Mac.
  • Fixed c extension build on 32-bit linux.
  • Fixed the bug that message without namespace is not found in the descriptor
    pool. (#2240)
  • Fixed the bug that repeated field is not iterable in c extension.
  • Message names Empty will be converted to GPBEmpty in generated code.
  • Added phpdoc in generated files.
  • The released API is almost stable. Unless there is large problem, we won't
    change it. See
    https://developers.google.com/protocol-buffers/docs/reference/php-generated
    for more details.

Objective-C

  • Added support for push/pop of the stream limit on CodedInputStream for
    anyone doing manual parsing.

C#

  • No changes.

Ruby

  • Message objects now support #respond_to? for field getters/setters.
  • You can now compare “message == non_message_object” and it will return false
    instead of throwing an exception.
  • JRuby: fixed #hashCode to properly reflect the values in the message.

Javascript

  • Deserialization of repeated fields no longer has quadratic performance
    behavior.
  • UTF-8 encoding/decoding now properly supports high codepoints.
  • Added convenience methods for some well-known types: Any, Struct, and
    Timestamp. These make it easier to convert data between native JavaScript
    types and the well-known protobuf types.