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)