Skip to content

Protocol Buffers v3.1.0

Compare
Choose a tag to compare
@TeBoring TeBoring released this 24 Sep 02:39
· 30 commits to 3.1.x since this release

General

  • Proto3 support in PHP (alpha).
  • Various bug fixes.

C++

  • Added MessageLite::ByteSizeLong() that’s equivalent to
    MessageLite::ByteSize() but returns the value in size_t. Useful to check
    whether a message is over the 2G size limit that protobuf can support.
  • Moved default_instances to global variables. This allows default_instance
    addresses to be known at compile time.
  • Adding missing generic gcc 64-bit atomicops.
  • Restore New*Callback into google::protobuf namespace since these are used
    by the service stubs code
  • JSON support.
    • Fixed some conformance issues.
  • Fixed a JSON serialization bug for bytes fields.

Java

  • Fixed a bug in TextFormat that doesn’t accept empty repeated fields (i.e.,
    “field: [ ]”).
  • JSON support
    • Fixed JsonFormat to do correct snake_case-to-camelCase conversion for
      non-style-conforming field names.
    • Fixed JsonFormat to parse empty Any message correctly.
    • Added an option to JsonFormat.Parser to ignore unknown fields.
  • Experimental API
    • Added UnsafeByteOperations.unsafeWrap(byte[]) to wrap a byte array into
      ByteString without copy.

Python

  • JSON support
    • Fixed some conformance issues.

PHP (Alpha)

  • We have added the proto3 support for PHP via both a pure PHP package and a
    native c extension. The pure PHP package is intended to provide usability
    to wider range of PHP platforms, while the c extension is intended to
    provide higher performance. Both implementations provide the same runtime
    APIs and share the same generated code. Users don’t need to re-generate
    code for the same proto definition when they want to switch the
    implementation later. The pure PHP package is included in the php/src
    directory, and the c extension is included in the php/ext directory.

    Both implementations provide idiomatic PHP APIs:

    • All messages and enums are defined as PHP classes.
    • All message fields can only be accessed via getter/setter.
    • Both repeated field elements and map elements are stored in containers
      that act like a normal PHP array.

    Unlike several existing third-party PHP implementations for protobuf, our
    implementations are built on a "strongly-typed" philosophy: message fields
    and array/map containers will throw exceptions eagerly when values of the
    incorrect type (not including those that can be type converted, e.g.,
    double <-> integer <-> numeric string) are inserted.

    Currently, pure PHP runtime supports php5.5, 5.6 and 7 on linux. C
    extension runtime supports php5.5 and 5.6 on linux.

    See php/README.md for more details about installment. See
    https://developers.google.com/protocol-buffers/docs/phptutorial for more
    details about APIs.

Objective-C

  • Helpers are now provided for working the the Any well known type (see
    GPBWellKnownTypes.h for the api additions).
  • Some improvements in startup code (especially when extensions aren’t used).

Javascript

  • Fixed missing import of jspb.Map
  • Fixed valueWriterFn variable name

Ruby

  • Fixed hash computation for JRuby's RubyMessage
  • Make sure map parsing frames are GC-rooted.
  • Added API support for well-known types.

C#

  • Removed check on dependency in the C# reflection API.