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)