Skip to content

Protocol Buffers v3.7.0

Compare
Choose a tag to compare
@acozzette acozzette released this 28 Feb 21:33
· 25 commits to 3.7.x since this release
582743b

C++

  • Introduced new MOMI (maybe-outside-memory-interval) parser.
  • Add an option to json_util to parse enum as case-insensitive. In the future, enum parsing in json_util will become case-sensitive.
  • Added conformance test for enum aliases
  • Added support for --cpp_out=speed:...
  • Added use of C++ override keyword where appropriate
  • Many other cleanups and fixes.

Java

  • Fix illegal reflective access warning in JDK 9+
  • Add BOM

Python

  • Added Python 3.7 compatibility.
  • Modified ParseFromString to return bytes parsed .
  • Introduce Proto C API.
  • FindFileContainingSymbol in descriptor pool is now able to find field and enum values.
  • reflection.MakeClass() and reflection.ParseMessage() are deprecated.
  • Added DescriptorPool.FindMethodByName() method in pure python (c extension alreay has it)
  • Flipped proto3 to preserve unknown fields by default.
  • Added support for memoryview in python3 proto message parsing.
  • Added MergeFrom for repeated scalar fields in c extension (pure python already has it)
  • Surrogates are now rejected at setters in python3.
  • Added public unknown field API.
  • RecursionLimit is also set to max if allow_oversize_protos is enabled.
  • Disallow duplicate scalars in proto3 text_format parse.
  • Fix some segment faults for c extension map field.

PHP

  • Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_php_c.txt.
  • Supports php 7.3
  • Added helper methods to convert between enum values and names.
  • Allow setting/getting wrapper message fields using primitive values.
  • Various bug fixes.

Ruby

  • Ruby 2.6 support.
  • Drops support for ruby < 2.3.
  • Most issues for json encoding/decoding in the c extension have been fixed. There are still some edge cases not fixed. For more details, check conformance/failure_list_ruby.txt.
  • Json parsing can specify an option to ignore unknown fields: msg.decode_json(data, {ignore_unknown_fields: true}).
  • Added support for proto2 syntax (partially).
  • Various bug fixes.

C#

  • More support for FieldMask include merge, intersect and more.
  • Increasing the default recursion limit to 100.
  • Support loading FileDescriptors dynamically.
  • Provide access to comments from descriptors.
  • Added Any.Is method.
  • Compatible with C# 6
  • Added IComparable and comparison operators on Timestamp.

Objective-C

  • Add ability to introspect list of enum values (#4678)
  • Copy the value when setting message/data fields (#5215)
  • Support suppressing the objc package prefix checks on a list of files (#5309)
  • More complete keyword and NSObject method (via categories) checks for field names, can result in more fields being rename, but avoids the collisions at runtime (#5289)
  • Small fixes to TextFormat generation for extensions (#5362)
  • Provide more details/context in deprecation messages (#5412)
  • Array/Dictionary enumeration blocks NS_NOESCAPE annotation for Swift (#5421)
  • Properly annotate extensions for ARC when their names imply behaviors (#5427)
  • Enum alias name collision improvements (#5480)