protobuf v3.7.0 Release Notes

Release Date: 2019-02-28 // about 5 years ago
  • 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)
    • 0๏ธโƒฃ 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.
    • 0๏ธโƒฃ 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)