All Versions
38
Latest Version
Avg Release Cycle
23 days
Latest Release
864 days ago

Changelog History
Page 4

  • v3.8.0 Changes

    May 28, 2019

    C++

    • ๐Ÿ‘‰ Use std::atomic in case of myriad2 platform
    • Always declare enums to be int-sized
    • โž• Added DebugString() and ShortDebugString() methods on MessageLite
    • ๐Ÿ“œ Specialized different parse loop control flows
    • ๐Ÿ‘‰ Make hasbits potentially in register. The or's start forming an obstacle because it's a read modify store on the same mem address on each iteration.
    • ๐Ÿšš Move to an internal MACRO for parser validity checks.
    • ๐Ÿ‘Œ Improve map parsing performance.
    • ๐Ÿ”€ Make MergePartialFromCodedStream non virtual. This allows direct calls, potential inlining and is also a code health improvement
    • โž• Add an overall limit to parse_context to prevent reading past it. This allows to remove a annoying level of indirection.
    • ๐Ÿ›  Fix a mistake, we shouldn't verify map key/value strings for utf8 in opt mode for proto2.
    • Further improvements to cut binary size.
    • ๐Ÿ”€ Prepare to make MergePartialFromCodedStream non-virtual.
    • ๐Ÿ“œ A report on some interesting behavior change in python (caused by b/27494216) made me realize there is a check that needs to be done in case the parse ended on a end group tag.
    • โž• Add a note of caution to the comments around skip in CodedOutputStream.
    • Simplify end check.
    • โž• Add overload for ParseMessage for MessageLite/Message types. If the explicit type is not known inlining won't help de-virtualizing the virtual call.
    • โฌ‡๏ธ Reduce linker input. It turns out that ParseMessage is not inlined, producing template instantiations that are used only once and save nothing but cost more.
    • ๐Ÿ‘Œ Improve the parser.
    • ๐Ÿ—„ [c++17] Changed proto2::RepeatedPtrField iterators to no longer derive from the deprecated std::iterator class.
    • Change the default value of case_insensitive_enum_parsing to false for JsonStringToMessage.
    • โž• Add a warning if a field name doesn't match the style guide.
    • ๐Ÿ›  Fix TextFormat not round-trip correctly when float value is max float.
    • โž• Added locationed info for some errors at compiler
    • Python reserved keywords are now working with getattr()/setattr() for most descriptors.
    • โž• Added AllowUnknownField() in text_format
    • Append '_' to C++ reserved keywords for message, enum, extension
    • ๐Ÿ›  Fix MSVC warning C4244 in protobuf's parse_context.h.
    • โšก๏ธ Updating Iterators to be compatible with C++17 in MSVC.
    • ๐Ÿ‘‰ Use capability annotation in mutex.h
    • ๐Ÿ›  Fix "UndefinedBehaviorSanitizer: cfi-bad-type"
    • ๐Ÿš‘ CriticalSectionLock class as a lightweight replacement for std::mutex on Windows platforms.
    • Removed vestigial wire_format_lite_inl.h

    C

    • โž• Added System.Memory dependency.

    Java

    • Make Java protoc code generator ignore optimize_for LITE_RUNTIME. Users should instead use the Java lite protoc plugin.
    • ๐Ÿ”„ Change Extension getMessageDefaultInstance() to return Message instead of MessageLite.
    • โœ… Prevent malicious input streams from leaking buffers for ByteString or ByteBuffer parsing.
    • ๐Ÿš€ Release new Javalite runtime.
    • โš  Show warning in case potential file name conflict.
    • ๐Ÿ‘ Allow Java reserved keywords to be used in extensions.
    • โž• Added setAllowUnknownFields() in text format
    • โž• Add memoization to ExtensionRegistryLite.getEmptyRegistry()
    • ๐Ÿ‘Œ Improve performance of CodedOutputStream.writeUInt32NoTag
    • โž• Add an optimized mismatch-finding algorithm to UnsafeUtil.
    • When serializing uint32 varints, check that we have MAX_VARINT32_SIZE bytes left, not just MAX_VARINT_SIZE.
    • โœ… Minor optimization to RopeByteString.PieceIterator

    JavaScript

    • 0๏ธโƒฃ Simplify generated toObject code when the default value is used.

    Python

    • ๐Ÿ”„ Changes implementation of Name() for enums that allow aliases in proto2 in Python to be in line with claims in C++ implementation (to return first value).
    • โž• Added double_format option in text format printer.
    • Added iter and contains to extension dict
    • Added allow_unknown_field option in python text format parser
    • ๐Ÿ›  Fixed Timestamp.ToDatetime() loses precision issue
    • ๐Ÿ‘Œ Support unknown field in text format printer.
    • Float field will be convert to inf if bigger than struct.unpack('f', b'\xff\xff\x7f\x7f')[0] which is about 3.4028234664e+38,
      convert to -inf if smaller than -3.4028234664e+38
    • Allowed casting str->bytes in Message. setstate

    ๐Ÿ’Ž Ruby

    • ๐Ÿ’Ž Helper methods to get enum name for Ruby.
  • v3.8.0-rc1 Changes

    May 01, 2019

    C++

    • ๐Ÿ‘‰ Use std::atomic in case of myriad2 platform
    • Always declare enums to be int-sized
    • โž• Added DebugString() and ShortDebugString() methods on MessageLite
    • ๐Ÿ“œ Specialized different parse loop control flows
    • ๐Ÿ‘‰ Make hasbits potentially in register. The or's start forming an obstacle because it's a read modify store on the same mem address on each iteration.
    • ๐Ÿšš Move to an internal MACRO for parser validity checks.
    • ๐Ÿ‘Œ Improve map parsing performance.
    • ๐Ÿ”€ Make MergePartialFromCodedStream non virtual. This allows direct calls, potential inlining and is also a code health improvement
    • โž• Add an overall limit to parse_context to prevent reading past it. This allows to remove a annoying level of indirection.
    • ๐Ÿ›  Fix a mistake, we shouldn't verify map key/value strings for utf8 in opt mode for proto2.
    • Further improvements to cut binary size.
    • ๐Ÿ”€ Prepare to make MergePartialFromCodedStream non-virtual.
    • ๐Ÿ“œ A report on some interesting behavior change in python (caused by b/27494216) made me realize there is a check that needs to be done in case the parse ended on a end group tag.
    • โž• Add a note of caution to the comments around skip in CodedOutputStream.
    • Simplify end check.
    • โž• Add overload for ParseMessage for MessageLite/Message types. If the explicit type is not known inlining won't help de-virtualizing the virtual call.
    • โฌ‡๏ธ Reduce linker input. It turns out that ParseMessage is not inlined, producing template instantiations that are used only once and save nothing but cost more.
    • ๐Ÿ‘Œ Improve the parser.
    • ๐Ÿ—„ [c++17] Changed proto2::RepeatedPtrField iterators to no longer derive from the deprecated std::iterator class.
    • Change the default value of case_insensitive_enum_parsing to false for JsonStringToMessage.
    • โž• Add a warning if a field name doesn't match the style guide.
    • ๐Ÿ›  Fix TextFormat not round-trip correctly when float value is max float.
    • โž• Added locationed info for some errors at compiler
    • Python reserved keywords are now working with getattr()/setattr() for most descriptors.
    • โž• Added AllowUnknownField() in text_format
    • Append '_' to C++ reserved keywords for message, enum, extension
    • ๐Ÿ›  Fix MSVC warning C4244 in protobuf's parse_context.h.
    • โšก๏ธ Updating Iterators to be compatible with C++17 in MSVC.
    • ๐Ÿ‘‰ Use capability annotation in mutex.h
    • ๐Ÿ›  Fix "UndefinedBehaviorSanitizer: cfi-bad-type"
    • ๐Ÿš‘ CriticalSectionLock class as a lightweight replacement for std::mutex on Windows platforms.
    • Removed vestigial wire_format_lite_inl.h

    C

    • โž• Added System.Memory dependency.

    Java

    • Make Java protoc code generator ignore optimize_for LITE_RUNTIME. Users should instead use the Java lite protoc plugin.
    • ๐Ÿ”„ Change Extension getMessageDefaultInstance() to return Message instead of MessageLite.
    • โœ… Prevent malicious input streams from leaking buffers for ByteString or ByteBuffer parsing.
    • ๐Ÿš€ Release new Javalite runtime.
    • โš  Show warning in case potential file name conflict.
    • ๐Ÿ‘ Allow Java reserved keywords to be used in extensions.
    • โž• Added setAllowUnknownFields() in text format
    • โž• Add memoization to ExtensionRegistryLite.getEmptyRegistry()
    • ๐Ÿ‘Œ Improve performance of CodedOutputStream.writeUInt32NoTag
    • โž• Add an optimized mismatch-finding algorithm to UnsafeUtil.
    • When serializing uint32 varints, check that we have MAX_VARINT32_SIZE bytes left, not just MAX_VARINT_SIZE.
    • โœ… Minor optimization to RopeByteString.PieceIterator

    JavaScript

    • 0๏ธโƒฃ Simplify generated toObject code when the default value is used.

    Python

    • ๐Ÿ”„ Changes implementation of Name() for enums that allow aliases in proto2 in Python to be in line with claims in C++ implementation (to return first value).
    • โž• Added double_format option in text format printer.
    • Added iter and contains to extension dict
    • Added allow_unknown_field option in python text format parser
    • ๐Ÿ›  Fixed Timestamp.ToDatetime() loses precision issue
    • ๐Ÿ‘Œ Support unknown field in text format printer.
    • Float field will be convert to inf if bigger than struct.unpack('f', b'\xff\xff\x7f\x7f')[0] which is about 3.4028234664e+38,
      convert to -inf if smaller than -3.4028234664e+38
    • Allowed casting str->bytes in Message. setstate

    ๐Ÿ’Ž Ruby

    • ๐Ÿ’Ž Helper methods to get enum name for Ruby.
  • v3.7.1 Changes

    March 26, 2019

    C++

    • Avoid linking against libatomic in prebuilt protoc binaries (#5875)
    • ๐Ÿš€ Avoid marking generated C++ messages as final, though we will do this in a future release (#5928)
    • ๐Ÿ— Miscellaneous build fixes

    JavaScript

    • ๐Ÿ›  Fixed redefinition of global variable f (#5932)

    ๐Ÿ’Ž Ruby

    • Replace strptime with custom implementation (#5906)
    • ๐Ÿ›  Fixed the bug that bytes fields cannot be larger than 16000 bytes (#5924)
    • ๐Ÿ›  Miscellaneous bug fixes

    PHP

    • Replace strptime with custom implementation (#5906)
    • ๐Ÿ›  Fixed the bug that bytes fields cannot be larger than 16000 bytes (#5924)
  • v3.7.0 Changes

    February 28, 2019

    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)
  • v3.7.0-rc.3

    February 22, 2019
  • v3.7.0.rc2

    February 01, 2019
  • v3.7.0-rc.2

    February 04, 2019
  • v3.7.0.rc1

    January 30, 2019