Protocol Buffers v3.1.0
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.
- Fixed JsonFormat to do correct snake_case-to-camelCase conversion for
- Experimental API
- Added UnsafeByteOperations.unsafeWrap(byte[]) to wrap a byte array into
ByteString without copy.
- Added UnsafeByteOperations.unsafeWrap(byte[]) to wrap a byte array into
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.