Skip to content

Releases: protocolbuffers/protobuf

Protocol Buffers v3.12.0-rc2

12 May 22:30
Compare
Choose a tag to compare
Pre-release

C++ / Python

  • Fix for #7463 ("mixing with optional fields: core dump --experimental_allow_proto3_optional")

Java

  • Fix for #7480 ("TextFormat and JsonFormat ignore experimental proto3 optional enums")

PHP

  • Ignore unknown enum value when ignore_unknown specified (#7455)

C#

  • Mark GetOption API as obsolete and expose the "GetOptions()" method on descriptors instead (#7491)
  • Remove Has/Clear members for C# message fields in proto2 (#7429)

Protocol Buffers v3.12.0-rc1

04 May 17:45
ef7cc81
Compare
Choose a tag to compare
Pre-release

Protocol Compiler

  • [experimental] Singular, non-message typed fields in proto3 now support
    presence tracking. This is enabled by adding the "optional" field label and
    passing the --experimental_allow_proto3_optional flag to protoc.
  • Allow duplicate symbol names when multiple descriptor sets are passed on
    the command-line, to match the behavior when multiple .proto files are passed.
  • Deterministic protoc --descriptor_set_out (#7175)

C++

  • [experimental] Added proto3 presence support.
  • New descriptor APIs to support proto3 presence.
  • Enable Arenas by default on all .proto files.
  • Documented that users are not allowed to subclass Message or MessageLite.
  • Mark generated classes as final; inheriting from protos is strongly discouraged.
  • Add stack overflow protection for text format with unknown fields.
  • Add accessors for map key and value FieldDescriptors.
  • Add FieldMaskUtil::FromFieldNumbers().
  • MessageDifferencer: use ParsePartial() on Any fields so the diff does not
    fail when there are missing required fields.
  • ReflectionOps::Merge(): lookup messages in the right factory, if it can.
  • Added Descriptor::WellKnownTypes enum and Descriptor::well_known_type()
    accessor as an easier way of determining if a message is a Well-Known Type.
  • Optimized RepeatedField::Add() when it is used in a loop.
  • Made proto move/swap more efficient.
  • De-virtualize the GetArena() method in MessageLite.
  • Improves performance of json_stream_parser.cc by factor 1000 (#7230)
  • bug: #7076 undefine Windows OUT and OPTIONAL macros (#7087)
  • Fixed a bug in FieldDescriptor::DebugString() that would erroneously print
    an "optional" label for a field in a oneof.
  • Fix bug in parsing bool extensions that assumed they are always 1 byte.
  • Fix off-by-one error in FieldOptions::ByteSize() when extensions are present.
  • Clarified the comments to show an example of the difference between
    Descriptor::extension and DescriptorPool::FindAllExtensions.
  • Add a compiler option 'code_size' to force optimize_for=code_size on all
    protos where this is possible.

Java

  • [experimental] Added proto3 presence support.
  • Mark java enum _VALUE constants as @deprecated if the enum field is deprecated
  • reduce size for enums with allow_alias set to true.
  • Sort map fields alphabetically by the field's key when printing textproto.
  • TextFormat.merge() handles Any as top level type.
  • Throw a descriptive IllegalArgumentException when calling
    getValueDescriptor() on enum special value UNRECOGNIZED instead of
    ArrayIndexOutOfBoundsException.
  • Fixed an issue with JsonFormat.printer() where setting printingEnumsAsInts()
    would override the configuration passed into includingDefaultValueFields().
  • Implement overrides of indexOf() and contains() on primitive lists returned
    for repeated fields to avoid autoboxing the list contents.
  • Add overload to FieldMaskUtil.fromStringList that accepts a descriptor.
  • [bazel] Move Java runtime/toolchains into //java (#7190)

Python

  • [experimental] Added proto3 presence support.
  • [experimental] fast import protobuf module, only works with cpp generated code linked in.
  • Truncate 'float' fields to 4 bytes of precision in setters for pure-Python
    implementation (C++ extension was already doing this).
  • Fixed a memory leak in C++ bindings.
  • Added a deprecation warning when code tries to create Descriptor objects
    directly.
  • Fix unintended comparison between bytes and string in descriptor.py.
  • Avoid printing excess digits for float fields in TextFormat.
  • Remove Python 2.5 syntax compatibility from the proto compiler generated _pb2.py module code.
  • Drop 3.3, 3.4 and use single version docker images for all python tests (#7396)

JavaScript

  • Fix js message pivot selection (#6813)

PHP

  • Persistent Descriptor Pool (#6899)
  • Implement lazy loading of php class for proto messages (#6911)
  • Correct @return in Any.unpack docblock (#7089)

Ruby

  • [experimental] Implemented proto3 presence for Ruby. (#7406)
  • Stop building binary gems for ruby <2.5 (#7453)
  • Fix for wrappers with a zero value (#7195)
  • Fix for JSON serialization of 0/empty-valued wrapper types (#7198)
  • Call "Class#new" over rb_class_new_instance in decoding (#7352)
  • Build extensions for Ruby 2.7 (#7027)
  • assigning 'nil' to submessage should clear the field. (#7397)

C#

  • [experimental] Add support for proto3 presence fields in C# (#7382)
  • Cleanup various bits of Google.Protobuf (#6674)
  • Fix conformance test failures for Google.Protobuf (#6910)
  • Fix latest ArgumentException for C# extensions (#6938)
  • Remove unnecessary branch from ReadTag (#7289)
  • Enforce recursion depth checking for unknown fields (#7132)

Objective-C

  • [experimental] ObjC Proto3 optional support (#7421)
  • Block subclassing of generated classes (#7124)
  • Use references to Obj C classes instead of names in descriptors. (#7026)
  • Revisit how the WKTs are bundled with ObjC. (#7173)

Other

  • Add a proto_lang_toolchain for javalite (#6882)
  • [bazel] Update gtest and deprecate //external:{gtest,gtest_main} (#7237)
  • Add application note for explicit presence tracking. (#7390)
  • Howto doc for implementing proto3 presence in a code generator. (#7407)

Protocol Buffers v3.11.4

14 Feb 20:19
d0bfd52
Compare
Choose a tag to compare

C#

  • Fix latest ArgumentException for C# extensions (#7188)
  • Enforce recursion depth checking for unknown fields (#7210)

Ruby

  • Fix wrappers with a zero value (#7195)
  • Fix JSON serialization of 0/empty-valued wrapper types (#7198)

Protocol Buffers v3.11.3

02 Feb 22:26
498de9f
Compare
Choose a tag to compare

C++

  • Add OUT and OPTIONAL to windows portability files (#7087)

PHP

  • Refactored ulong to zend_ulong for php7.4 compatibility (#7147)
  • Call register_class before getClass from desc to fix segfault (#7077)

Protocol Buffers v3.11.2

13 Dec 19:22
fe1790c
Compare
Choose a tag to compare

PHP

  • Make c extension portable for php 7.4 (#6968)

Protocol Buffers v3.11.1

03 Dec 01:52
7bb8b10
Compare
Choose a tag to compare

PHP

  • Extern declare protobuf_globals (#6946)

Protocol Buffers v3.11.0

26 Nov 01:27
ab5b61b
Compare
Choose a tag to compare

C++

  • Make serialization method naming consistent
  • Make proto runtime + generated code free of deprecation warnings
  • Moved ShutdownProtobufLibrary() to message_lite.h. For backward compatibility a declaration is still available in stubs/common.h, but users should prefer message_lite.h
  • Removed non-namespace macro EXPECT_OK()
  • Removed mathlimits.h from stubs in favor of using std::numeric_limits from C++11
  • Fixed bug in parser when ending on a group tag
  • Add a helper function to UnknownFieldSet to deal with the changing return value of message::unknown_fields()
  • Fix incorrect use of string_view iterators
  • Support direct pickling of nested messages
  • Skip extension tag validation for MessageSet if unknown dependencies are allowed
  • Updated deprecation macros to annotate deprecated code (#6612)
  • Remove conversion warning in MapEntryFuncs::ByteSizeLong (#6766)
  • Revert "Make shared libraries be able to link to MSVC static runtime libraries, so that VC runtime is not required." (#6914)

Java

  • Remove the usage of MethodHandle, so that Android users prior to API version 26 can use protobuf-java
  • Publish ProGuard config for javalite
  • Fix for StrictMode disk read violation in ExtensionRegistryLite
  • Include part of the ByteString's content in its toString().
  • Include unknown fields when merging proto3 messages in Java lite builders

Python

  • Add float_precision option in json format printer
  • Optionally print bytes fields as messages in unknown fields, if possible
  • FieldPath: fix testing IsSet on root path ''
  • Experimental code gen (fast import protobuf module) which only work with cpp generated code linked in

JavaScript

  • Remove guard for Symbol iterator for jspb.Map

PHP

  • Avoid too much overhead in layout_init (#6716)
  • Lazily Create Singular Wrapper Message (#6833)
  • Implement lazy loading of php class for proto messages (#6911)

Ruby

  • Ruby lazy wrappers optimization (#6797)

C#

Objective C

  • Fixed unaligned reads for 32bit arm with newer Xcode versions (#6678)

Protocol Buffers v3.11.0-rc2

22 Nov 23:51
b0386da
Compare
Choose a tag to compare
Pre-release

PHP

  • Implement lazy loading of php class for proto messages (#6911)
  • Fixes #6918

Protocol Buffers v3.11.0-rc1

20 Nov 18:57
52b632c
Compare
Choose a tag to compare
Pre-release

C++

  • Make serialization method naming consistent
  • Make proto runtime + generated code free of deprecation warnings
  • Moved ShutdownProtobufLibrary() to message_lite.h. For backward compatibility a declaration is still available in stubs/common.h, but users should prefer message_lite.h
  • Removed non-namespace macro EXPECT_OK()
  • Removed mathlimits.h from stubs in favor of using std::numeric_limits from C++11
  • Fixed bug in parser when ending on a group tag
  • Add a helper function to UnknownFieldSet to deal with the changing return value of message::unknown_fields()
  • Fix incorrect use of string_view iterators
  • Support direct pickling of nested messages
  • Skip extension tag validation for MessageSet if unknown dependencies are allowed
  • Updated deprecation macros to annotate deprecated code (#6612)
  • Remove conversion warning in MapEntryFuncs::ByteSizeLong (#6766)

Java

  • Remove the usage of MethodHandle, so that Android users prior to API version 26 can use protobuf-java
  • Publish ProGuard config for javalite
  • Fix for StrictMode disk read violation in ExtensionRegistryLite
  • Include part of the ByteString's content in its toString().
  • Include unknown fields when merging proto3 messages in Java lite builders

Python

  • Add float_precision option in json format printer
  • Optionally print bytes fields as messages in unknown fields, if possible
  • FieldPath: fix testing IsSet on root path ''
  • Experimental code gen (fast import protobuf module) which only work with cpp generated code linked in

JavaScript

  • Remove guard for Symbol iterator for jspb.Map

PHP

  • Avoid too much overhead in layout_init (#6716)
  • Lazily Create Singular Wrapper Message (#6833)

Ruby

  • Ruby lazy wrappers optimization (#6797)

C#

Objective C

  • Fixed unaligned reads for 32bit arm with newer Xcode versions (#6678)

Protocol Buffers v3.10.1

29 Oct 18:30
d09d649
Compare
Choose a tag to compare

C#

  • Add length checks to ExtensionCollection (#6759)
  • Disable extension code gen for C# (#6760)

Ruby

  • Fixed bug in Ruby DSL when no names are defined in a file (#6756)